Η Γλώσσα C Μία Σφαιρική Ανασκόπηση

Σχετικά έγγραφα
Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

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

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

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

Προγραμματισμό για ΗΜΥ

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

Κεφάλαιο : Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

5 &6. Τύποι δεδομένων, τελεστές και

3 &4. Εισαγωγήστη C Ιωάννης Κατάκης

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Επανάληψη. Εντολές while, for, do-while

Περιεχόμενα. Κεφάλαιο 2.5: Τύποι Δεδομένων, Τελεστές και Αριθμητικές Εκφράσεις. (Διαλέξεις 5-6) Τύποι Δεδομένων. Τελεστές. Αριθμητικές εκφράσεις

Προγραμματισμό για ΗΜΥ

οµές Επιλογής Εντολές if και switch

Κεφάλαιο 2.5: Τύποι Δεδομένων, Τελεστές και Αριθμητικές Εκφράσεις. (Διαλέξεις 5-6)

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Δεδομένα, Τύποι και Τιμές

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

Διαδικασία Ανάπτυξης Λογισμικού

Ενσωματωμένοι Τύποι Δεδομένων. ΕΠΛ131 Ενότητα III

Αντικειµενοστρεφής Προγραµµατισµός

ΗΥ-150. Προγραμματισμός

Προγραμματισμός Η/Υ. Ενότητα 2α: Εισαγωγή στη C (Μέρος Πρώτο)

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

Προγραμματισμός Ι (ΗΥ120)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

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

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

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

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

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

ΕΠΛ 131 ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι

ΗΥ-150. Προγραμματισμός

Προγραμματισμός Ι (ΗΥ120)

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

Προγραμματισμός Ι (ΗΥ120)

Οντοκεντρικός Προγραμματισμός

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Προγραμματισμός Ι (ΗΥ120)

Στόχοι και αντικείμενο ενότητας. Συντακτικό Γλώσσας. Αλφάβητο. #2.. Εισαγωγή στη C (Μέρος Πρώτο)

Προγραµµατισµός Ι (ΗΥ120)

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

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Προγραμματισμός σε C++

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

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

Η τιµή εξόδου κάποιας συνάρτησης µπορεί να είναι δείκτης, π.χ.

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

Τύποι Δεδομένων Είσοδος/Έξοδος

Αντικειμενοστρεφής Προγραμματισμός

Εισαγωγή στον δομημένο προγραμματισμό

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

Να εκτυπωθούν οι πρώτες Ν σειρές του τριγώνου, χρησιµοποιώντας ένα πίνακα µεγέθους Ν στοιχείων (η Ν-οστή σειρά περιέχει Ν στοιχεία).

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

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

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Transcript:

Η Γλώσσα C Μία Σφαιρική Ανασκόπηση Η γλώσσα C αναπτύχθηκε το 1972 από τον Dennis Ritchie στα ΑΤ & Τ Laboratories. Οδηγίες προς τον προεπεξεργαστή Εισδοχή Βιβλιοθηκών #include <stdio.h> #include <math.h> Σύνταξη: #include <standard header file> Μία βιβλιοθήκη (library) είναι µία συλλογή χρήσιµων συναρτήσεων και συµβόλων. Η βιβλιοθήκη stdio περιέχει, ανάµεσα σε άλλα, τις συναρτήσεις printf, για εκτύπωση πληροφοριών, και scanf, για εισδοχή πληροφοριών. Η βιβλιοθήκη math περιέχει διάφορες µαθηµατικές συναρτήσεις.

Ορισµοί Σταθερών #define KMS_PER_MILE 1.609 #define PI 3.1415 Σύνταξη: #define ονοµασία τιµή Η χρήση σταθερών - Αυξάνει την αναγνωσιµότητα του προγράµµατος - ιευκολύνει τροποποιήσεις Συνάρτηση main Κάθε πρόγραµµα έχει µία συνάρτηση µε το όνοµα main από όπου αρχίζει η εκτέλεση του προγράµµατος. #include <stdio.h> void main (void) { printf( Hello world\n ); } Σύνταξη: void main (void) { σώµα συνάρτησης } Το σώµα µίας συνάρτησης αποτελείται από δηλώσεις (declarations) και εντολές (executable statements). 2

