Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

1 Εντολες Επιλογης (Selection) Εντολες if, if-else, ? : –nested if-else Εκφραση Συνθηκης –Σχεσιακοι Τελεστες –Λογικοι Τελεστες Εντολη switch (και το break)

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "1 Εντολες Επιλογης (Selection) Εντολες if, if-else, ? : –nested if-else Εκφραση Συνθηκης –Σχεσιακοι Τελεστες –Λογικοι Τελεστες Εντολη switch (και το break)"— Μεταγράφημα παρουσίασης:

1 1 Εντολες Επιλογης (Selection) Εντολες if, if-else, ? : –nested if-else Εκφραση Συνθηκης –Σχεσιακοι Τελεστες –Λογικοι Τελεστες Εντολη switch (και το break)

2 2 Δομες Ελεγχου Ενα προγραμμα αποτελειται απο –Ακολουθιες πχ { εντολη;εντολη;…} –Εκλογηπχ if(){} –Επαναληψηπχ while{}

3 3 Eντολη if if (εκφραση) εντολή; if (εκφραση){ εντολη; … }

4 4 Eντολη if-else if (εκφραση) εντολή; else εντολή; if (εκφραση){ εντολη;... } else{ εντολη;... }

5 5 Eντολη ? : Συνταξη: (εκφραση) ? εντοληΑ : εντοληΒ; Σημασια: Εαν η τιμη της εκφρασης ειναι διαφορη του μηδεν εκτελα την εντοληΑ αλλιως εκτελα την εντοληΒ, πχ: x = (y>100) ? y : 0;

6 6 if Σημασια: εαν η εκφραση(συνθηκη) παιρνει τιμη διαφορη του μηδεν τοτε εκτελουνται οι εξαρτομενες εντολες αλλιως συνεχισε με τις εντολες που ακολουθουν το if block if (length <= 0){ printf(‘‘error: length should be possitive\n’’); exit(0); }

7 7 if-else Σημασια: εαν η εκφραση(συνθηκη) παιρνει τιμη διαφορη του μηδεν τοτε εκτελουνται οι εντολες του if block αλλιως εκτελουνται οι εντολες του else block if (temp > 0){ printf(‘‘above freezing.\n’’); } else{ printf(‘‘freezing!\n’’); }

8 8 Παραδειγμα if-else Γραψετε την συναρτηση min που παιρνει παραμετρους δυο ακεραιους αριθμους και επιστρεφει τον μικροτερο.

9 9 int min(int a, int b) { int minimum; if (a < b) minimum = a; else minimum = b; return minimum; }

10 10 int min(int a, int b) {int minimum; if (a < b) minimum = a; else minimum = b; return minimum; } int min(int a, int b) {int minimum; minimum = b; if (a < b) minimum = a; return minimum; } int min(int a, int b) { if (a < b) return a; else return b; } int min(int a, int b) { if (a < b) return a; return b; }

11 11 Παραδειγμα με Φωλιασμα (nested if-else) Γραψετε την συναρτηση min_three που παιρνει παραμετρους τρεις ακεραιους αριθμους και επιστρεφει τον μικροτερο.

12 12 int min_three(int a, int b, int c) { int minimum; if (a < b) if (a < c) minimum = a; else minimum = c; else if (b < c) minimum = b; else minimum = c; return minimum; }

13 13 int min_three(int a, int b, int c) { int minimum; if (a < b) minimum = a; else minimum = b; if (c < minimum) minimum = c; return minimum; }

14 14 Παραδειγμα nested if-else Γραψετε την συναρτηση detect που παιρνει μια ακεραια παραμετρο και επιστρεφει –1 εαν ειναι θετικη, –0 εαν ειναι 0 και –-1 εαν ειναι αρνητικη

15 15 int detect(int number) { int code; if (number > 0) code = 1; else if (number < 0) code = -1; else /* number einai 0 */ code = 0; return code; }

