Συναρτήσεις ( συν)
DESCRIPTION
Συναρτήσεις ( συν). Τυπος επιστροφης void. void display_fatal_error() { printf(“Fatal error exiting program\n”); }. void display_fatal_error() { printf(“Fatal error exiting program\n”); return; }. Εισοδος/Εξοδος. Συναρτήσεις εισόδου/εξόδου (Ι/Ο input/output) - PowerPoint PPT PresentationTRANSCRIPT
7/2/2000 epl-131 1
Συναρτήσεις (συν)
• Τυπος επιστροφης voidvoiddisplay_fatal_error(){
printf(“Fatal error exiting program\n”);}
voiddisplay_fatal_error(){
printf(“Fatal error exiting program\n”);return;
}
7/2/2000 epl-131 2
Εισοδος/Εξοδος
• Συναρτήσεις εισόδου/εξόδου (Ι/Ο input/output)– Συνάρτηση εισόδου – αντιγράφει δεδομένα από
μονάδα εισόδου σε χώρο στην μνήμη, πχ scanf, getchar
– Συνάρτηση εξόδου – εκτυπώνει σε μονάδα εξόδου πληροφορίες αποθηκευμένες στην μνήμη, πχ printf, putchar
– Η βιβλιοθήκη stdio περιέχει βασικές συναρτήσεις εισόδου/εξόδου
7/2/2000 epl-131 3
printf
• Σύνταξη:– printf(μορφη εξοδου);– printf(μορφη εξοδου, λίστα εκφρασεων);
int count = 37;printf(“The total count is %d\n”, count);
παραμετροι (arguments)
ορισμα ειδικοςχαρακτηρας
string εκφραση (μεταβλητη)
7/2/2000 epl-131 4
Μορφή Εξόδου
• Συνταξη:– ξεκινα “ και τελειωνει με ’’– Περιλαμβανει: strings, ορισματα, ειδικους χαρακτηρες
• Σημασια: – τυπωνει verbatim τα strings– ορισματα και ειδικοι χαρακτηρες...
7/2/2000 epl-131 5
Ορισματα
• Σύνταξη: %d %c %f %e
• Σημασια: αντικαταστησε ορισμα με τιμη εκφρασης απο την λιστα εκφρασεων
• %d ακεραια τιμη• %c χαρακτηρας• %f κινητη υποδιαστολης μονης ακριβειας • %e κινητη υποδιαστολης διπλης ακριβειας
• Αριθμος ορισματων ιδιος με το μεγεθος λιστας εκφρασεων και σειρα και τυποι να ταιριαζουν
7/2/2000 epl-131 6
Ειδικοι Χαρακτηρες (escape sequences)
• Σημασια: – \n μεταφερε δρομεα στην επομενη γραμμη – \t μεταφερε δρομεα στην επομενη δεξια στηλη– \’’ εκτυπωσε ’’– \\ εκτυπωσε \– \a ηχησε κουδουνι
7/2/2000 epl-131 7
Μορφοποιησής (fomatting)• Σύνταξη: %nd• Σημασια: χρησιμοποιηση n θεσεων για την εκτυπωση
του ακέραιου αριθμού. Εάν ο αριθμός έχει λιγότερα από n ψηφία, τοποθετούνται κενά στα αριστερά (δεξιά ευθυγράμμιση). Εάν ο αριθμός έχει περισσότερα ψηφία, εκτυπώνονται όλα
• printf(\n%3d %3d\n\n%2d %3d, 1, 22, 33, -444);
1 2 2
3 3 - 4 4 4
7/2/2000 epl-131 8
Μορφοποιησής (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
7/2/2000 epl-131 9
scanf
• Σύνταξη:– scanf(μορφη εισοδου, λίστα διευθυνσεων μεταβλητων);
int numbera, numberb;scanf(“%d%d”,&numbera, &numberb);
ορισματα διευθυνσειςμεταβλητων
7/2/2000 epl-131 10
Μορφη Eισόδου
• Συνταξη:– ξεκινα “ και τελειωνει με ’’– Περιλαμβανει: ορισματα
• Σημασια: – τυπος ορισματων και σειρα τιμων που θα εισαχθουν– τυποι αναλογοι με printf (πχ %d %f %e %c κτλ)– %d, %f και %e διαπερνουν white space
7/2/2000 epl-131 11
Τελεστης διευθυνσης και scanf
• Συνταξη: &<ονομα μεταβλητης>
• Σημασια: δινει την διευθυνση της μεταβλητης
πχ &numbera
• scanf αποθηκευει τιμες στις μεταβλητες χρησιμοποιοντας τις διευθυνσεις τους
7/2/2000 epl-131 12
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);
7/2/2000 epl-131 13
scanf (πχ)
0……...…
………...
int numbera, numberb;
scanf(“%d%d”,&numbera,&numberb);98760060
98760064
διευθυνσεις
τιμες
Χρηστης: 23 1379475
3201
23
137
7/2/2000 epl-131 14
Tελεστής Ανάθεσης (assignment)
• Συνταξη: μεταβλητη = εκφρασή;• area = PI * radius * radius;
• count = count + 1;
• new_number = old_number;
• average = total / count;
• Η τιμη της εκφρασης αποθηκευεται στην μεταβλητη
7/2/2000 epl-131 15
Τελεστές (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;
7/2/2000 epl-131 16
Τελεστης %
Εαν x and y ειναι int ή char
x y x/y x % y
4 2 2 0
4 3 1 1
35 8
7/2/2000 epl-131 17
Αριθμητικές Εκφράσεις
• Συνταξη: a τ b ή τ a– τ ειναι ο τελεστης (operator)– a, b ειναι τελεσταιοι (operands)– τελεσταιοι μπορει να ειναι
• σταθερες
• μεταβλητες
• κληση συναρτησης που επιστρεφει αριθμο
• εκφραση (χρηση παρενθέσεων)
7/2/2000 epl-131 18
Σύνταξη Αριθμητικής Εκφρασης
αριθ_έκφραση>::= <αριθμός> (<αριθ_έκφραση>) <μοναδιαίος> <αριθ_έκφραση>|
<αριθ_έκφραση><δυαδικός><αριθ_έκφραση>
μοναδιαίος ::= +• <δυαδικός> ::= + / * %
σταθερα, μεταβλητη ήκληση συναρτησης
7/2/2000 epl-131 19
Κανόνας Προτεραιότητας Τελεστών
• Τελεστές στην ίδια έκφραση αποτιμούνται σύμφωνα με τις προτεραιότητές τους. Οι προτεραιότητες των αριθμητικών τελεστών, σε φθίνουσα σειρά, είναι:– μοναδιαίοι +, υψηλότερη προτεραιότητα– *, /, % ενδιάμεση
προτεραιότητα– δυαδικοί +, χαμηλότερη
προτεραιότητα
7/2/2000 epl-131 20
Κανόνας Εταιρικότητας
• Μοναδιαίοι τελεστέοι στην ίδια υποέκφραση και με την ίδια προτεραιότητα αποτιμούνται από τα δεξιά προς τα αριστερά – δεξιά εταιρικότητα
• Δυαδικοί τελεστέοι στην ίδια υποέκφραση και με την ίδια προτεραιότητα αποτιμούνται από τα αριστερά προς τα δεξιά – αριστερή εταιρικότητα
7/2/2000 epl-131 21
Κανόνας Παρενθέσεων
• Κάθε έκφραση σε παρένθεση αποτιμείται ξεχωριστά. Φωλιασμένες παρενθετικές εκφράσεις, ((..)), αποτιμούνται από τα μέσα προς τα έξω
• Οπου εισαστε αβεβαιοι χρησιμοποιαται παρενθεσεις
7/2/2000 epl-131 22
Παράδειγμα Αποτίμησης
int x = 5; y= 3; z = -4;
Εκφραση Τιμη
(x-y)*z -8
x- (y* z) 17
x - y * z 17
ψηλοτερης προτεραιοτητας
7/2/2000 epl-131 23
Παράδειγμα Αποτίμησης
int x = 5; y= 3; z = -4;
Εκφραση Τιμη
(x-y)*-z
x- (y* -z)
x - y * -z123
7/2/2000 epl-131 24
Παράδειγμα Αποτίμησης
x * y * z + a / b – c * d
(((x * y) * z) + (a / b)) – (c * d)
7/2/2000 epl-131 25
Τύπος Εκφρασης
• Οριζεται απο τους τυπων των τελεστων
• 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