εσµευµένες Λέξεις Λέξεις που έχουν ειδική σηµασία για την C. εσµευµένες λέξεις δεν µπορούν να ορισθούν ξανά. auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while Ονοµασίες Για σταθερές, µεταβλητές, συναρτήσεις, κτλ. Κανόνες Σύνταξης: 1. Αποτελούνται από γράµµατα, δεκαδικά ψηφία και underscores ( _ ). 2. εν µπορεί να αρχίζουν µε δεκαδικό ψηφίο. 3. εσµευµένες λέξεις δεν µπορούν να χρησιµοποιηθούν ως ονοµασίες για κάτι άλλο. KMS_PER_MILE miles kms printf scanf 4. Ονοµασίες που ορίζονται σε κάποια από τις βασικές βιβλιοθήκες δεν θα πρέπει να ξαναορίζονται. 3

Παραδείγµατα µη επιτρεπτών ονοµασιών: 1Letter double one new new-fn Κεφαλαία και µικρά γράµµατα θεωρούνται διαφορετικά. Εποµένως οι ονοµασίες One, one και ONE είναι όλες διαφορετικές. Οι ονοµασίες πρέπει να είναι αυτοεπεξηγηµατικές. Π.χ. η ονοµασία Age είναι πολύ καλύτερη από την ονοµασία Α για µία µεταβλητή στην οποία θα καταχωρούνται ηλικίες. ηλώσεις Μεταβλητών double miles; int count; double kms; double miles, kms; int count = 0; /* αρχικοποίηση παράλληλα µε δήλωση */ Σύνταξη: τύπος λίστα-µεταβλητών ; - Κάθε µεταβλητή που χρησιµοποιείται σε κάποιο πρόγραµµα χρειάζεται να δηλωθεί. 4

- Η δήλωσή της έχει ως αποτέλεσµα την παραχώρηση µνήµης για τη δηµιουργία της. Ο τύπος (double, int, κτλ) της µεταβλητής προσδιορίζει τον απαιτούµενο χώρο µνήµης. - Επίσης κάθε µεταβλητή χρειάζεται να αρχικοποιηθεί καταχώρηση αρχικής τιµής. Τύποι εδοµένων Ένας τύπος δεδοµένων είναι ένα σύνολο τιµών και ένα σύνολο λειτουργιών (πράξεων) που µπορούν να εφαρµοστούν σε αυτές τις τιµές. Απλοί τύποι οι τιµές δεν µπορούν να διασπασθούν σε απλούστερα στοιχεία. Συναθροιστοί τύποι σύνθετες τιµές απαρτιζόµενες από απλούστερα στοιχεία. Κάθε γλώσσα παρέχει ένα αριθµό ενσωµατωµένων τύπων δεδοµένων (π.χ. double, int, char) και επίσης παρέχει τη δυνατότητα στο χρήστη να ορίσει νέους τύπος. Τύπος εδοµένων int Αναπαριστά ακεραίους αριθµούς Πεδίο τιµών: -32767 µέχρι 32767 5

Παραδείγµατα κυριολεκτικών τιµών: -2189 0 50 +28 32 1027 Πράξεις: πρόσθεση (+), αφαίρεση (-), πολλαπλασιασµός (*), διαίρεση (/), υπόλοιπο (%), κτλ Τύπος εδοµένων double Αναπαριστά τους πραγµατικούς αριθµούς Πράξεις: πρόσθεση (+), αφαίρεση (-), πολλαπλασιασµός (*), διαίρεση (/), κτλ Εκθετική σηµειογραφία για κυριολεκτικές τιµές: 1258000.0 = 1.258 10 6 = 1.258e6 = 1.258E6 0.00089 = 8.9 10-4 = 8.9e-4 Ορθές Τιµές 3.14159 0.005 12345.0 15.0e-04 (0.0015) 2.345e2 (234.5) 1.15e-3 (0.00115) 12e+5 (1200000) Λανθασµένες Τιµές.12345e 15e-0.3 12.5e.3 34,500.99 Σηµείωση: Έννοια της υπερφόρτωσης (overloading) το ίδιο σύµβολο έχει διαφορετικές ερµηνείες σε διαφορετικά συµφραζόµενα, π.χ. τα σύµβολα *, /, -, +, κτλ 6

