2 Εκμάθηση με παραδείγματα 53. Σχόλια 55, Συμπεριλήψεις βιβλιοθηκών 56, Το κυρίως πρόγραμμα Ένα πρόγραμμα άθροισης δύο αριθμών...

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "2 Εκμάθηση με παραδείγματα 53. Σχόλια 55, Συμπεριλήψεις βιβλιοθηκών 56, Το κυρίως πρόγραμμα 57 2.2 Ένα πρόγραμμα άθροισης δύο αριθμών..."

Transcript

1

2

3 Περιεχόμενα 1 Εισαγωγή Μια σύντομη ιστορική αναδρομή των υπολογιστών Τι είναι η επιστήμη των υπολογιστών; Μια σύντομη περιήγηση στο υλικό των υπολογιστών Κεντρική μονάδα επεξεργασίας (CPU) 39, Μνήμη 39, Δευτερεύουσα αποθήκευση 39, Συσκευές εισόδου/εξόδου (I/O) Αλγόριθμοι Γλώσσες προγραμματισμού και μεταγλώττιση Λάθη προγραμματισμού και αποσφαλμάτωση Συντήρηση λογισμικού Η σημασία της τεχνολογίας λογισμικού Μερικές σκέψεις για τη γλώσσα προγραμματισμού C Σύνοψη...49 ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ...50 ΜΕΡΟΣ ΠΡΩΤΟ Βασικές έννοιες της γλώσσας προγραμματισμού C Εκμάθηση με παραδείγματα Το πρόγραμμα "Hello world" Σχόλια 55, Συμπεριλήψεις βιβλιοθηκών 56, Το κυρίως πρόγραμμα Ένα πρόγραμμα άθροισης δύο αριθμών Η φάση εισόδου 61, Η φάση υπολογισμού 63, Η φάση εξόδου Απόψεις σχετικές με τη διαδικασία του προγραμματισμού Τύποι δεδομένων Δεδομένα κινητής υποδιαστολής 67, Αλφαριθμητικά δεδομένα Παραστάσεις Σταθερές 71, Μεταβλητές 72, Εντολές ανάθεσης 75, Τελεστές και τελεστέοι 77, Συνδυασμός ακεραίων και αριθμών κινητής υποδιαστολής 78, Διαίρεση ακεραίων και ο τελεστής υπολοίπου 79, Προτεραιότητα 80, Εφαρμογή των κανόνων προτεραιότητας 82, Μετατροπή τύπων 83 Σύνοψη...86 ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ...87 ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

4 22 Περιεχόμενα 3 Επίλυση προβλημάτων Ιδιωματισμοί και υποδείγματα προγραμματισμού Ιδιωματισμοί σύντομης ανάθεσης 95, Τελεστές αύξησης και μείωσης Επίλυση προβλημάτων σε μεγαλύτερη κλίμακα Εντολές ελέγχου Ο ιδιωματισμός επανάληψης Ν φορές 100, Επανάληψη και βρόχοι 101, Μεταβλητές αριθμοδείκτη 102, Η σπουδαιότητα της ανάθεσης αρχικών τιμών 104, Ο ιδιωματισμός ανάγνωσης έως φρουρό 105, Δόμηση μιας πρακτικότερης εφαρμογής 107, Εκτέλεση υπό συνθήκη και η εντολή if Μια άσκηση αποσφαλμάτωσης Μορφοποιημένη έξοδος Κωδικοί μορφοποίησης για τη συνάρτηση printf 119, Ρύθμιση διαστημάτων, στοίχισης, και ακρίβειας Δόμηση ενός προγράμματος Στυλ προγραμματισμού 124, Πρόβλεψη για αλλαγές 126, Ο μηχανισμός #define 127 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Μορφές εντολών Απλές εντολές Ενσωματωμένες αναθέσεις τιμών 140, Πολλαπλές αναθέσεις 140, Μπλοκ κώδικα Εντολές ελέγχου Λογικά δεδομένα Σχεσιακοί τελεστές 144, Λογικοί τελεστές 146, Πρόωρη αποτίμηση 148, Σημαίες 149, Αποφυγή πλεονασμού στις λογικές παραστάσεις 150, Ένα παράδειγμα υπολογισμού λογικής τιμής Οι εντολές if Εντολές if μίας γραμμής 154, Εντολές if πολλών γραμμών 154, Η εντολή ifelse 155, Εντολές if σε μορφή στοίβας 155, Ο τελεστής?: (προαιρετικό) Η εντολή switch Η εντολή while Χρήση του βρόχου while 162, Ατέρμονες βρόχοι 164, Επίλυση του προβλήματος του "μισού βρόχου" Η εντολή for Ένθετοι βρόχοι for 169, Η σχέση μεταξύ των εντολών for και while 171, Χρήση της εντολής for με δεδομένα κινητής υποδιαστολής 172 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ...176

5 Περιεχόμενα 23 5 Συναρτήσεις Χρήση συναρτήσεων βιβλιοθήκης Δήλωση συναρτήσεων Συγγραφή δικών σας συναρτήσεων H εντολή return 187, Συνδυασμός συναρτήσεων με κύρια προγράμματα 188, Συναρτήσεις με εσωτερικές δομές ελέγχου 190, Συναρτήσεις που επιστρέφουν μη αριθμητικές τιμές 192, Κατηγορηματικές συναρτήσεις 193, Μια κατηγορηματική συνάρτηση που ελέγχει δύο αλφαριθμητικά για ισότητα Ο μηχανισμός της διεργασίας κλήσης συναρτήσεων Μεταβίβαση παραμέτρων 198, Κλήση συναρτήσεων μέσα από άλλες συναρτήσεις Διαδικασίες Βελτίωση βήμα προς βήμα (βηματική εκλέπτυνση) Ξεκίνημα από "επάνω" 212, Υλοποίηση της PrintCalendar 213, Υλοποίηση της PrintCalendarMonth 214, Συμπλήρωση των τελευταίων κενών 218 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αλγόριθμοι Έλεγχος για το αν ένας αριθμός είναι πρώτος Μια απλή εκδοχή της συνάρτησης ΙsPrime 233, Επαλήθευση του ότι μια στρατηγική αναπαριστά έναν αλγόριθμο 233, Απόδειξη της ορθότητας του αλγορίθμου ΙsPrime 234, Βελτίωση της αποδοτικότητας ενός αλγορίθμου 236, Επιλογή μεταξύ εναλλακτικών υλοποιήσεων Υπολογισμός του μέγιστου κοινού διαιρέτη "Πρωτόγονοι" αλγόριθμοι 241, Ο αλγόριθμος του Ευκλείδη 242, Υπεράσπιση της ορθότητας του αλγορίθμου του Ευκλείδη (προαιρετικό) 243, Σύγκριση της αποδοτικότητας των αλγορίθμων GCD Αριθμητικοί αλγόριθμοι Διαδοχικές προσεγγίσεις 245, Αναφορά σφαλμάτων Ανάπτυγμα σειράς Το παράδοξο του Ζήνωνα 249, Χρήση του αναπτύγματος σειράς στη συνάρτηση της τετραγωνικής ρίζας 252, Ανάπτυγμα της σειράς Taylor για την προσέγγιση τετραγωνικής ρίζας (προαιρετικό) 252, Υλοποίηση της προσέγγισης με σειρά Taylor 254, Περιοχή σύγκλισης Καθορισμός του μεγέθους των αριθμητικών τύπων Τύποι ακεραίων 260, Μη προσημασμένοι τύποι 261, Τύποι κινητής υποδιαστολής 261 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ...264