16 16 int detect(int number) { int code; if (number > 0){ code = 1; } else{ if (number < 0){ code = -1; } else{ /* number einai 0 */ code = 0; } return code; }

17 17 int detect(int number) { int code; if (number > 0) code = 1; else if (number < 0) code = -1; else /* number einai 0 */ code = 0; return code; }

18 18 Σχεσιακοί Τελεστές (Relational Operators) Δυαδικοι Τελεστες <μικρότερο από >μεγαλύτερο από <=μικρότερο ή ίσο με >=μεγαλύτερο ή ίσο με ==ίσο με !=διάφορο του Αποτιμουνται σε 0 (ψευδης) ή 1 (αληθης) Τυποι τελεσταιων int, char, float, double, *

19 19 Σχεσιακοί Τελεστές (Relational Operators) t = (x < y); k = (i >= 8); a = (b != b); (f == ) (‘a’ >= ‘b’) –‘a’<‘b’<..<‘z’ –‘A’<‘B’<..<‘Z’ –‘0’<‘1’<..<‘9’ d = (e <= ‘3’);

20 20 Λογικοί Τελεστές (Logical Operators) && σύζευξη, δυαδικός τελεστής (and)  διάζευξη, δυαδικός τελεστής (or) !άρνηση, μοναδιαίος τελεστής (not) –Αποτιμουνται σε 0 ή 1 0 (δεν ισχυει, ψευδης ή false) 1 (ισχυει, αληθης ή true) –Tυποι τελεσταιων int, char

21 21 Eκφρασεις με Λογικους και Σχεσιακους Τελεστες (πεδιο) t = (A>=0 && A<=100); y = (s 100); !(s 100) (i<10 && j==1)

22 22 Λογικοι Τελεστες t = (A>=0 && A<=100); t1 = (A>= 0); t2 = (A <= 100); t = (t1 && t2);

23 23 Πίνακες Αλήθειας για && τελεστέος 1 τελεστέος 2 && ΔΤ0ΔΤ01 ΔΤ0 00 0ΔΤ Oταν χρειαζεται να ελεγξουμε πως ολες οι υποεκφρασεις ισχυουν, πχ (a && b)

24 24 Πίνακες Αλήθειας για || τελεστέος 1 τελεστέος 2 || ΔΤ0ΔΤ01 ΔΤ0 01 0ΔΤ Oταν χρειαζεται να ελεγξουμε πως τουλαχιστο μια υποεκφραση ισχυει πχ (a || b)

25 25 Πινακας Αληθειας για ! τελεστέος! ΔΤ00 01 Oταν χρειαζεται να ελεγξουμε πως ισχυει το αντιθετο μιας εκφρασης πχ !(a && b)

26 26 Συμπλήρωμα Συνθηκών – Complementing Conditions Το συμπλήρωμα μίας συνθήκης είναι η άρνησή της, π.χ. ΣυνθήκηΣυμπλήρωμα item == SENT!(item == SENT) ή item != SENT item > SENTitem <= SENT (n % 2) == 0(n % 2) != 0

27 27 Κανόνες DeMorgan !(E 1 && E 2 )  !E 1  !E 2 !(E 1  E 2 )  !E 1 && !E 2 !(age > 25 && (status == S  status == D))  !(age > 25) || !(status == S || status == D)  age <= 25 || (status != S && status != D)

28 28 Προτεραιότητες κλησεις συναρτησεων υψηλοτερη ! +  & (μοναδιαίοι τελεστές) * / % +  = > == != &&  = χαμηλότερη

29 29 Αποτίμηση Λογικών Εκφράσεων Η αποτίμηση αρχίζει από τα αριστερά και προχωρεί μέχρι το σημείο που χρειάζεται να προχωρήσει (short-circuit evaluation), π.χ. –0 && Ε  0 η αποτίμηση της έκφρασης Ε δεν χρειάζεται –1  Ε  1 η αποτίμηση της έκφρασης Ε δεν χρειάζεται

30 30 Σειρά Συνθηκών σε μία Λογική Έκφραση για λόγους αποδοτικότητας σειρά των συνθηκών σε μία λογική έκφραση, π.χ. –(y / x) > 2 && x != 0 Εάν x ισούται με 0, run time error (λάθος). Όμως η ακόλουθη διατύπωση δεν έχει πρόβλημα –x != 0 && (y / x) > 2

31 31 Σειρά Συνθηκών σε μία Λογική Έκφραση Γενικά σε μία σύζευξη, Ε 1 && Ε 2, η συνθήκη Ε 1 πρέπει να αποτελεί τον αριστερό τελεστέο, εάν στην περίπτωση που αποτιμείται σε 0, τυχόν αποτίμηση της Ε 2 θα οδηγήσει σε πρόβλημα. Με αυτή την σειρά αποτρέπεται η αποτίμηση της Ε 2. Αναλογο για διαζευξη Ε1||Ε2

32 32 Μεταφραση Εκφρασεων σε C x και y μεγαλυτερα του z x ειναι ισο με το 2.5 ή με το a ειναι στο πεδιο απο b μεχρι και c α ειναι εξω απο το πεδιο b μεχρι και c x να ειναι μικροτερο του 0 ή μεταξυ 10 και 1000 l να ειναι english character

33 33 Μεταφραση Εκφρασεων σε C x και y μεγαλυτερα του z –(x>z && y>z) x ειναι ισο με το 2.5 ή με το –(x==2.5 || x==10.32) a ειναι στο πεδιο απο b μεχρι και c –(a>=b && a<=c) α ειναι εξω απο το πεδιο b μεχρι και c –!(a>=b && a c)

34 34 Μεταφραση Εκφρασεων σε C x να ειναι μικροτερο του 0 ή μεταξυ 10 και 1000 –(x =10 && x<=1000) l να ειναι english character –(l>=‘a’ && l<=‘z’) || (l<=‘A’ && l<=‘Z’)

35 35 Συνταξη Λογικης Εκφρασης ::=   ( )  !  && |  ::= true(ΔΤ0)  false (0)

36 36 Εντολη switch switch (έκφραση_ελέγχου) { σύνολο_ετικεττών_1 εντολές_1 break; …………………….. σύνολο_ετικεττών_n εντολές_n break; default: εντολές_d }

37 37 Εντολη switch Η έκφραση_ελέγχου πρέπει να είναι βαθμωτού τύπου, π.χ. char ή int, αλλά όχι float ή double. εντολές_n –εντολή; εντολή;…; Συνολο Ετικεττων –case constant_expression: case constant_expression:...

38 38 char letter_grade; int count_a, count_b, count_other; count_a = count_b = count_other = 0; …… switch(letter_grade){ case ‘A’: counta++; message_excelent(); break; case ‘B’: countb++; message_very_good(); break; case ‘C’: case ‘D’: case ‘F’: count_other++; message_other(); break; default: message_error(); }

39 39 Παραδειγμα Γραψε την συναρτηση convert_stream που παιρνει μια παραμετρο τυπου χαρακτηρα και επιστρεφει 0 εαν ο χαρακτηρας ειναι ασπρο διαστημα και 1 αλλιως Τι ειναι ασπρο διαστημα;

40 40 #define WHITE_SPACE0 #define NOT_WHITE_SPACE1 int convert_stream(char c) { int code; if (c== ‘ ’ || c==‘\n’ || c==‘\t’) code = WHITE_SPACE; else code = NOT_WHITE_SPACE; return code; } 1233#4%^&*asdf

41 41 Παράδειγμα Γραψετε διαδικασια display_grade_message που παιρνει μια παραμετρο, τον βαθμο ενος φοιτητη μεταξυ 0 και 100, και τυπωνει τα μυνηματα: –πανω απο 85Excellent –65-84Very Good –50-64Good –κατω απο 50Failure

42 42 void display_grade_message(int weighted_aver) { if (weighted_aver >= 85) printf(  \nExcellent  ); else if (weighted_aver = 65) printf(  \nVery Good  ); else if (weighted_aver 50) printf(  \nGood  ); else printf(  \nFailure  ); }

43 43 Παράδειγμα Ένας χρόνος είναι δίσεχτος εάν διαιρείται ακριβώς με το 4, εκτός και εάν διαιρείται ακριβώς με το 100, στην οποία περίπτωση θα πρέπει να διαιρείται ακριβώς και με το 400.

44 44 int is_leap (int year) { int disektos; if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) disektos = 1; else disektos = 0; return disektos; }

