250 likes | 416 Views
Συναρτήσεις ( συν). Τυπος επιστροφης void. void display_fatal_error() { printf(“Fatal error exiting program<br>”); }. void display_fatal_error() { printf(“Fatal error exiting program<br>”); return; }. Εισοδος/Εξοδος. Συναρτήσεις εισόδου/εξόδου (Ι/Ο input/output)
E N D
Συναρτήσεις (συν) • Τυπος επιστροφης void void display_fatal_error() { printf(“Fatal error exiting program\n”); } void display_fatal_error() { printf(“Fatal error exiting program\n”); return; } epl-131
Εισοδος/Εξοδος • Συναρτήσεις εισόδου/εξόδου (Ι/Ο input/output) • Συνάρτηση εισόδου – αντιγράφει δεδομένα από μονάδα εισόδου σε χώρο στην μνήμη, πχ scanf, getchar • Συνάρτηση εξόδου – εκτυπώνει σε μονάδα εξόδου πληροφορίες αποθηκευμένες στην μνήμη, πχ printf, putchar • Η βιβλιοθήκη stdio περιέχει βασικές συναρτήσεις εισόδου/εξόδου epl-131
printf • Σύνταξη: • printf(μορφη εξοδου); • printf(μορφη εξοδου, λίστα εκφρασεων); παραμετροι (arguments) int count = 37; printf(“The total count is %d\n”, count); string ορισμα ειδικος χαρακτηρας εκφραση (μεταβλητη) epl-131
Μορφή Εξόδου • Συνταξη: • ξεκινα “ και τελειωνει με’’ • Περιλαμβανει: strings, ορισματα, ειδικους χαρακτηρες • Σημασια: • τυπωνειverbatim τα strings • ορισματα και ειδικοι χαρακτηρες... epl-131
Ορισματα • Σύνταξη: %d %c %f %e • Σημασια: αντικαταστησε ορισμα με τιμη εκφρασης απο την λιστα εκφρασεων • %d ακεραια τιμη • %c χαρακτηρας • %f κινητη υποδιαστολης μονης ακριβειας • %e κινητη υποδιαστολης διπλης ακριβειας • Αριθμος ορισματων ιδιος με το μεγεθος λιστας εκφρασεων και σειρα και τυποι να ταιριαζουν epl-131
Ειδικοι Χαρακτηρες (escape sequences) • Σημασια: • \n μεταφερε δρομεα στην επομενη γραμμη • \t μεταφερε δρομεα στην επομενη δεξια στηλη • \’’ εκτυπωσε ’’ • \\ εκτυπωσε \ • \a ηχησε κουδουνι epl-131
1 2 2 - 3 4 3 4 4 Μορφοποιησής (fomatting) • Σύνταξη: %nd • Σημασια: χρησιμοποιηση n θεσεων για την εκτυπωση του ακέραιου αριθμού. Εάν ο αριθμός έχει λιγότερα από nψηφία, τοποθετούνται κενά στα αριστερά (δεξιά ευθυγράμμιση). Εάν ο αριθμός έχει περισσότερα ψηφία, εκτυπώνονται όλα • printf(\n%3d %3d\n\n%2d %3d, 1, 22, 33, -444); epl-131
Μορφοποιησής (fomatting) • Σύνταξη: %n.mf • Σημασια: χρησιμοποιηση n θεσεων για την εκτυπωση του πραγματικου αριθμού (συμπεριλαμβανει .) και m ψηφια να ειναι δεκαδικα. • Σύνταξη: %.mf (m δεκαδικα ψηφια) • printf(%4.2f %3.6f %3.2f, 4.4, 22.1, 466.00); 4.40 22.100000 466.00 epl-131
scanf • Σύνταξη: • scanf(μορφη εισοδου, λίστα διευθυνσεων μεταβλητων); int numbera, numberb; scanf(“%d%d”,&numbera, &numberb); ορισματα διευθυνσεις μεταβλητων epl-131
Μορφη Eισόδου • Συνταξη: • ξεκινα “ και τελειωνει με’’ • Περιλαμβανει: ορισματα • Σημασια: • τυπος ορισματων και σειρα τιμων που θα εισαχθουν • τυποι αναλογοι με printf (πχ %d %f %e %c κτλ) • %d, %f και %e διαπερνουν white space epl-131
Τελεστης διευθυνσης και scanf • Συνταξη: &<ονομα μεταβλητης> • Σημασια: δινει την διευθυνση της μεταβλητης πχ &numbera • scanf αποθηκευει τιμες στις μεταβλητες χρησιμοποιοντας τις διευθυνσεις τους epl-131
scanf int numbera, numberb; printf(“Enter two integer numbers: ”); scanf(“%d%d”,&numbera, &numberb); printf(“The two numbers entered are %d %d\n\n”, numbera, numberb); epl-131
9475 3201 23 137 scanf (πχ) int numbera, numberb; 0 … … ... … … … … ... scanf(“%d%d”,&numbera,&numberb); 98760060 Χρηστης: 23 137 διευθυνσεις 98760064 τιμες epl-131
Tελεστής Ανάθεσης (assignment) • Συνταξη: μεταβλητη = εκφρασή; • area = PI * radius * radius; • count = count + 1; • new_number = old_number; • average = total / count; • Η τιμη της εκφρασης αποθηκευεται στην μεταβλητη epl-131
Τελεστές (operators) • Αριθμητικοι για int, char, float, double • δυαδικοί (binary) + - * / % μοναδιαιoί (unary) - + • c=a+b; προσθεση • c=a-b; αφαιρεση • c=a*b; γινομενο • c=a/b; διαιρεση • c=a%b; υπολοιπο (για int και char μονο) • c=-a; ή c = -a + b; • c=+a; epl-131
Τελεστης % Εαν x and y ειναι int ή char x y x/y x % y 4 2 2 0 4 3 1 1 35 8 epl-131
Αριθμητικές Εκφράσεις • Συνταξη: a τ b ή τ a • τ ειναι ο τελεστης (operator) • a,b ειναι τελεσταιοι (operands) • τελεσταιοι μπορει να ειναι • σταθερες • μεταβλητες • κληση συναρτησης που επιστρεφει αριθμο • εκφραση (χρηση παρενθέσεων) epl-131
σταθερα, μεταβλητη ή κληση συναρτησης Σύνταξη Αριθμητικής Εκφρασης • αριθ_έκφραση>::= <αριθμός> (<αριθ_έκφραση>) <μοναδιαίος> <αριθ_έκφραση>| <αριθ_έκφραση><δυαδικός><αριθ_έκφραση> • μοναδιαίος::= + • <δυαδικός> ::= + / * % epl-131
Κανόνας Προτεραιότητας Τελεστών • Τελεστές στην ίδια έκφραση αποτιμούνται σύμφωνα με τις προτεραιότητές τους. Οι προτεραιότητες των αριθμητικών τελεστών, σε φθίνουσα σειρά, είναι: • μοναδιαίοι +, υψηλότερη προτεραιότητα • *, /, % ενδιάμεση προτεραιότητα • δυαδικοί +, χαμηλότερη προτεραιότητα epl-131
Κανόνας Εταιρικότητας • Μοναδιαίοι τελεστέοι στην ίδια υποέκφραση και με την ίδια προτεραιότητα αποτιμούνται από τα δεξιά προς τα αριστερά – δεξιά εταιρικότητα • Δυαδικοί τελεστέοι στην ίδια υποέκφραση και με την ίδια προτεραιότητα αποτιμούνται από τα αριστερά προς τα δεξιά – αριστερή εταιρικότητα epl-131
Κανόνας Παρενθέσεων • Κάθε έκφραση σε παρένθεση αποτιμείται ξεχωριστά. Φωλιασμένες παρενθετικές εκφράσεις, ((..)), αποτιμούνται από τα μέσα προς τα έξω • Οπου εισαστε αβεβαιοι χρησιμοποιαται παρενθεσεις epl-131
ψηλοτερης προτεραιοτητας Παράδειγμα Αποτίμησης int x = 5; y= 3; z = -4; Εκφραση Τιμη (x-y)*z -8 x- (y* z) 17 x - y * z 17 epl-131
Παράδειγμα Αποτίμησης int x = 5; y= 3; z = -4; Εκφραση Τιμη (x-y)*-z x- (y* -z) x - y * -z 3 2 1 epl-131
Παράδειγμα Αποτίμησης x * y * z + a / b – c * d (((x * y) * z) + (a / b)) – (c * d) epl-131
Τύπος Εκφρασης • Οριζεται απο τους τυπων των τελεστων • char, int, float, double • int τ int int 5/2 2 • int τ double double 5/2.0 2.5 • int τ char int 5+’a’ 102 • int τ float float epl-131