6 24 Περιεχόμενα ΜΕΡΟΣ ΔΕΥΤΕΡΟ Βιβλιοθήκες και ανάπτυξη σε λειτουργικές μονάδες Βιβλιοθήκες και διασυνδέσεις: Μια απλή βιβλιοθήκη γραφικών Η έννοια μιας διασύνδεσης Διασυνδέσεις και αρχεία κεφαλίδας Μια εισαγωγή στη βιβλιοθήκη γραφικών To μοντέλο στο οποίο βασίζεται η διασύνδεση graphics.h 276, Οι συναρτήσεις της διασύνδεσης graphics.h 278, Ανάθεση αρχικών τιμών του πακέτου 282, Σχεδίαση ευθειών 282, Σχεδίαση κύκλων και τόξων 284, Λήψη πληροφοριών για το παράθυρο γραφικών Δημιουργία δικών σας εργαλείων Ορισμός της διαδικασίας DrawBox 287, Ορισμός της συνάρτησης DrawCenteredCircle 290, Εναλλαγή μεταξύ απόλυτων και σχετικών συντεταγμένων 290, Τα πλεονεκτήματα του ορισμού διαδικασιών Επίλυση ενός μεγαλύτερου προβλήματος Χρήση βηματικής εκλέπτυνσης 293, Υλοποίηση της διαδικασίας DrawHouse 295, Αναζήτηση κοινών προτύπων 295, Ολοκλήρωση της αποσύνθεσης 297 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σχεδίαση διασυνδέσεων: Μια βιβλιοθήκη τυχαίων αριθμών Σχεδίαση διασύνδεσης Η σημασία ενός ενοποιητικού θέματος 313, Απλότητα και η αρχή της απόκρυψης πληροφοριών 314, Ικανοποίηση των αναγκών των πελατών σας 315, Τα πλεονεκτήματα των γενικών εργαλείων 316, Η αξία της σταθερότητας Παραγωγή τυχαίων αριθμών με υπολογιστή Ντετερμινιστική και μη ντετερμινιστική συμπεριφορά 318, Τυχαίοι και ψευδοτυχαίοι αριθμοί 318, Παραγωγή ψευδοτυχαίων αριθμών στην ANSI C 319, Αλλαγή του διαστήματος τιμών των τυχαίων αριθμών 321, Γενίκευση του προβλήματος Αποθήκευση εργαλείων σε βιβλιοθήκες Τα περιεχόμενα μιας διασύνδεσης 329, Συγγραφή της διασύνδεσης random.h 331, Η υλοποίηση random.c 331, Δόμηση ενός προγράμματοςπελάτη 333, Ανάθεση αρχικής τιμής στη γεννήτρια τυχαίων αριθμών Αποτίμηση της σχεδίασης της διασύνδεσης random.h Δημιουργία τυχαίων πραγματικών αριθμών 340, Προσομοίωση ενός πιθανοτικού ενδεχομένου 340, Συμπερίληψη αρχείων κεφαλίδας σε μια διασύνδεση 341, Ολοκλήρωση της υλοποίησης του πακέτου παραγωγής τυχαίων αριθμών Χρήση του πακέτου παραγωγής τυχαίων αριθμών Σύνοψη...346

7 Περιεχόμενα 25 ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αλφαριθμητικά και χαρακτήρες Η αρχή της απαρίθμησης Αναπαράσταση απαριθμητών τύπων στο εσωτερικό του μηχανήματος 362, Αναπαράσταση απαριθμητών τύπων ως ακεραίων 362, Ορισμός νέων απαριθμητών τύπων 363, Πράξεις με απαριθμητούς τύπους 366, Βαθμωτοί τύποι Χαρακτήρες Ο τύπος δεδομένων char 367, Ο κώδικας ASCII 368, Σταθερές χαρακτήρων 370, Σημαντικές ιδιότητες της κωδικοποίησης ASCII 370, Ειδικοί χαρακτήρες 371, Αριθμητική χαρακτήρων 373, Η διασύνδεση ctype.h 374, Εντολές ελέγχου που περιλαμβάνουν χαρακτήρες 376, Είσοδος και έξοδος χαρακτήρων Τα αλφαριθμητικά ως αφηρημένα δεδομένα Στρωματοποιημένες αφαιρέσεις 378, Η έννοια ενός αφηρημένου τύπου Η διασύνδεση strlib.h Προσδιορισμός του μήκους ενός αλφαριθμητικού 381, Επιλογή χαρακτήρων από ένα αλφαριθμητικό 382, Συνένωση αλφαριθμητικών 383, Μετατροπή χαρακτήρων σε αλφαριθμητικά 384, Εξαγωγή τμημάτων ενός αλφαριθμητικού 385, Σύγκριση ενός αλφαριθμητικού με ένα άλλο 386, Αναζήτηση στο εσωτερικό ενός αλφαριθμητικού 388, Μετατροπή πεζών/κεφαλαίων 391, Αριθμητική μετατροπή 392, Αποδοτικότητα της βιβλιοθήκης strlib.h 393 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αρθρωτή ανάπτυξη προγραμμάτων Pig Latin μια περίπτωση αρθρωτής ανάπτυξης προγράμματος Εφαρμογή αναλυτικής σχεδίασης (σχεδίασης "από επάνω προς τα κάτω") 407, Χρήση ψευδοκώδικα 408, Υλοποίηση της συνάρτησης TranslateLine 409, Αναζήτηση κενών διαστημάτων και σημείων στίξης 410, Εκλέπτυνση του ορισμού της λέξης 412, Σχεδίαση του σαρωτή γλωσσικών σημείων 413, Ολοκλήρωση της υλοποίησης της συνάρτησης TranslateLine 415, Καθορισμός της διασύνδεσης της λειτουργικής μονάδας σάρωσης Διατήρηση της εσωτερικής κατάστασης μέσα σε μια λειτουργική μονάδα 418 Καθολικές μεταβλητές 421, Οι κίνδυνοι από τη χρήση καθολικών μεταβλητών 422, Μεταβλητές που είναι ιδιωτικές για μια λειτουργική μονάδα 423, Ανάθεση αρχικών τιμών σε καθολικές μεταβλητές 423, Ιδιωτικές συναρτήσεις Υλοποίηση της αφαίρεσης σαρωτή Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ...435

8 26 Περιεχόμενα ΜΕΡΟΣ ΤΡΙΤΟ Σύνθετοι τύποι δεδομένων Πίνακες Εισαγωγή στους πίνακες Δήλωση πίνακα 445, Επιλογή στοιχείων πίνακα 447, Παράδειγμα απλού πίνακα 448, Αλλαγή του διαστήματος τιμών των αριθμοδεικτών Εσωτερική αναπαράσταση δεδομένων Μπιτ, μπάιτ, και λέξεις 451, Διευθύνσεις μνήμης 452, Ο τελεστής sizeof 454, Κατανομή μνήμης σε μεταβλητές 455, Αναφορές σε στοιχεία έξω από τα όρια ενός πίνακα Μεταβίβαση πινάκων ως παραμέτρων Γενίκευση του πλήθους των στοιχείων 460, Ο μηχανισμός μεταβίβασης πίνακα ως παραμέτρου 462, Υλοποίηση των συναρτήσεων PrintIntegerArray και GetIntegerArray 465, Υλοποίηση της συνάρτησης ReverseIntegerArray 467, Υλοποίηση της συνάρτησης SwapIntegerElements Χρήση πινάκων για διάταξη δεδομένων Στατική ανάθεση αρχικών τιμών σε πίνακες Αυτόματος προσδιορισμός του μεγέθους ενός πίνακα 480, Προσδιορισμός του μεγέθους ενός πίνακα στον οποίο έχουν ανατεθεί αρχικές τιμές 481, Πίνακες στους οποίους έχουν ανατεθεί αρχικές τιμές και βαθμωτοί τύποι Πολυδιάστατοι πίνακες Μεταβίβαση πολυδιάστατων πινάκων σε συναρτήσεις 484, Ανάθεση αρχικών τιμών σε πολυδιάστατους πίνακες 485 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναζήτηση και ταξινόμηση Αναζήτηση Αναζήτηση σε πίνακα ακεραίων 501, Ένα πιο εξεζητημένο παράδειγμα αναζήτησης 503, Γραμμική αναζήτηση 505, Δυαδική αναζήτηση 507, Σχετική αποδοτικότητα των αλγορίθμων αναζήτησης Ταξινόμηση Ταξινόμηση πίνακα ακεραίων 512, Ο αλγόριθμος ταξινόμησης με επιλογή 513, Αξιολόγηση της αποδοτικότητας του αλγορίθμου ταξινόμησης με επιλογή 516, Μέτρηση του χρόνου εκτέλεσης ενός προγράμματος 519, Ανάλυση του αλγορίθμου ταξινόμησης με επιλογή 520 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ...522