Τύπος εδοµένων char Αναπαριστά ατοµικούς χαρακτήρες γράµµατα (A-Z, a-z), δεκαδικά ψηφία (0-9), και ειδικά σύµβολα (\n, κτλ). Κυριολεκτικές τιµές εσωκλείονται σε αποστρόφους, π.χ. Α, a, 9,,, *, \n, \, κτλ. Οι απόστροφοι δεν χρειάζονται όταν εισάγονται χαρακτήρες από κάποια µονάδα εισόδου. Σηµείωση: Οι τύποι int και char είναι βαθµωτοί (απαριθµητοί) τύποι αναφορικά µε τις τιµές τους ορίζονται οι σχέσεις προκάτοχος και διάδοχος. Εκτελέσιµες Προτάσεις Εντολές Καταχώρηση Τιµών (τελεστής ανάθεσης =) kms = KMS_PER_MILE * miles; total = total + value; numbers = numbers + 1; average = total / numbers; Σύνταξη: µεταβλητή = έκφραση; Εντολές Εισόδου/Εξόδου (Κλήσεις συναρτήσεων από βιβλιοθήκη stdio) scanf( %lf, &miles); scanf( %lf, &value); printf( ώσε την απόσταση σε µίλια > ); printf( Αυτή ισούται µε %f χιλιόµετρα.\n, kms); 7

Εντολές Επιλογής if (value > 0) { total = total + value; numbers = numbers + 1; } Σύνταξη: if (συνθήκη) εντολή Εντολές Επανάληψης do { printf( \nenter Number: ); scanf( %lf, &value); } while (value <= 0); Σύνταξη: do εντολή while (συνθήκη); Εντολή return return 0; Σύνταξη: return έκφραση; 8

Κλήσεις Συναρτήσεων Εισόδου/Εξόδου Κλήση συνάρτησης (function call) Η συνάρτηση ενεργοποιείται προς εκτέλεση της δεδοµένης εργασίας. Η βιβλιοθήκη stdio περιέχει βασικές συναρτήσεις εισόδου/ εξόδου (input/output functions ή i/o functions): Συνάρτηση εισόδου αντιγράφει δεδοµένα από µονάδα εισόδου σε χώρο στην πρωτεύουσα µνήµη, π.χ. scanf. Συνάρτηση εξόδου εκτυπώνει σε µονάδα εξόδου πληροφορίες αποθηκευµένες στην πρωτεύουσα µνήµη, π.χ. printf. Συνάρτηση printf Σύνταξη: printf(σχήµα κειµένου, λίστα εκτύπωσης); printf(σχήµα κειµένου); ορίσµατα (arguments) printf( Αυτή ισούται µε %f χιλιόµετρα.\n, kms); ονοµασία σχήµα κειµένου λίστα συνάρτησης εκτύπωσης κάτοχος-θέσης (placeholder) kms είναι η έκφραση που αντισοιχεί στον κάτοχο-θέσης %f 9

Εάν η κλήση στη συνάρτηση printf περιέχει µόνο ένα όρισµα, δηλαδή µόνο σχήµα κειµένου, τότε αυτό δεν περιέχει κατόχους-θέσεων. double x; x = 4.0; printf( Το %f στο τετράγωνο ισούται µε %f, x, x * x); Το 4.000000 στο τετράγωνο ισούται µε 16.000000 Ο πρώτος κάτοχος-θέσης (%f ) αντιστοιχεί στην έκφραση x και ο δεύτερος (%f ) στην έκφραση x * x. Λειτουργία printf Εκτύπωση σχήµατος κειµένου αφού πρώτα οι κάτοχοι θέσεων αντικατασταθούν µε τις τιµές των αντίστοιχων εκφράσεων. Ειδικοί χαρακτήρες (π.χ. \n) αντικαθιστώνται από τις σχετικές λειτουργίες. Κάτοχος-θέσης %c %d %f Τύπος Έκφρασης char (χαρακτήρας) int (ακέραιος) double (πραγµατικός) 10