45 45 int is_leap (int year) { return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); }

46 46 int is_leap (int year) { int disektos; if (year % 4 == 0) if (year % 100 == 0) if (year % 400 == 0) disektos = 1; else disektos = 0; else disektos = 1; else disektos = 0; return disektos; }

47 47 Διακλάδωση μόνο στη κατεύθυνση του όχι Ο πιο συνηθισμένος τρόπος φωλιάσματος επιλογών (φυσικός τρόπο έκφρασης), είναι όταν η διακλάδωση γίνεται μόνο στην κατεύθυνση του όχι. Έτσι υπάρχει μία αλυσίδα επιλογών.

48 48 int is_leap (int year) { int disektos; if (year % 4 == 0) if (year % 100 != 0) disektos = 1; else if (year % 400 == 0) disektos = 1; elsedisektos = 0; else disektos = 0; return disektos; }

49 49

50 50 Κοινα Λαθη = αντι == –if (x=10) if (x==10) συνθηκη χωρις παρενθεση –if x>4if (x>4) Μεταφραση απο μαθηματικα σε C, απο 0 μεχρι 4: –(0 <= x <= 4) αντι (0 <= x && x<= 4)

51 51 Λαθος αντιστοιχια if-else Λαθος: if (x > 0) sum = sum + x; printf(  Greater than 0  ); else printf(  Less than 0  ); Ορθο: if (x > 0){ sum = sum + x; printf(  Greater than 0  ); } else printf(  Less than 0  );


Κατέβασμα ppt "1 Εντολες Επιλογης (Selection) Εντολες if, if-else, ? : –nested if-else Εκφραση Συνθηκης –Σχεσιακοι Τελεστες –Λογικοι Τελεστες Εντολη switch (και το break)"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google