9 Περιεχόμενα Δείκτες Χρήση διευθύνσεων ως τιμών δεδομένων Χειρισμός δεικτών στη C Δήλωση μεταβλητών δεικτών στη C 534, Βασικές πράξεις δεικτών 535, Ο ειδικός δείκτης NULL Μεταβίβαση παραμέτρων κατ' αναφορά Σχεδίαση μιας συνάρτησης SwapInteger 542, Χρήση κλήσης κατ' αναφορά για την επιστροφή πολλών αποτελεσμάτων 543, Ο κίνδυνος της κατάχρησης των κλήσεων κατ' αναφορά Δείκτες και πίνακες Αριθμητική δεικτών 547, Νέες δυνατότητες των τελεστών ++ και , Αύξηση και μείωση δεικτών 554, Σχέση μεταξύ δεικτών και πινάκων Δυναμική κατανομή μνήμης Ο τύπος void * 558, Δυναμικοί πίνακες 559, Εντοπισμός λαθών στη συνάρτηση malloc 560, Αποδέσμευση μνήμης 561 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αλφαριθμητικά και πάλι Εννοιολογικές αναπαραστάσεις του τύπου string Τα αλφαριθμητικά ως πίνακες 572, Τα αλφαριθμητικά ως δείκτες 576, Τα αλφαριθμητικά ως αφηρημένος τύπος 577, Αλφαριθμητικές παράμετροι 577, Αλφαριθμητικές μεταβλητές 578, Διαφορές μεταξύ δεικτών και μεταβλητών πίνακα 580, Επιλογή στρατηγικής για την αναπαράσταση των αλφαριθμητικών Η βιβλιοθήκη αλφαριθμητικών ANSI H συνάρτηση strcpy 585, H συνάρτηση strncpy 589, Οι συναρτήσεις strcat και strncat 590, Οι συναρτήσεις strlen, strcmp, και strncmp 591, Οι συναρτήσεις strchr, strrchr, και strstr 592, Μια εφαρμογή των συναρτήσεων αλφαριθμητικών ANSI Υλοποίηση της βιβλιοθήκης strlib Υλοποίηση των μεταφερόμενων συναρτήσεων 596, Υλοποίηση των συναρτήσεων κατανομής μνήμης της strlib 597 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αρχεία Αρχεία κειμένου Χρήση αρχείων στη C Δήλωση μιας μεταβλητής FILE * 608, Άνοιγμα αρχείου 609, Εκτέλεση λειτουργιών εισόδου/εξόδου 610, Κλείσιμο αρχείων 610, Καθιερωμένα αρχεία 611

10 28 Περιεχόμενα 15.3 Είσοδος και έξοδος χαρακτήρων Ενημέρωση αρχείου 614, Επανάληψη ανάγνωσης χαρακτήρων του αρχείου εισόδου Είσοδος και έξοδος γραμμών κειμένου Μορφοποιημένη είσοδος και έξοδος Οι τρεις μορφές της συνάρτησης printf 623, Οι συναρτήσεις scanf 623, Ανάγνωση αλφαριθμητικών με τη συνάρτηση scanf 625, Ένα παράδειγμα μορφοποιημένων δεδομένων εισόδου/εξόδου 628, Περιορισμοί στη χρήση της συνάρτησης scanf 631 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εγγραφές Η έννοια της εγγραφής δεδομένων Χρήση εγγραφών στη C Ορισμός νέου τύπου δομής 646, Δήλωση μεταβλητών δομών 647, Επιλογή εγγραφών 648, Ανάθεση αρχικών τιμών σε εγγραφές 648, Απλές εγγραφές Συνδυασμός εγγραφών και πινάκων Δείκτες προς εγγραφές Ορισμός ενός τύπου "δείκτη προς εγγραφή" 653, Κατανομή χώρου μνήμης για δεδομένα εγγραφών 655, Χειρισμός δεικτών προς εγγραφές Δημιουργία μιας βάσης δεδομένων με εγγραφές Δημιουργία της βάσης δεδομένων των υπαλλήλων 658, Χρήση της βάσης δεδομένων Σχεδίαση μιας εφαρμογής που βασίζεται σε εγγραφές Η σημασία της χρήσης μιας βάσης δεδομένων 662, Διατύπωση του προβλήματος 663, Σχεδίαση της εσωτερικής αναπαράστασης 664, Σχεδιασμός της εξωτερικής δομής 668, Κωδικοποίηση του προγράμματος 670, Η αξία της καθοδηγούμενης από δεδομένα σχεδίασης 677 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Με το βλέμμα στο μέλλον Αναδρομή Ένα απλό παράδειγμα αναδρομής 693, Η συνάρτηση Factorial 694, Το αναδρομικό άλμα της πίστης 700, Το αναδρομικό υπόδειγμα 701, Παραγωγή μεταθέσεων 702, Αναδρομική σκέψη Αφηρημένοι τύποι δεδομένων Η αφαίρεση ουράς 707, Αναπαράσταση τύπων στην αφαίρεση ουράς 708, Η διασύνδεση queue.h 710, Υλοποίηση της αφαίρεσης ουράς 712, Εναλλακτικές υλοποιήσεις της αφαίρεσης ουράς 717

11 Περιεχόμενα Ανάλυση αλγορίθμων Αξιολόγηση της αποδοτικότητας αλγορίθμων 721, Συμβολισμός του μεγάλου όμικρον 722, Επανεξέταση του αλγορίθμου ταξινόμησης με επιλογή 723, Στρατηγικές τύπου "διαίρει και βασίλευε" 725, Συγχώνευση δύο πινάκων 726, Ο αλγόριθμος ταξινόμησης με συγχώνευση 727, Η υπολογιστική πολυπλοκότητα του αλγορίθμου ταξινόμησης με συγχώνευση 729, Σύγκριση των επιδόσεων Ν 2 και N log N 731 Σύνοψη ΕΡΩΤΗΣΕΙΣ ΑΝΑΣΚΟΠΗΣΗΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΠΑΡΑΡΤΗΜΑ Α. Σύνοψη της σύνταξης και της δομής της C 741 Α.1 Ανασκόπηση της διεργασίας μεταγλώττισης Α.2 Ο προεπεξεργαστής της C Α.3 Η λεξικογραφική δομή των προγραμμάτων C Α.4 Παραστάσεις Α.5 Εντολές Α.6 Συναρτήσεις Α.7 Δηλώσεις Α.8 Τύποι δεδομένων Α.9 Βιβλιοθήκες ANSI ΠΑΡΑΡΤΗΜΑ Β. Βιβλιοθήκες 767 Ευρετήριο 793