Περαιτέρω σχηµατισµός για αριθµητικές τιµές %nd Να χρησιµοποιηθούν n θέσεις για την εκτύπωση του ακέραιου αριθµού. Εάν ο αριθµός έχει λιγότερα από n ψηφία, τοποθετούνται κενά στα αριστερά (δεξιά ευθυγράµµιση). Εάν ο αριθµός έχει περισσότερα ψηφία, εκτυπώνονται όλα. printf( \n%3d\n%3d\n%3d\n%3d, 1, 22, 333, -444); 1 22 333 444 %n.mf Να χρησιµοποιηθούν n θέσεις για την εκτύπωση του πραγµατικού αριθµού, εκ των οποίων m να είναι για τα δεκαδικά ψηφία. %.mf Προσδιορίζεται µόνο ο αριθµός δεκαδικών ψηφίων. printf( \n%5.2f\n%5.2f\n%5.2f\n%5.2f, 12.486, 12.484, 2.0, 222.0); 12.49 12.48 2.00 222.00 11

Συνάρτηση scanf Σύνταξη: scanf(σχήµα εισόδου, είσοδοι); κάτοχος-θέσης διεύθυνση scanf( %lf, &miles); miles Η εντολή έχει ως αποτέλεσµα την αποθήκευση κάποιου αριθµού, ο οποίος εισάγεται από τη βασική µονάδα εισόδου (π.χ. πληκτρολόγιο) στη µεταβλητή miles. Τυχόν προηγούµενη τιµή στη miles διαγράφεται. Εποµένως το σχήµα εισόδου αποτελείται από µία ακολουθία κατόχων-θέσεων και οι εισόδοι από τις αντίστοιχες διευθύνσεις µεταβλητών. double x, y, z; printf( ώσε τρεις αριθµούς: ); scanf( %lf%lf%lf, &x, &y, &z); ώσε τρεις αριθµούς: 12.6 3.457 19.0 12

12.6 3.457 19.0 x y z 12.6 3.457 19.0 Κάτοχος-θέσης %c %d %lf Τύπος Μεταβλητής char int double ώσε τρεις αριθµούς: 12.6 3.457 19.0 Οι κατόχοι-θέσεων %d και %lf διαπερνούν whitespace. Ο κάτοχος-θέσης %c διαπερνά whitespace µόνο εάν προηγείται από ένα space. Γενική οµή Ενός C Προγράµµατος Οδηγίες προς προεπεξεργαστή Επικεφαλίδα συνάρτησης main { δηλώσεις εντολές } 13

Αριθµητικές Εκφράσεις Τελεστές / και % 5.0 / 2.0 2.5 5 / 2 2 5 % 2 1 Έστω η αριθµητική έκφραση Ε 1 τ Ε 2 Ε 1 αριστερός τελεστέος (left operand) E 2 δεξιός τελεστέος (right operand) τ δυαδικός τελεστής (binary operator) Ο τύπος της έκφρασης είναι int µόνο εάν και οι δύο τελεστέοι (Ε 1 και Ε 2 ) είναι τύπου int, διαφορετικά είναι τύπου double. Έκφραση 5 / 2 5 / 2.0 5.0 / 2.0 5.0 / 2 Τύπος int double double double Τιµή 2 2.5 2.5 2.5 14

Τα σύµβολα και + αντιπροσωπεύουν µοναδιαίους τελεστές (unary operators), µε µόνο ένα τελεστέο δηλαδή: x = y; p = +x * y; καθώς επίσης δυαδικούς τελεστές: x = y + z; z = y x; Κανόνες Αποτίµησης Εκφράσεων Κανόνας Παρενθέσεων: Κάθε έκφραση σε παρένθεση αποτιµείται ξεχωριστά. Φωλιασµένες παρενθετικές εκφράσεις, ((..)), αποτιµούνται από τα µέσα προς τα έξω. Κανόνας Προτεραιότητας Τελεστών: Τελεστές στην ίδια έκφραση αποτιµούνται σύµφωνα µε τις προτεραιότητές τους. Οι προτεραιότητες των αριθµητικών τελεστών, σε φθίνουσα σειρά, είναι: µοναδιαίοι +, υψηλότερη προτεραιότητα *, /, % ενδιάµεση προτεραιότητα δυαδικοί +, χαµηλότερη προτεραιότητα Κανόνας Εταιρικότητας: Μοναδιαίοι τελεστέοι στην ίδια υποέκφραση και µε την ίδια προτεραιότητα αποτιµούνται από τα δεξιά προς τα αριτερά δεξιά εταιρικότητα. 15

