Οικονόμου Βαγγέλησ Διάλεξη Νο 2 Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 1
Η έννοια τησ μεταβλητήσ έδωςε λύςη ςτο πρόβλημα τησ αναφοράσ ςτην κύρια μνήμη του υπολογιςτή. Οι γλώςςεσ προγραμματιςμού υποςτηρίζουν την πρόςβαςη ςτα δεδομένα με χρήςη ςυμβολικών ονομάτων που καλούνται μεταβλητέσ. Το όνομα τησ μεταβλητήσ είναι άμεςα ςυνδεδέμενο με την ακριβή διεύθυνςη τησ μνήμησ όπου είναι αποθηκευμένη η τρέχουςα τιμή τησ μεταβλητήσ. 2
Παράδειγμα: count = 12; count = count +2; Όνομα μεταβλητήσ Θέςη μνήμησ. count 0x001 12 Περιεχόμενο θέςησ μνήμησ Όνομα μεταβλητήσ Θέςη μνήμησ. count 0x001 14 Περιεχόμενο θέςησ μνήμησ 3
Διαφορετικέσ ιδιότητεσ έχει μια μεταβλητή που αναπαριςτά τον μιςθό ενόσ υπαλλήλου από άλλη που αναπαριςτά το όνομα του. Οι ιδιότητεσ μιασ μεταβλητήσ ορίζονται ςτη διάρκεια τησ μεταγλώττιςησ και δεν μεταβάλλονται (για την C). Απαιτούμε δηλαδή να δηλώνουμε μια μεταβλητή πριν την χρηςιμοποιήςουμε. 4
Η δήλωςη μιασ μεταβλητήσ γνωςτοποιεί ςτον μεταγλωτιςτή το όνομα και τισ ιδιότητεσ τησ μεταβλητήσ. Η δήλωςη έχει ωσ αποτέλεςμα την ςύνδεςη του ονόματοσ τησ μεταβλητήσ με: τον ανάλογο τύπο δεδομένων (compile time) μια θέςη μνήμησ κατάλληλου μεγέθουσ (run time) Παράδειγμα δήλωςησ ενόσ ακεραίου: int count; 5
Ένασ τύποσ δεδομένων είναι ένα ςύνολο από αντικείμενα με κοινά χαρακτηριςτικά (πχ. Ακέραιοι αριθμοί, Φοιτητέσ, Πραγματικοί αριθμοί, Χαρακτήρεσ). Στουσ τύπουσ δεδομένων λαμβάνει θέςη ένα ςύνολο από πράξεισ που μασ επιτρέπει την επεξεργαςία τουσ. Οι ςύγχρονεσ γλώςςεσ προγραμματιςμού περιλαμβάνουν ενςωματωμένουσ τύπουσ δεδομένων, αλλα μασ προςφέρουν και την δυνατότητα να ορίςουμε και νέουσ τύπουσ δεδομένων. 6
<όνομα τύπου δεδομένων> <λίςτα ονομάτων μεταβλητών> ; ή <όνομα τύπου δεδομένων> <όνομα μεταβλητήσ>= <αρχική τιμή μεταβλητήσ> ; Παράδειγμα: int count ; /*δήλωζη ηης ακέραιας μεηαβληηής count*/ int num ; /*δήλωζη ηης ακέραιας μεηαβληηής num*/ ή int num, count; int num = 20; /* δήλωζη ηης ακέραιας μεηαβληηής num,όποσ ηης αποδίδει αρτική ηιμή 20*/ 7
Υπάρχουν περιπτωςεισ όπου δεν θέλουμε να αλλάξει τιμή μια μεταβλητή μετά την ανάθεςη αρχικήσ τιμήσ. Στην περίπτωςη αυτή πριν το όνομα του τύπου βάζουμε την δεςμευμένη λέξη const. const float pi = 3.14; float: τύποσ δεδομένων για πραγματικούσ αριθμούσ. 8
Η επίλυςη πολλών προβλημάτων εμπλέκει τη χρήςη αριθμητικών ςταθερών. Ο υπολογιςμόσ, για παράδειγμα, τησ περιμέτρου ενόσ κύκλου γίνεται ςύμφωνα με τον τύπο l = 2πr, όπου το π είναι η γνωςτή ςταθερά 3.14. Η πρόταςη τησ C που υπολογίζει την περίμετρο του κύκλου είναι: perimetros = 2 * 3.14 * radius; όπου perimetros και radius είναι πραγματικέσ μεταβλητέσ και οι αριθμοί 2 και 3.14 είναι ςταθερέσ. Οι ςταθερέσ επομένωσ, είναι τιμέσ, αριθμητικέσ ή αλφαριθμητικέσ. 9
Χαρακτήρεσ Ακέραιοι αριθμοί Πραγματικοί αριθμοί 10
Ο τύποσ χαρακτήρα, που δηλώνεται με τη λέξη κλειδί char, χρηςιμοποιείται για να αναπαραςτήςει απλούσ χαρακτήρεσ του αλφαβήτου τησ γλώςςασ. Μια ςταθερά τύπου char εμφανίζεται ςτον πηγαίο κώδικα ανάμεςα ςτα απλά ειςαγωγικά. Παραδείγματα ςταθερών τύπου χαρακτήρα είναι: 'C', '2', '*', ')'. 11
ΔΗΛΩΣΗ: ακολουθείται ο γενικόσ κανόνασ Παράδειγμα: char choice = B ; ΕΚΤΥΠΩΣΗ: η εκτύπωςη ενόσ χαρακτήρα γίνεται με την ςυνάρτηςη printf τησ βαςικήσ βιβλιοθήκησ (stdio.h) χρηςιμοποιώντασ τον προςδιοριςτή %c. Παράδειγμα: printf( O xaraktiras einai %c\n, choice); 12
ΕΙΣΑΓΩΓΗ: η ειςαγωγή τιμήσ ςε μια μεταβλητή από την κύρια είςοδο (πληκτρολόγιο πιο πιθανό) γίνεται μέςω τησ ςυνάρτηςησ scanf τησ βαςικήσ βιβλιοθήκησ. Η scanf χρηςιμοποιεί τουσ ίδιουσ προςδιοριςτέσ με την printf. Παράδειγμα: scanf( %c, &choice); 13
Ο τύποσ ακεραίου, που δηλώνεται με τη λέξη κλειδί int, χρηςιμοποιείται για να αναπαραςτήςει ακέραιουσ αριθμούσ. ΔΗΛΩΣΗ: ακολουθείται ο γενικόσ κανόνασ. Παράδειγμα: int num; int x=23; 14
ΕΚΤΥΠΩΣΗ: Για την εκτύπωςη ακεραίων, η ςυνάρτηςη printf τησ βαςικήσ βιβλιοθήκησ δέχεται ένα ςύνολο από προςδιοριςτέσ μορφήσ εμφάνιςησ. Οι προςδιοριςτέσ %d, %x και %o χρηςιμοποιούνται για εμφάνιςη ςε δεκαδική, δεκαεξαδική και οκταδική μορφή, αντίςτοιχα. printf( dec=%d\n, num); 15
ΕΙΣΑΓΩΓΗ: Η ειςαγωγή γίνεται όπωσ και ςτην περίπτωςη τησ μεταβλητήσ χαρακτήρα με τη διαφορά ότι χρηςιμοποιείται ο προςδιοριςτήσ %d. Παράδειγμα: scanf( %d, &num); 16
Η C διαθέτει 2 τύπουσ για αναπαράςταςη πραγματικών αριθμών. Τον τύπο float (λέξη κλειδί) για αριθμούσ κινητήσ υποδιαςτολήσ απλήσ ακρίβειασ και τον τύπο double (λέξη κλειδί) για τουσ αριθμούσ κινητήσ υποδιαςτολήσ διπλήσ ακρίβειασ. 17
ΔΗΛΩΣΗ: ακολουθείται ο γενικόσ κανόνασ. Παράδειγμα: float x; float y=1.33; 18
ΕΚΤΥΠΩΣΗ: Για την εκτύπωςη πραγματικών αριθμών, η ςυνάρτηςη printf τησ βαςικήσ βιβλιοθήκησ αναγνωρίζει τουσ προςδιοριςτέσ %f, %e και %g. ΕΜΕΙΣ θα χρηςιμοποιούμε κυρίωσ τον προςδιοριςτή %f. Παράδειγμα: printf( %f\n, y); 19
ΕΙΣΑΓΩΓΗ: Η ειςαγωγή γίνεται όπωσ και ςτουσ προηγούμενουσ τύπουσ δεδομένων με τη διαφορά ότι χρηςιμοποιείται ο προςδιοριςτήσ %f. Παράδειγμα: scanf( %f, &x); 20
Ένασ τελεςτήσ (operator) είναι ένα ςύμβολο ή μία λέξη τησ γλώςςασ προγραμματιςμού, που αναπαριςτά ςυγκεκριμένη διεργαςία, η οποία εκτελείται πάνω ςε ένα ή περιςςότερα δεδομένα. Τα δεδομένα καλούνται τελεςτέοι (operands) και μπορούν να είναι μεταβλητέσ, ςταθερέσ ή ακόμη κλήςεισ ςυναρτήςεων. Τα δεδομένα πρέπει να είναι του ιδίου τύπου. Οι τελεςτέσ χρηςιμοποιούνται για το ςχηματιςμό εκφράςεων (expressions). Παράδειγμα: Στην έκφραςη num + 12 ο χαρακτήρασ + αναπαριςτά τη διεργαςία τησ πρόςθεςησ των δύο τελεςτέων, τησ τιμήσ τησ μεταβλητήσ num και τησ ςταθεράσ 12. 21
Κατηγορία ενδεικτικοί τελεςτέσ αριθμητικοί +,, *, /, % λογικοί &&,,! ςυςχετιςτικοί >,>=, ==,!=,<,<= 22
ςύμβολο ερμηνεία + πρόςθεςη - αφαίρεςη * πολλαπλαςιαςμόσ / διαίρεςη % υπόλοιπο 23
Παραδείγματα: int x,y,z; x=9; y=10; z=x+y; 24
ςύμβολο ερμηνεία && Λογικό ΚΑΙ Λογικό Η! Λογικό ΟΧΙ 25
ςύμβολο ερμηνεία > μεγαλύτερο >= μεγαλύτερο ή ίςο == ίςον < μικρότερο <= μικρότερο ή ίςον 26
27