12 292 ΚΕΦΑΛΑΙΟ 7: Βιβλιοθήκες και διασυνδέσεις: Μια απλή βιβλιοθήκη γραφικών box.c. Μπορείτε να καλέσετε την DrawBox πολλές φορές, ή ακόμα και να την τοποθετήσετε μέσα σε ένα βρόχο for ο οποίος θα σχεδιάζει ένα τετράγωνο σε κάθε κύκλο. 7.4 Επίλυση ενός μεγαλύτερου προβλήματος Για να διευρύνετε την κατανόησή σας σε ό,τι αφορά τις συναρτήσεις της βιβλιοθήκης γραφικών, θα πρέπει να επικεντρώσετε την προσοχή σας σε ένα μεγαλύτερο πρόβλημα. Υποθέστε ότι έχετε αποφασίσει να σχεδιάσετε μια εικόνα του ιδανικού σας σπιτιού με τόσες λεπτομέρειες όσες θα βλέπατε σε μια παιδική ζωγραφιά. Ένα τέτοιο σπίτι φαίνεται στο ακόλουθο διάγραμμα: Παρόλο που η εικόνα έχει πολλά ανεξάρτητα τμήματα, αποτελείται από δύο μόνο θεμελιώδη στοιχεία γραφικών: (1) την ευθεία γραμμή που χρησιμοποιείται στο πλαίσιο του σπιτιού, στην πόρτα, και στα τζάμια των παραθύρων και (2) τον κύκλο που χρησιμοποιείται μόνο για το πόμολο της πόρτας. Αν συνδυάσετε αυτές τις γραμμές και τον κύκλο στα κατάλληλα μεγέθη και τις κατάλληλες θέσεις, μπορείτε να δημιουργήσετε τη συνολική εικόνα. Επιπλέον, σχεδόν όλες οι ευθείες γραμμές είναι διατεταγμένες με τέτοιον τρόπο ώστε να σχηματίζουν ορθογώνια, και έτσι μπορείτε να εκμεταλλευτείτε πλήρως το νέο σύνολο εργαλείων σας. Πριν αρχίσετε να γράφετε το πρόγραμμα, όμως, προσέξτε ότι αυτό το συγκεκριμένο σπίτι έχει πολλές ιδιότητες που καθορίζουν το σχήμα του. Για παράδειγμα, το σπίτι έχει πλάτος 3.0 ίντσες. Η απόσταση από το έδαφος μέχρι τη σοφίτα είναι 2.0 ίντσες, με άλλες 0.7 ίντσες μέχρι την κορυφή της στέγης. Η πόρτα είναι ένα ορθογώνιο με διαστάσεις 0.4 επί 0.7 ίντσες, και κάθε τζάμι παραθύρου είναι επίσης ένα ορθογώνιο με διαστάσεις 0.2 επί 0.25 ίντσες. Αντί να γεμίσετε το πρόγραμμά σας με όλους αυτούς τους αριθμούς, είναι προτιμότερο να δώσετε σε αυτές τις τιμές ονόματα, τα οποία θα μπορείτε στη συνέχεια να χρησιμοποιήσετε στο πρό-

13 7.4 Επίλυση ενός μεγαλύτερου προβλήματος 293 γραμμα. Το διάγραμμα του σπιτιού που παρουσιάζεται στην παραπάνω εικόνα βασίζεται στις ακόλουθες σταθερές: #define HouseHeight 2.0 #define HouseWidth 3.0 #define AtticHeight 0.7 #define DoorWidth 0.4 #define DoorHeight 0.7 #define DoorknobRadius 0.03 #define DoorknobInset 0.07 #define PaneHeight 0.25 #define PaneWidth 0.2 #define FirstFloorWindows 0.3 #define SecondFloorWindows 1.25 Οι τιμές είναι πραγματικοί αριθμοί που αναπαριστούν ίντσες, και τα ονόματά τους περιγράφουν τη φυσική τους σημασία στα πλαίσια της εικόνας. Στο πρόγραμμα, το γεγονός ότι αυτές οι τιμές αναπαριστώνται με τη χρήση συμβολικών ονομάτων κάνει εύκολη την αλλαγή των διαστάσεων αν, για παράδειγμα, θέλατε το σπίτι να ήταν λίγο πλατύτερο ή να είχε μεγαλύτερα παράθυρα. Χρήση βηματικής εκλέπτυνσης Είστε πλέον έτοιμοι να ξεκινήσετε την υλοποίηση. Όπως εξηγήθηκε στο Κεφάλαιο 5, ο καλύτερος τρόπος για να προσεγγίσετε ένα μεγάλο προγραμματιστικό πρόβλημα είναι να χρησιμοποιήσετε τη στρατηγική της βηματικής εκλέπτυνσης προκειμένου να διαμερίσετε το πλήρες πρόβλημα σε ένα σύνολο απλούστερων προβλημάτων. Για να εφαρμόσετε αυτή τη στρατηγική στο πρόβλημα της σχεδίασης του σπιτιού, πρέπει να ξεκινήσετε από το γενικότερο επίπεδο λεπτομέρειας: θέλετε να σχεδιάσετε ένα σπίτι. Θα πρέπει να δώσετε σε αυτή τη λειτουργία ένα όνομα (για παράδειγμα, DrawHouse) και να την ορίσετε ως διαδικασία. Η υλοποίηση της διαδικασίας DrawHouse θα γίνει έτσι το πρώτο σας υπο-πρόβλημα. Για να ολοκληρώσετε την υλοποίηση, πρέπει στη συνέχεια να χωρίσετε το συνολικό πρόβλημα σε μικρότερα κομμάτια: σχεδίαση του περιγράμματος, της πόρτας, και των παραθύρων. Κάθε μια από αυτές τις λειτουργίες θα γίνει με τη σειρά της ένα υπο-πρόβλημα στο επόμενο επίπεδο λεπτομέρειας. Θα πρέπει να συνεχίσετε αυτή τη στρατηγική μέχρι τη στιγμή που όλα τα υποπροβλήματα θα έχουν αναχθεί σε απλές λειτουργίες οι οποίες θα μπορούν να υλοποιηθούν με τα εργαλεία που έχετε στη διάθεσή σας. Ωστόσο, όπως και στην περίπτωση της διαδικασίας DrawBox, θα πρέπει να προσδιορίσετε αν η διαδικασία DrawHouse απαιτεί κάποια ορίσματα. Οι διαστάσεις του σπιτιού ορίστηκαν ως σταθερές στην προηγούμενη ενότητα. Επειδή θα πρέπει επίσης να καθορίσετε πού θέλετε να τοποθετηθεί το σπίτι, φαίνεται λογικό για τη διαδικασία DrawHouse να δέχεται ως ορίσματα μια τετμημένη x και μια τεταγμένη y, που να καθορίζουν τη θέση στην οποία θέλετε να σχεδιαστεί το σπίτι μέσα στο παράθυρο γραφικών. Για λόγους συνέπειας με την DrawBox, είναι λογικό αυτές οι τιμές να καθορίζουν τις συντεταγμένες της κάτω αριστερής γωνίας του σπιτιού. Συνεπώς, το πρωτότυπο της διαδικασίας DrawHouse θα πρέπει να είναι το εξής:

14 294 ΚΕΦΑΛΑΙΟ 7: Βιβλιοθήκες και διασυνδέσεις: Μια απλή βιβλιοθήκη γραφικών void DrawHouse(double x, double y); Η κλήση αυτής της διαδικασίας δίνει εντολή στον υπολογιστή να σχεδιάσει ένα σπίτι του οποίου η κάτω αριστερή γωνία είναι το σημείο (x, y). Έχοντας ορίσει το πρωτότυπο, μπορείτε πλέον να επιστρέψετε και να ολοκληρώσετε το κυρίως πρόγραμμα. Το μόνο που χρειάζεται να κάνετε στην πραγματικότητα είναι να προσδιορίσετε το σημείο της οθόνης όπου πρέπει να εμφανιστεί η εικόνα του σπιτιού. Για παράδειγμα, υποθέστε ότι θέλετε το σπίτι να είναι κεντραρισμένο στο παράθυρο γραφικών. Όπως αναφέρθηκε στην ενότητα "Λήψη πληροφοριών για το παράθυρο γραφικών", νωρίτερα σε αυτό το κεφάλαιο, μπορείτε να χρησιμοποιήσετε τις συναρτήσεις GetWindowWidth και Get- WindowHeight για να βρείτε τις συντεταγμένες του κέντρου του παραθύρου. Για παράδειγμα, αν δηλώσετε τις μεταβλητές cx και cy, μπορείτε να τους αναθέσετε τις συντεταγμένες του κέντρου του παραθύρου με τις εντολές cx = GetWindowWidth() / 2; cy = GetWindowHeight() / 2; Έτσι όπως ορίσατε, όμως, την DrawHouse, το ίδιο το διάγραμμα σχεδιάζεται με βάση την κάτω αριστερή του γωνία και όχι το κέντρο του. Πώς μπορείτε να συσχετίσετε αυτές τις δύο θέσεις; Γνωρίζετε ότι το σπίτι έχει πλάτος HouseWidth ίντσες. Συνεπώς, η αριστερή πλευρά του σπιτιού πρέπει να βρίσκεται στο μισό αυτής της απόστασης από το κέντρο. Έτσι, αν τοποθετήσετε την αριστερή πλευρά του σπιτιού στην τετμημένη cx HouseWidth / 2 το κέντρο του σπιτιού θα συμπέσει με το κέντρο της οθόνης. Μπορείτε να επαναλάβετε την ίδια τεχνική και για την τεταγμένη y. Η μόνη διαφορά είναι ότι το συνολικό ύψος του σπιτιού είναι το άθροισμα των υψών της ορθογώνιας δομής και της σκεπής. Κατά συνέπεια, η κάτω αριστερή γωνία του σπιτιού πρέπει να έχει την τεταγμένη cy (HouseHeight + AtticHeight) / 2 Τώρα που έχετε τις συντεταγμένες της κάτω αριστερής γωνίας του σπιτιού, μπορείτε να ολοκληρώσετε την υλοποίηση της συνάρτησης main ως εξής: main() double cx, cy; InitGraphics(); cx = GetWindowWidth() / 2; cy = GetWindowHeight() / 2; DrawHouse(cx HouseWidth / 2, cy (HouseHeight + AtticHeight) / 2); Με αυτόν τον ορισμό ολοκληρώνεται το υψηλότερο επίπεδο της αποσύνθεσης του προβλήματος.