υαδικοί τελεστέοι στην ίδια υποέκφραση και µε την ίδια προτεραιότητα αποτιµούνται από τα αριστερά προς τα δεξιά αριστερή εταιρικότητα. Παράδειγµα Η έκφραση x * y * z + a / b c * d ερµηνεύεται ως (((x * y) * z) + (a / b)) (c * d) + * * / c d * z a b x y Όπου υπάρχει αµφιβολία για την σειρά αποτίµησης, να χρησιµοποιούνται παρενθέσεις. 16

Κανόνες Σύνταξης Αριθµητικών Εκφράσεων (Σηµειογραφία BNF) <αριθµός> ::= <ακέραιος> <πραγµατικός> <τελεστής> ::= <µοναδιαίος> <δυαδικός> <µοναδιαίος> ::= + <δυαδικός> ::= + / * % <α_έκφραση> ::= <αριθµός> (<α_έκφραση>) <µοναδιαίος> <α_έκφραση>) <α_έκφραση> <δυαδικός> <α_έκφραση> αναδροµικός ορισµός Σηµείωση: Αριθµός σηµαίνει απόλυτη τιµή, αριθµητική µεταβλητή, ή κλήση συνάρτησης η οποία επιστρέφει αριθµό. Συντακτικά Ορθές x + y / 2 ( x / y) * 2 ((3)) +(9 + z) 5 x Συντακτικά Λανθασµένες ((3 + z) / 2 2x / y 5 +* 9 6 ^ 4 Σηµείωση: εν υπάρχει τελεστής που υψώνει στη δύναµη. Η λειτουργία παρέχεται από τη συνάρτηση pow που ορίζεται στη βιβλιοθήκη math. 17

Εκτέλεση Προγράµµατος Με διαλογικό τρόπο (interactive mode) Με χρήση αρχείων για είσοδο/έξοδο (batch mode) Πρόγραµµα Χρήστης διαλογικός τρόπος πρόγραµµα αρχείο µε δεδοµένα εισόδου αρχείο αποτελεσµάτων Παράδειγµα 67 32 89 28 18 10 0 Αρχείο data 18

#include <stdio.h> int main (void) { double total = 0.0, value, average; int numbers = 0; do { scanf( %lf, &value); if (value > 0.0) {total = total + value; numbers = numbers + 1;} } while (value > 0.0); if (numbers == 0) printf( \nerror No Data ); else {average = total / numbers; printf( \n\naverage is %f \n, average);} } return 0; $ gcc o aver aver.c $ aver < data Average is 40.666667 aver.c $ aver < data > res Average is 40.666667 αρχείο res Επανακατεύθυνση σε αρχεία file redirection 19

Ρητή Αναφορά σε Αρχεία #include <stdio.h> int main (void) { double total = 0.0, value, average; int numbers = 0; FILE *inp, *outp; /* δείκτες σε αρχεία */ inp = fopen( data, r ); /* άνοιγµα αρχείου εισόδου */ outp = fopen( res, w ); /* άνοιγµα αρχείου εξόδου */ do { fscanf(inp, %lf, &value); if (value > 0.0) {total = total + value; numbers = numbers + 1;} } while (value > 0.0); if (numbers == 0) fprintf(outp, \nerror No Data ); else {average = total / numbers; fprintf(outp, \n\naverage is %f \n, average);} } fclose(inp); /* κλείσιµο αρχείου εισόδου */ fclose(outp); /* κλείσιµο αρχείου εξόδου */ return 0; $ gcc o aver aver.c $ aver 67 32 89 28 18 10 0 data aver Average is 40.666667 res 20

Κατηγορίες Εντολών <εντολή> ::= <απλή> <σύνθετη> <απλή> ::= <ανάθεση> <επιλογή> <επανάληψη> <κλήση_συνάρτησης> <σύνθετη> ::= {<ακολουθία>} <ακολουθία> ::= <εντολή> ; <εντολή> ; <ακολουθία> δηλαδή, σύνθετη εντολή είναι {εντολή 1 ; εντολή 2 ;. εντολή n ;} 21