15 7.4 Επίλυση ενός μεγαλύτερου προβλήματος 295 Υλοποίηση της διαδικασίας DrawHouse Σε αυτό το σημείο, θα πρέπει να στρέψετε την προσοχή σας στην υλοποίηση της DrawHouse. Εξοικειωμένοι πλέον με την τεχνική της βηματικής εκλέπτυνσης, θα πρέπει να έχετε ήδη μια ιδέα των θεμελιωδών λειτουργιών. Ο "σκελετός" της διαδικασίας DrawHouse θα πρέπει να έχει αυτή τη μορφή: void DrawHouse(double x, double y) DrawOutline(...); DrawDoor(...); DrawWindows(...); Αυτό που απομένει να κάνετε είναι απλώς να συμπληρώσετε τα ορίσματα. Επειδή οι διαδικασίες DrawOutline, DrawDoor, και DrawWindows δεν έχουν πρόσβαση στις τιμές των τοπικών μεταβλητών x και y της DrawHouse, θα πρέπει να μεταβιβάσετε τις πληροφορίες των συντεταγμένων σε κάθε μια από αυτές. Η ακριβής επιλογή, όμως, των τιμών που θα πρέπει να τους μεταβιβάσετε απαιτεί κάποια σκέψη. Το περίγραμμα του σπιτιού ξεκινά στην ίδια γωνία με το σπίτι, οπότε οι τιμές x και y είναι προφανώς οι ίδιες. Σε ό,τι αφορά την πόρτα, μπορείτε να υπολογίσετε τις συντεταγμένες της και στη συνέχεια να τις μεταβιβάσετε στην DrawDoor. Επειδή υπάρχουν διάφορα παράθυρα που σχεδιάζονται σε σχέση με το πλαίσιο του σπιτιού, η συνάρτηση DrawWindows θα πρέπει λογικά να δέχεται ως ορίσματα τις συντεταγμένες του σπιτιού, παρόλο που στην υλοποίησή της θα πρέπει να υπολογιστούν πιο συγκεκριμένες συντεταγμένες για καθένα από τα παράθυρα. Αν υλοποιήσετε την DrawHouse όπως προτείνεται, θα καταλήξει σε μια μορφή παρόμοια με την ακόλουθη: void DrawHouse(double x, double y) DrawOutline(x, y); DrawDoor(x + (HouseWidth DoorWidth) / 2, y); DrawWindows(x, y); Αναζήτηση κοινών προτύπων Όταν προσεγγίζετε μεγάλα προβλήματα, η βηματική εκλέπτυνση είναι μία από τις πολλές στρατηγικές που μπορείτε να χρησιμοποιήσετε προς όφελός σας. Μια άλλη εξαιρετικά χρήσιμη στρατηγική είναι να προσπαθήσετε να εντοπίσετε κοινά στοιχεία μεταξύ των διαφορετικών τμημάτων ενός μεγάλου προβλήματος, έτσι ώστε να μπορείτε να εφαρμόσετε μια μοναδική τεχνική επίλυσης σε όλα. Ουσιαστικά, αυτή η προσέγγιση συνίσταται στον καθορισμό των εργαλείων που είναι καλύτερα για τη συγκεκριμένη δουλειά. Για παράδειγμα, αν μπορούσατε να επιλύσετε με ευκολία διάφορα τμήματα ενός προβλήματος χρησιμοποιώντας μια διαδικασία που να εκτελεί μια συγκεκριμένη λειτουργία, κατά πάσα πιθανότητα θα άξιζε τον κόπο να δημιουργήσετε αυτή τη διαδικασία. Αν σκεφτείτε το πρόβλημα της σχεδίασης του σπιτιού από αυτή την προοπτική, υπάρχουν διάφορα εργαλεία που θα χρειαζόσασταν, ορισμένα από τα οποία έχετε γράψει ήδη. Για παράδειγμα, αφού το περίγραμμα του σπιτιού είναι ορθογώνιο, όπως και το πλαίσιο της πόρτας και τα παράθυρα, θα μπορούσε να αποδειχθεί πολύ βολικό το εργαλείο DrawBox. Το πόμολο

16 296 ΚΕΦΑΛΑΙΟ 7: Βιβλιοθήκες και διασυνδέσεις: Μια απλή βιβλιοθήκη γραφικών είναι ένας κύκλος, γεγονός που κάνει λογική τη χρήση της DrawCenteredCircle. Θα πρέπει, όμως, να σκεφτείτε και άλλα εργαλεία που θα μπορούσαν να σας βοηθήσουν. Η σκεπή του σπιτιού είναι τριγωνική. Παρόλο που υπάρχει μόνο ένα τρίγωνο στην εικόνα, ίσως να άξιζε τον κόπο να γράψετε μια διαδικασία DrawTriangle, ιδιαίτερα γιατί έτσι θα την είχατε διαθέσιμη και για άλλα προγράμματα. Ακόμα σημαντικότερο, όμως, είναι να προσέξετε την κανονική δομή των παραθύρων και να εξετάσετε την πιθανότητα συγγραφής μιας γενικότερης διαδικασίας που να επιτρέπει τη σχεδίαση καθενός από τα διαφορετικά σετ παραθύρων. Στην προσπάθειά σας να σχεδιάσετε ένα εργαλείο κατάλληλο για τα παράθυρα, καλό θα ήταν να γενικεύσετε το πρόβλημα όσο περισσότερο μπορείτε. Όσο γενικότερα είναι τα εργαλεία σας, τόσο ευκολότερο θα είναι να τα εφαρμόσετε σε μια μεγάλη ποικιλία περιστάσεων. Ένα τρόπος για να εξασφαλίσετε ότι τα εργαλεία που δημιουργείτε θα είναι ευρέως εφαρμόσιμα είναι να "απομακρυνθείτε" λίγο από τα ειδικά χαρακτηριστικά του τρέχοντος προβλήματος και να προσπαθήσετε να φανταστείτε τις απαραίτητες λειτουργίες σε ένα υψηλότερο, πιο αφαιρετικό επίπεδο. Στα πλαίσια του σπιτιού, η εικόνα παριστάνει ένα παράθυρο με φατνώματα (τζαμάκια). Αν επικεντρώσετε, όμως, την προσοχή σας στην ίδια την εικόνα, θα διαπιστώσετε ότι αυτό που βλέπετε δεν είναι παρά ένα ορθογώνιο πλέγμα αποτελούμενο από δύο σειρές πλαισίων, κάθε μια από τις οποίες περιέχει τρία πλαίσια. Αν είχατε μια διαδικασία DrawGrid που να σχεδιάζει ένα ορθογώνιο πλέγμα, θα μπορούσατε να χρησιμοποιήσετε αυτή τη διαδικασία για να σχεδιάσετε κάθε σετ παραθύρου. Τι ορίσματα απαιτεί η DrawGrid; Για να επιτύχετε την απαιτούμενη γενικότητα, πρέπει να εξασφαλίσετε ότι η διαδικασία DrawGrid δεν θα αναφέρεται στο συγκεκριμένο πλαίσιο του σπιτιού. Επειδή η χρήση των σταθερών PaneWidth και PaneHeight θα εξειδίκευε τη διαδικασία για τη συγκεκριμένη εικόνα του σπιτιού, είναι προτιμότερο το πλάτος και το ύψος κάθε πλαισίου του πλέγματος να μεταβιβάζονται από τον καλούντα ως ορίσματα. Για τη συγκεκριμένη εφαρμογή, επειδή ο καλών θέλει να σχεδιάσει ένα παράθυρο, μπορεί να μεταβιβάσει τις σταθερές PaneWidth και PaneHeight. Η ίδια η διαδικασία απλώς σχεδιάζει πλαίσια. Εκτός από το πλάτος και το ύψος κάθε πλαισίου του πλέγματος, η DrawGrid χρειάζεται να γνωρίζει και τις συντεταγμένες του πλέγματος συνολικά. Για να είναι συνεπής με τα άλλα εργαλεία, η DrawGrid θα πρέπει και αυτή να θεωρεί ότι οι συγκεκριμένες συντεταγμένες αντιστοιχούν στην κάτω αριστερή γωνία του πλέγματος. Τέλος, η διαδικασία πρέπει να γνωρίζει το πλήθος των στηλών και των γραμμών του πλέγματος. Συνεπώς, το πρωτότυπο της DrawGrid θα πρέπει να έχει την εξής μορφή: void DrawGrid(double x, double y, double width, double height, int columns, int rows);

17 7.4 Επίλυση ενός μεγαλύτερου προβλήματος 297 Με δεδομένο ότι έχετε ήδη τη συνάρτηση DrawBox, η υλοποίηση της DrawGrid είναι σχετικά προφανής. Η υλοποίηση αποτελείται από ένα ζεύγος ένθετων βρόχων for με τους οποίους καλείται η DrawBox για κάθε στήλη κάθε γραμμής, όπως παρακάτω: /* * Συνάρτηση: DrawGrid * Χρήση: DrawGrid(x, y, width, height, columns, rows); * * Η DrawGrid σχεδιάζει ορθογώνια διατεταγμένα σε ένα πλέγμα * δύο διαστάσεων. Όπως πάντα, οι συντεταγμένες (x, y) * προσδιορίζουν την κάτω αριστερή γωνία της εικόνας. */ void DrawGrid(double x, double y, double width, double height, int columns, int rows) int i, j; for(i = 0; i < columns; i++) for(j = 0; j < rows; j++) DrawBox(x + i * width, y + j * height, width, height); Τώρα που έχετε την υλοποίηση της DrawGrid, μπορείτε να κατασκευάσετε καθένα από τα πρότυπα παραθύρων καλώντας απλώς την DrawGrid με τα κατάλληλα ορίσματα. Παρόλο που είναι συνήθως καλύτερο να σχεδιάζετε ένα πρόβλημα "από επάνω προς τα κάτω", συχνά είναι προτιμότερο να το υλοποιείτε "από κάτω προς τα επάνω". Η υλοποίηση πρώτα των εργαλείων χαμηλού επιπέδου διευκολύνει την αποσφαλμάτωση των μεμονωμένων τμημάτων του προγράμματός σας, πράγμα που είναι συνήθως ευκολότερο από το να προσπαθείτε να αποσφαλματώσετε ολόκληρο το πρόγραμμα με μιας. Αυτή η στρατηγική ονομάζεται συνθετική υλοποίηση ή υλοποίηση "από κάτω προς τα επάνω" (bottom-up implementation). Ολοκλήρωση της αποσύνθεσης Μετά τη δημιουργία του εργαλείου DrawGrid, το υπόλοιπο του προγράμματος σχεδίασης του σπιτιού αποτελεί ένα ξεκάθαρο παράδειγμα βηματικής εκλέπτυνσης. Το πλήρες πρόγραμμα, house.c, παρουσιάζεται στην Εικόνα 7-7.

18 298 ΚΕΦΑΛΑΙΟ 7: Βιβλιοθήκες και διασυνδέσεις: Μια απλή βιβλιοθήκη γραφικών ΕΙΚΟΝΑ 7-7 house.c /* * Αρχείο: house.c * * Αυτό το πρόγραμμα σχεδιάζει ένα απλό πλαίσιο σπιτιού. */ #include <stdio.h> #include "genlib.h" #include "graphics.h" /* * Σταθερές * * Οι ακόλουθες σταθερές καθορίζουν τα μεγέθη * των διαφόρων στοιχείων στην οθόνη. */ #define HouseHeight 2.0 #define HouseWidth 3.0 #define AtticHeight 0.7 #define DoorWidth 0.4 #define DoorHeight 0.7 #define DoorknobRadius 0.03 #define DoorknobInset 0.07 #define PaneHeight 0.25 #define PaneWidth 0.2 #define FirstFloorWindows 0.3 #define SecondFloorWindows 1.25 /* Πρωτότυπα συναρτήσεων */ void DrawHouse(double x, double y); void DrawOutline(double x, double y); void DrawWindows(double x, double y); void DrawDoor(double x, double y); void DrawBox(double x, double y, double width, double height); void DrawTriangle(double x, double y, double base, double height); void DrawCenteredCircle(double x, double y, double r); void DrawGrid(double x, double y, double width, double height, int columns, int rows); /* Κυρίως πρόγραμμα */ main() double cx, cy;

19 7.4 Επίλυση ενός μεγαλύτερου προβλήματος 299 InitGraphics(); cx = GetWindowWidth() / 2; cy = GetWindowHeight() / 2; DrawHouse(cx - HouseWidth / 2, cy - (HouseHeight + AtticHeight) / 2); /* * Συνάρτηση: DrawHouse * Χρήση: DrawHouse(x, y); * * Αυτή η συνάρτηση σχεδιάζει ένα διάγραμμα σπιτιού με την * κάτω αριστερή του γωνία στο σημείο (x, y). Σε αυτό το * επίπεδο, η συνάρτηση απλώς διαχωρίζει τις εργασίες. */ void DrawHouse(double x, double y) DrawOutline(x, y); DrawDoor(x + (HouseWidth - DoorWidth) / 2, y); DrawWindows(x, y); /* * Συνάρτηση: DrawOutline * Χρήση: DrawOutline(x, y); * * Αυτή η συνάρτηση σχεδιάζει το περίγραμμα του σπιτιού * χρησιμοποιώντας ως αρχή το σημείο (x, y). Το περίγραμμα * αποτελείται από ένα ορθογώνιο με ένα τρίγωνο από επάνω. */ void DrawOutline(double x, double y) DrawBox(x, y, HouseWidth, HouseHeight); DrawTriangle(x, y + HouseHeight, HouseWidth, AtticHeight); /* * Συνάρτηση: DrawDoor * Χρήση: DrawDoor(x, y); * * Αυτή η συνάρτηση σχεδιάζει μια πόρτα με το πόμολό της. Όπως * συνήθως, το σημείο (x, y) προσδιορίζει την κάτω αριστερή γωνία * της πόρτας. */ void DrawDoor(double x, double y) DrawBox(x, y, DoorWidth, DoorHeight); DrawCenteredCircle(x + DoorWidth - DoorknobInset, y + DoorHeight / 2, DoorknobRadius);

20 300 ΚΕΦΑΛΑΙΟ 7: Βιβλιοθήκες και διασυνδέσεις: Μια απλή βιβλιοθήκη γραφικών /* * Συνάρτηση: DrawWindows * Χρήση: DrawWindows(x, y); * * Αυτή η συνάρτηση σχεδιάζει όλα τα παράθυρα του σπιτιού, * εκμεταλλευόμενη το γεγονός ότι όλα τα παράθυρα αποτελούν * διδιάστατα πλαίσια φατνωμάτων (τζαμιών) ίσου μεγέθους. * Καλώντας τη συνάρτηση DrawGrid, αυτή η υλοποίηση μπορεί * να δημιουργήσει όλες τις δομές παραθύρων χρησιμοποιώντας * ένα μόνο εργαλείο. */ void DrawWindows(double x, double y) double xleft, xright; xleft = x + HouseWidth * 0.25; xright = x + HouseWidth * 0.75; DrawGrid(xleft - PaneWidth * 1.5, y + FirstFloorWindows, PaneWidth, PaneHeight, 3, 2); DrawGrid(xright - PaneWidth * 1.5, y + FirstFloorWindows, PaneWidth, PaneHeight, 3, 2); DrawGrid(xleft - PaneWidth, y + SecondFloorWindows, PaneWidth, PaneHeight, 2, 2); DrawGrid(xright - PaneWidth, y + SecondFloorWindows, PaneWidth, PaneHeight, 2, 2); /* * Συνάρτηση: DrawBox * Χρήση: DrawBox(x, y, width, height); * * Αυτή η συνάρτηση σχεδιάζει ένα ορθογώνιο με καθορισμένο πλάτος * και ύψος, και την κάτω αριστερή του γωνία στο σημείο (x, y). */ void DrawBox(double x, double y, double width, double height) MovePen(x, y); DrawLine(0, height); DrawLine(width, 0); DrawLine(0, -height); DrawLine(-width, 0); /* * Συνάρτηση: DrawTriangle * Χρήση: DrawTriangle(x, y, base, height); * * Αυτή η συνάρτηση σχεδιάζει ένα ισοσκελές τρίγωνο (δηλ. με * δύο ίσες πλευρές) με οριζόντια βάση. Οι συντεταγμένες του * αριστερού άκρου της βάσης είναι (x, y) και το τρίγωνο έχει

21 7.4 Επίλυση ενός μεγαλύτερου προβλήματος 301 * το καθορισμένο μήκος βάσης και ύψος. Αν το ύψος είναι θετικό, * το τρίγωνο "κοιτά" προς τα επάνω. Αν το ύψος είναι αρνητικό, * το τρίγωνο "κοιτά" προς τα κάτω. */ void DrawTriangle(double x, double y, double base, double height) MovePen(x, y); DrawLine(base, 0); DrawLine(-base / 2, height); DrawLine(-base / 2, -height); /* * Συνάρτηση: DrawCenteredCircle * Χρήση: DrawCenteredCircle(x, y, r); * * Αυτή η συνάρτηση σχεδιάζει έναν κύκλο με ακτίνα r και * κέντρο το σημείο (x, y). */ void DrawCenteredCircle(double x, double y, double r) MovePen(x + r, y); DrawArc(r, 0, 360); /* * Συνάρτηση: DrawGrid * Χρήση: DrawGrid(x, y, width, height, columns, rows); * * Η DrawGrid σχεδιάζει ορθογώνια διατεταγμένα σε ένα πλέγμα * δύο διαστάσεων. Όπως πάντα, οι συντεταγμένες (x, y) * προσδιορίζουν την κάτω αριστερή γωνία της εικόνας. */ void DrawGrid(double x, double y, double width, double height, int columns, int rows) int i, j; for (i = 0; i < columns; i++) for (j = 0; j < rows; j++) DrawBox(x + i * width, y + j * height, width, height);

22

2 Εκμάθηση με παραδείγματα 53. Σχόλια 55, Συμπεριλήψεις βιβλιοθηκών 56, Το κυρίως πρόγραμμα 57 2.2 Ένα πρόγραμμα άθροισης δύο αριθμών...

2 Εκμάθηση με παραδείγματα 53. Σχόλια 55, Συμπεριλήψεις βιβλιοθηκών 56, Το κυρίως πρόγραμμα 57 2.2 Ένα πρόγραμμα άθροισης δύο αριθμών... Περιεχόμενα 1 Εισαγωγή 31 1.1 Μια σύντομη ιστορική αναδρομή των υπολογιστών... 32 1.2 Τι είναι η επιστήμη των υπολογιστών;... 36 1.3 Μια σύντομη περιήγηση στο υλικό των υπολογιστών... 38 Κεντρική μονάδα

Διαβάστε περισσότερα

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #2 2 Γενικά Στο Εργαστήριο αυτό θα αναλύσουμε τη χρήση της βασικής εντολής ελέγχου ροής

Διαβάστε περισσότερα

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Μονοδιάστατοι Πίνακες (tables) Μια συλλογή μεταβλητών ίδιου τύπου οι οποίες είναι αποθηκευμένες

Διαβάστε περισσότερα

Επανάληψη για τις Τελικές εξετάσεις

Επανάληψη για τις Τελικές εξετάσεις Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού

Διαβάστε περισσότερα

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

Διαβάστε περισσότερα

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος... 17

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Παρατηρήσεις

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού

Γλώσσες Προγραμματισμού Γλώσσες Προγραμματισμού Πολυδιάστατοι πίνακες Στατικές μεταβλητές Στατική ανάθεση τιμών σε πίνακες 19/4/2007 Πολυδιάστατοι πίνακες Παράδειγμα: Sudoku Πώς αναπαριστάται η διπλανή εικόνα από έναν πίνακα;

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Αναφορά

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

Διαβάστε περισσότερα

Ενδεικτική περιγραφή μαθήματος

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.

Διαβάστε περισσότερα

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις Προγραμματισμός Η/Y Διάλεξη 6 η : Συναρτήσεις Η C είναι συναρτησιακή γλώσσα προγραμματισμού Ως τώρα όλα τα προγράμματα που είδαμε ήταν γραμμένα μέσα στην main Τι θα κάνουμε όμως αν Το πρόγραμμα είναι τεράστιο

Διαβάστε περισσότερα

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 2:Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)- Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγικές Έννοιες σε Strings(Αρχικοποίηση, Ανάγνωση & Εκτύπωση) Πίνακες από Strings

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 Ευρετήριο Η γλώσσα C σε βάθος # #define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 A abs(), 625 AND, 64 ASCII πίνακας

Διαβάστε περισσότερα

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Κεφάλαιο 9.1-9.2 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Ένα string είναι μία ακολουθία αλφαριθμητικών χαρακτήρων, σημείων στίξης κτλ. Π.χ. Hello How are you? 121212 *Apple#123*%

Διαβάστε περισσότερα

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12) Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε

Διαβάστε περισσότερα

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 3: Πίνακες, βρόχοι, συναρτήσεις 1 Ιουνίου 2017 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Διαδικαστικός Προγραμματισμός

Διαδικαστικός Προγραμματισμός Διαδικαστικός Προγραμματισμός Ενότητα 3: Εντολές ελέγχου επανάληψη Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30 ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 1.1 Τι είναι Πληροφορική;...11 1.1.1 Τι είναι η Πληροφορική;...12 1.1.2 Τι είναι ο Υπολογιστής;...14 1.1.3 Τι είναι το Υλικό και το

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα

Διαβάστε περισσότερα

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6.1 Η Έννοια του Πίνακα Συχνά είναι προτιμότερο να αντιμετωπίζουμε ένα σύνολο μεταβλητών σαν ενότητα για να απλοποιούμε το χειρισμό τους. Έτσι οργανώνουμε σύνθετα δεδομένα σε

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

Διαβάστε περισσότερα

Συναρτήσεις και διαδικασίες

Συναρτήσεις και διαδικασίες Συναρτήσεις και διαδικασίες Χρήση συναρτήσεων βιβλιοθήκης Εντολή κλήσης της συνάρτησης printf: printf( Hello, world\n ); Μια συνάρτηση είναι ένα σύνολο εντολών που έχουν ομαδοποιηθεί και τους έχει αποδοθεί

Διαβάστε περισσότερα

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ ADVANCED Οι Advanced θεματικές ενότητες είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές στο χώρο

Διαβάστε περισσότερα

Αναδρομή Ανάλυση Αλγορίθμων

Αναδρομή Ανάλυση Αλγορίθμων Αναδρομή Ανάλυση Αλγορίθμων Παράδειγμα: Υπολογισμός του παραγοντικού Ορισμός του n! n! = n x (n - 1) x x 2 x 1 Ο παραπάνω ορισμός μπορεί να γραφεί ως n! = 1 αν n = 0 n x (n -1)! αλλιώς Παράδειγμα (συνέχ).

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Νέο Πρόγραμμα

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch; ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Τι είναι ; Συναρτήσεις Αυτόνομα τμήματα κώδικα (υποπρογράμματα) που πραγματοποιούν μια καθορισμένη εργασία. Χρήσιμες για περιπτώσεις που ο ίδιος υπολογισμός επαναλαμβάνεται πολλές φορές

Διαβάστε περισσότερα

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός

Διαβάστε περισσότερα

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

ιαδικαστικός Προγραμματισμός

ιαδικαστικός Προγραμματισμός ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ιαδικαστικός Προγραμματισμός Α Εξάμηνο Μάθημα 3 ο : Εντολές ελέγχου > επανάληψη Στόχοι μαθήματος Να μάθετε τις λεπτομέρειες των εντολών while και for και τις περιπτώσεις

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Sheet1_2. - Δεν απελευθερώνεις τη δυναµικά δεσµευµένη µνήµη. - Η έξοδος του προγράµµατός σου δεν είναι ακριβώς όπως ζητούσε η άσκηση.

Sheet1_2. - Δεν απελευθερώνεις τη δυναµικά δεσµευµένη µνήµη. - Η έξοδος του προγράµµατός σου δεν είναι ακριβώς όπως ζητούσε η άσκηση. Sheet1_2 AEM 0001 0002 0003 0004 0006 COMMENTS - Segmentation fault λόγω λάθους στην αναδροµή. Δες τη λύση, αλλά προσπάθησε να το ξανακάνεις και στο σπίτι για εξ - Πρόσεχε λίγο τη στοίχιση - Καλή δουλειά

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης Στο εργαστήριο αυτό, θα εξοικειωθούμε με τους τύπους δεδομένων που μας παρέχει η γλώσσα C, θα χρησιμοποιήσουμε τις δομές επανάληψης (for, while, do...while),

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη. 1ΗΣ ΣΕΛΙΔΑΣ ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2015 Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) ΣΥΝΟΛΟ

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Εισαγωγή Η τακτοποίηση των δεδομένων με ιδιαίτερη σειρά είναι πολύ σημαντική λειτουργία που ονομάζεται

Διαβάστε περισσότερα

Διδακτική της Πληροφορικής ΙΙ

Διδακτική της Πληροφορικής ΙΙ Διδακτική της Πληροφορικής ΙΙ Ομάδα Γ Βότσης Ευστάθιος Γιαζιτσής Παντελής Σπαής Αλέξανδρος Τάτσης Γεώργιος Προβλήματα που αντιμετωπίζουν οι αρχάριοι προγραμματιστές Εισαγωγή Προβλήματα Δυσκολίες Διδακτικό

Διαβάστε περισσότερα

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C 1 Εισαγωγή Ο προγραμματισμός είναι μια διαδικασία επίλυσης προβλημάτων με χρήση Η/Υ. Ένα πρόγραμμα είναι ένα σύνολο εντολών κάποιας γλώσσας προγραμματισμού,

Διαβάστε περισσότερα

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23 Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία

Διαβάστε περισσότερα

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro Για να μπορέσουμε να εισάγουμε δεδομένα από το πληκτρολόγιο αλλά και για να εξάγουμε εμφανίσουμε αποτελέσματα στην οθόνη του υπολογιστή χρησιμοποιούμε τις εντολές Εισόδου και Εξόδου αντίστοιχα. Σύνταξη

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων Πληροφορικής 2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών 3. Ο αλγόριθμος

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός... 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Διάρκεια 3 ώρες Στοιχεία Μαθητή: Όνομα... Επώνυμο... Βαθμός... 2 Θεμα Α (30%) Α1 ΣΩΣΤΟ - ΛΑΘΟΣ 1. Ένα υποπρόγραμμα δεν μπορεί να κληθεί περισσότερες

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

Πρόβλημα 29 / σελίδα 28

Πρόβλημα 29 / σελίδα 28 Πρόβλημα 29 / σελίδα 28 Πρόβλημα 30 / σελίδα 28 Αντιμετάθεση / σελίδα 10 Να γράψετε αλγόριθμο, οποίος θα διαβάζει τα περιεχόμενα δύο μεταβλητών Α και Β, στη συνέχεια να αντιμεταθέτει τα περιεχόμενά τους

Διαβάστε περισσότερα

5.1. Προσδοκώμενα αποτελέσματα

5.1. Προσδοκώμενα αποτελέσματα 5.1. Προσδοκώμενα αποτελέσματα Όταν θα έχεις ολοκληρώσει τη μελέτη αυτού του κεφαλαίου θα έχεις κατανοήσει τις τεχνικές ανάλυσης των αλγορίθμων, θα μπορείς να μετράς την επίδοση των αλγορίθμων με βάση

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες Στόχοι και αντικείμενο ενότητας Ο τύπος του Πίνακα (βλ. ενότητα #2α) Ορισμός και αρχικοποίηση Αποθήκευση πινάκων στη μνήμη Πολυδιάστατοι πίνακες #6. Πίνακες και Δείκτες Ο τύπος του Δείκτη Η έννοια του

Διαβάστε περισσότερα

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 Οικονόμου Βαγγέλησ Διάλεξη Νο 2 Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 1 Η έννοια τησ μεταβλητήσ έδωςε λύςη ςτο πρόβλημα τησ αναφοράσ ςτην κύρια μνήμη του υπολογιςτή. Οι γλώςςεσ προγραμματιςμού υποςτηρίζουν

Διαβάστε περισσότερα

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

Διαβάστε περισσότερα

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει.

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει. οµηµένες τεχνικές Ο στόχος των δοµηµένων τεχνικών είναι: Υψηλής ποιότητας προγράµµατα Εύκολη τροποποίηση προγραµµάτων Απλοποιηµένα προγράµµατα Μείωση κόστους και χρόνου ανάπτυξης. Οι βασικές αρχές τους

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

Διαβάστε περισσότερα

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 14 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)

Διαβάστε περισσότερα

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα Αλφαριθμητικά Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό

Διαβάστε περισσότερα

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

Περιεχόμενα. Περιεχόμενα

Περιεχόμενα. Περιεχόμενα Περιεχόμενα xv Περιεχόμενα 1 Αρχές της Java... 1 1.1 Προκαταρκτικά: Κλάσεις, Τύποι και Αντικείμενα... 2 1.1.1 Βασικοί Τύποι... 5 1.1.2 Αντικείμενα... 7 1.1.3 Τύποι Enum... 14 1.2 Μέθοδοι... 15 1.3 Εκφράσεις...

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

Διαβάστε περισσότερα

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ 10 η Διάλεξη C++ - Πίνακες Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Ανακεφαλαίωση Κατά την κλήση μιας συνάρτησης κατ αξία οι τιμές των ορισμάτων αντιγράφονται στις αντίστοιχες τυπικές παραμέτρους

Διαβάστε περισσότερα

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς Βασικές Έννοιες Αλγορίθμων Δομή Ακολουθίας (κεφ. 2 και 7 σχολικού βιβλίου) 1. Οι μεταβλητές αντιστοιχίζονται από τον μεταγλωττιστή κάθε

Διαβάστε περισσότερα

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τον ορισμό, τη δήλωση και τη χρήση των χαρακτήρων, συνεπώς και των αλφαριθμητικών, της Γλώσσας

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού

Γλώσσες Προγραμματισμού Γλώσσες Προγραμματισμού Διδάσκων: Ανδρέας Παπασαλούρος Ιστοσελίδα: http://www.samos.aegean.gr/math/andpapas/courses/pl/default.htm Πλατφόρμα ηλεκτρονικής μάθησης: http://myria.math.aegean.gr/moodle/ Πλατφόρμα

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 14 Δυναμική διαχείριση μνήμης Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Στατική δέσμευση μνήμης Με τη δήλωση απλών μεταβλητών

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Αλφαριθμητικά θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

Διαβάστε περισσότερα

Διαδικαστικός Προγραμματισμός

Διαδικαστικός Προγραμματισμός ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Διαδικαστικός Προγραμματισμός Α Εξάμηνο Μάθημα 7 ο : Δείκτες Στόχοι μαθήματος Να κατανοήσετε τη δυνατότητα χρήσης διευθύνσεων ως τιμών δεδομένων. Να μπορείτε να χρησιμοποιείτε

Διαβάστε περισσότερα