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

Σχετικά έγγραφα
Προγραμματισμό για ΗΜΥ

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

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

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

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

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

8. Συνθήκες ελέγχου, λογικοί τελεστές

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

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

Υπολογισμός - Εντολές Ελέγχου

Η γλώσσα προγραμματισμού C

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

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

Η γλώσσα προγραμματισμού C

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

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

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

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

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

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

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

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

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

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

Υπολογισμός - Εντολές Επανάληψης

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

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

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

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

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

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

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

Προσέξτε πως η παράσταση μπορεί να περιλαμβάνει όχι μόνο μία τιμή ή μια άλλη μεταβλητή αλλά μια ολόκληρη μαθηματική παράσταση, όπως η εξής:

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

ιαδικαστικός Προγραμματισμός

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

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Εντολές ελέγχου ροής if, for, while, do-while

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

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

3. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Β' μέρος: switch και :? )

Διάλεξη 5η: Εντολές Επανάληψης

Εντολές επιλογής Επαναλήψεις (if, switch, while)

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

Παίρνοντας Αποφάσεις 1

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

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

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

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

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

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

Κεφάλαιο : Επαναλήψεις (for, do-while)

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

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

Προγραμματισμός Ι (HY120)

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

EΒ ΟΜΑ Α 3 Η. Άλλοι τελεστές καταχώρησης: += -= *= /= %= x += 5; σηµαίνει x = x + 5; k *= 7; σηµαίνει k = k * 7; sum %= 15; σηµαίνει sum = sum % 15;

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

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

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

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

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

scanf() scanf() stdin scanf() printf() int float double %lf float

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

ΕΠΛ 034: Εισαγωγήστον ΠρογραµµατισµόγιαΗΜΥ

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

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

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ

a = 10; a = k; int a,b,c; a = b = c = 10;

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 4

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

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

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

Προγραμματισμός I (Θ)

2ο σετ σημειώσεων. 1 Εντολές εκτέλεσης υπό συνθήκη. 19 Μαρτίου 2012

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

Η γλώσσα προγραμματισμού C

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 3 Εντολές Επιλογής. Γιώργος Λαμπρινίδης Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Προγραμματισμός Ι. Θεματική ενότητα 4: Έλεγχος ροής Προτάσεις υπό συνθήκη διακλάδωσης

Κεφάλαιο 4ο: Εντολές επιλογής

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

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

Transcript:

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων Αχιλλέας Αχιλλέως, Τµήµα Πληροφορικής, Πανεπιστήµιο Κύπρου Email: achilleas@cs.ucy.ac.cy

Κεφάλαιο 6 ΣυνθήκεςΈλεγχου (if-else, switch) και Λογικοίτελεστές / παραστάσεις

Θέµατα ιάλεξης οµές Εκτέλεσης οµές Επιλογής (Selection) Τελεστές/Παραστάσεις Σχεσιακοί Τελεστές (Relational Operators) Λογικοί Τελεστές (Logical Operators) Εκφράσεις µε Λογικούς και Σχεσιακούς Τελεστές Μετατροπή Εκφράσεων σε C

οµέςεκτέλεσης ιαδοχική εκτέλεση Στηρίζεταιστηναπλήπαράθεσηεκφράσεων / εντολών, ηµιαµετάτηνάλλη Εκτέλεση µε επιλογή Η ροή του προγράµµατος διακόπτεται για να παρθεί µια απόφαση, να γίνει κάποια επιλογή Το αποτέλεσµα της απόφασης καθορίζει την κατεύθυνση της ροής του προγράµµατος Εκτέλεση µε επανάληψη Μια οµάδα εκφράσεων / εντολών εκτελείται περισσότερο από µια φορά

οµέςεπιλογής (Selection) Έκφραση Συνθήκης Σχεσιακοί/Συγκριτικοί Τελεστές Λογικοί Τελεστές Εντολές if, if-else φωλιασµένα if-else Εντολή switch

ΠαράδειγµαΕπιλογής Γράψετε κώδικα που παίρνει παραµέτρους δυο ακέραιους αριθµούς και τυπώνει τον µικρότερο.

Ψευδοκώδικας διάβασε τους ακέραιους α, β αν (α < β) τότε τύπωσε α αλλιώς τύπωσε β

Συνθήκηστιςδοµέςεπιλογών αν (συνθήκη) τότε εντολές Α αλλιώς εντολές Β συνθήκη : λογική παράσταση που αποτιµάται σε true-αλήθεια (1) ή false-λάθος (0)

Λογικέςπαραστάσεις Μια λογική παράσταση (ΛΠ) είναι ανάλογη µιας µαθηµατικής παράστασης, µε τη διαφορά ότι το αποτέλεσµα µπορεί να είναι µόνο αλήθεια (1) ή λάθος (0) Λογικές παραστάσεις συνθέτονται χρησιµοποιώντας σχεσιακούς τελεστές υο λογικές παραστάσεις µπορούν να συνδυαστούν µε ένα λογικό τελεστή

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

Παραδείγµατα (x < y) t = (x < y); Αν (t)τότε printf( true\n ); k = (i >= 8); a = (b!= c); (f == 2.3456) ΠΡΟΣΟΧΗποτέδενσυγκρίνουµεδυο float ή double µε ισοτητα ( a >= d ) a < b <..< z A < B <..< Z 0 < 1 <..< 9 έστε ASCII κώδικα

ΛογικοίΤελεστές (Logical Operators) Συνδυάζουν δύο λογικές παραστάσεις σε µια σύνθετη λογική παράσταση && σύζευξη, δυαδικός τελεστής (AND) όλες οι υποεκφράσεις ισχύουν διάζευξη, δυαδικός τελεστής (OR) τουλάχιστον µια υποέκφραση ισχύει! άρνηση, µοναδιαίος τελεστής (NOT) ισχύει το αντίθετο µιας έκφρασης Αποτιµούνται σε 0 ή 1 0 (δεν ισχύει, ψευδής ή false) 1 (ισχύει, αληθήςήtrue)

ΕκφράσειςµεΛογικούςκαι ΣχεσιακούςΤελεστές Παραδείγµατα: (A>=0 && A<=100); FALSE TRUE FALSE 0 100 A (s<10 s>100); TRUE FALSE TRUE 10 100 s!(s<10 s>100) (s>=10 && s<=100) (i<10 && j==1)

ΠροτεραιότητεςΤελεστών ()! * / % + < <= >= > ==!= && = υψηλότερη χαµηλότερη

ΑποτίµησηΛογικώνΕκφράσεων Η αποτίµηση αρχίζει από τα αριστερά και προχωρεί µέχρι το σηµείο που χρειάζεται να προχωρήσει (lazy evaluation), π.χ. 0 && Ε 0 ηαποτίµησητηςέκφρασηςεδεν χρειάζεται 1 Ε 1 ηαποτίµησητηςέκφρασηςεδεν χρειάζεται

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

ΣειράΣυνθηκώνσεµία ΛογικήΈκφραση (συν.) Γενικάσεµίασύζευξη, Ε 1 && Ε 2, η συνθήκηε 1 πρέπεινααποτελείτον αριστερό τελεστέο, εάν στην περίπτωση που αποτιµείται σε 0, τυχόναποτίµησητηςε 2 θαοδηγήσει σε πρόβληµα. Με αυτή την σειρά αποτρέπεταιηαποτίµησητηςε 2. Ανάλογο για διάζευξη Ε1 Ε2 ( (x == 0) (y / x) > 2 )

ΜετατροπήΕκφράσεωνσε C x και y µεγαλύτερατου z (x>z && y>z) x είναιίσοµετο 2 ήµετο 10 (x==2 x==10) a είναιστοπεδίοαπό b µέχρικαι c (a>=b && a<=c) αείναιέξωαπότοπεδίο b µέχρικαι c!(a>=b && a<=c) ή (a<b a>c)

ΜετατροπήΕκφράσεωνσε C (συν.) x είναι µικρότερο του 0 ή µεταξύ 10 και 1000 (x<0) (x>=10 && x<=1000) z είναι αγγλικός χαρακτήρας (z>= a && z<= z ) (z>= A && z<= Z )

Eντολή if-else Σύνθετες Εντολές (ή blocks) { ήλωση; ;Εντολή;} Άγκιστρα οµαδοποιούν εντολές σαν να είναι µια εντολή if (συνθήκη) εντολή; else εντολή; if (συνθήκη) { εντολή;... } else { εντολή;... }

Σηµασία if-else Σηµασία: εαντοαποτέλεσµατηςέκφρασης (συνθήκης) είναιαληθής*,τότεεκτελούνται οιεντολέςτου if block, αλλιώς εκτελούνται οι εντολές του else block if (temp > 0) { } else { } printf( above freezing.\n ); printf( freezing!\n ); Η C αποτιµά οποιοδήποτε αποτέλεσµα έκφρασης σε συνθήκη που έχει τιµή διάφορη του 0 ως αληθή (TRUE) if (x) { /* x=, -3, -2, -1, 1, 2, 3, */ printf( TRUE ); } else { printf( FALSE ); }

Παράδειγµα if-else Γράψετε κώδικα που παίρνει παραµέτρους δυο ακέραιους αριθµούς και τυπώνει τον µικρότερο.

Κώδικας C (µόνο η συνάρτηση main) int main(){ int a, b; printf( dwse ta a kai to b\n ); scanf( %d%d, &a, &b); if (a < b) printf( %d\n, a); else printf( %d\n, b); } return 0;

Εντολή if if (συνθήκη) εντολή; if (συνθήκη) { εντολή; }

Σηµασία if Σηµασία: εαν το αποτέλεσµα της έκφρασης (συνθήκης) είναι αληθής τότε εκτελούνται οι εξαρτώµενες εντολές αλλιώς η εκτέλεση συνεχίζει µετά το if block (αγνοούνται οι εξαρτώµενεςεντολές) if (count <= 0){ count = count + 1; printf( increment count\n ); } printf( I am here!\n );

Παράδειγµα int number, count;.. if (number <= 0){ count = count + 1; } printf( %d\n, count);. number count output 2 3?

Παράδειγµα if-else Γράψετε κώδικα που παίρνει παραµέτρους δυο ακέραιους αριθµούς και τυπώνει τον µικρότερο.

Κώδικας if (a < b) printf( %d\n, a); else printf( %d\n, b); int minimum; minimum = b; if (a < b) minimum = a; printf( %d\n, minimum); int minimum; if (a < b) minimum = a; else minimum = b; printf( %d\n, minimum);

Παράδειγµα if-else Γράψετε κώδικα που παίρνει τρεις ακέραιους αριθµούς και επιστρέφει τον µικρότερο.

Κώδικας int minimum; if (a < b) minimum = a; else minimum = b; if (c < minimum) minimum = c; printf( The minimum is %d\n, minimum);

Φώλιασµα (nesting) int minimum; if (a < b) if (a < c) minimum = a; else minimum = c; else if (b < c) minimum = b; else minimum = c; printf( The minimum is %d\n, minimum); Το κάθε else ταιριάζει µε το προηγούµενο if (εκτός και αν χρησιµοποιήσουµε {})

Παράδειγµαφωλιασµένου if-else Γράψετε κώδικα που ελέγχει ένα ακέραιο αριθµό και τυπώνει 1 εανείναιθετικός, 0 εανείναι 0 και -1 εαν είναι αρνητικός

Κώδικας 1 int number, code; scanf( %d, &number); if (number > 0) code = 1; else if (number < 0) code = -1; else /* number einai 0 */ code = 0; printf( %d\n,code);

Κώδικας 2 int number, code; scanf( %d, &number); if (number > 0){ code = 1; } else{ /* number <=0 */ if (number < 0){ code = -1; } else{ /* number einai 0 */ code = 0; } } printf( %d\n,code);

Κώδικας 3 (if else if else) int number, code; scanf( %d, &number); if (number > 0) code = 1; else if (number < 0) code = -1; else /* number einai 0 */ code = 0; printf( %d\n,code);

Παράδειγµα: χρήση λογικών τελεστών Γράψετε κώδικα που παίρνει τρεις ακέραιους αριθµούς και επιστρέφει τον µικρότερο. int minimum; if ( (a < b) && (a < c) ) minimum = a; else if ( (b < a) && (b < c) ) minimum = b; else minimum = c; printf( The minimum is %d\n, minimum);

Φíλτρα/Έλεγχοςδεδοµένων Χρησιµοποιείτε τις εντολές ελέγχου για να ελέγχετε την ορθότητα δεδοµένων π.χ. if(size<=0){ printf( Error: size is not possitive\n ); exit(-1); /*termatizei programma*/ ( #include <stdlib.h>) } EXIT_FAILURE σήµα ή το assert() ( #include <assert.h>) assert(size>0); /*Error: size is not positive - termatizei*/ Βεβαίωση: παίρνει ως παράµετρο συνθήκη: αν η αποτίµησή της είναι TRUE τότε το πρόγραµµα συνεχίζει κανονικά, αλλιώς τερµατίζει µηκανονικά.

Παραδείγµατα printf( Enter length and width in meters: ); scanf( %f%f,&length,&width); if (length<0){ printf( Error: Length is not positive!\n ); assert(0); /* or: exit(-1); */ } assert(length<10000); /* length is less than 10000*/ /* or: if (length >= 10000) exit(-1); */

Εντολή switch switch (παράσταση/έκφραση/µεταβλητή) { case σταθερά_1: πρέπει να είναι τύπου intήchar } εντολές_1 break;.. case σταθερά_n: εντολές_n break; default: εντολές_d πρέπειναείναιτύπου char ή int, αλλά όχι float ή double 0 ή περισσότερες εντολές (εκτελούνται αν η τιµή του case ταιριάζει µε αυτή του switch) Προκαλεί την έξοδο από το switch. Αν δεν υπάρχει στο case που ήδη έχει ταιριάξει, τότε συνεχίζεται η εκτέλεση όλων των cases πουτηνακολουθούν, µέχρι να συναντήσει ένα break ή φτάσουµε στο τέλος του switch. Προαιρετικό (εκτελείται εάν καµία case τιµή δεν ταιριάζει µε την τιµή της έκφρασης του switch)

Παραδείγµατα #include <stdio.h> int main() { } int menu; int v1=10, v2=20, total; char c; printf("please make a selection (1-2) : "); scanf("%d", &menu); /* READ calculation type */ switch (menu) /* select the type of calculation */{ case 1: } total = v1 + v2; c='+'; break; case 2: total = v1 - v2; c='-'; break; default: printf("invalid option selected\n"); printf("%d %c %d = %d", v1, c, v2, total); return 0;

char letter_grade; int count_a, count_b, count_other; count_a = count_b = count_other = 0; switch(letter_grade){ case A : counta=counta+1; printf( excellent\n ); break; case B : countb=countb+1; printf( very_good\n ); break; case C : case D : case F : count_other=count_other+1; printf( other\n ); break; default: printf( %c is the wrong grade!\n, letter_grade); }

ΡοήΕλέγχουµε switch switch παράσταση... επόµενη εντολή

Switch vs if-else switch παράσταση if-else παράσταση true false... επόµενη εντολή επόµενη εντολή

Παράδειγµα Γράψε κώδικα που διαβάζει ένα χαρακτήρα και τυπώνει 0 εαν ο χαρακτήρας είναι άσπρο διάστηµα και 1 αλλιώς Τι είναι άσπρο διάστηµα;

#define WHITE_SPACE 0 #define NOT_WHITE_SPACE 1.............. char xar; int code; scanf( %c, &xar); if (xar== xar== \n xar== \t ) code = WHITE_SPACE; else code = NOT_WHITE_SPACE; printf( %d\n, code); Είσοδος: 123 3#4%^&* asdf Έξοδος: 00111011111110011110 Άσκηση για εξάσκηση: Χρησιµοποιείστε switch αντί if-else

Άσκηση για εξάσκηση: Χρησιµοποιείστε switch αντί if-else Τρόπος Α #define WHITE_SPACE 0 #define NOT_WHITE_SPACE 1................. char xar; int code; scanf( %c, &xar); switch(xar){ case : case \t : case \n : code = WHITE_SPACE; break; default: code = NOT_WHITE_SPACE; } printf( %d\n, code);

Άσκηση για εξάσκηση: Χρησιµοποιείστε switch αντί if-else Τρόπος Β #define WHITE_SPACE 0 #define NOT_WHITE_SPACE 1................. char xar; int code; scanf( %c, &xar); switch(xar== xar== \n xar== \t ){ case 1: code = WHITE_SPACE; break; case 0: code = NOT_WHITE_SPACE; break; } printf( %d\n, code);

if-elseκαι switch Οποιαδήποτε εντολή switch µπορεί να γραφεί µε if-else (ισχύει και το αντίθετο). Επιλέξετε το πιο φυσιολογικό, εύκολο κτλ

ΚοινάΣυντακτικά/ΛογικάΛάθη = αντί == if (x=10) αντί if (x==10) Έξτρα ; στην πρώτη γραµµή του if if (x==10); printf( equal to 10 ); printf( program run continues. ); Μετατροπή από µαθηµατικά σε C, από 0 µέχρι 4: (0 <= x <= 4) αντί (0 <= x && x<= 4) π.χ. x=5 (0 <= 5 <= 4) x=5 (0 <= 5 && 5<= 4) συνθήκη χωρίς παρένθεση if x>4 αντί if (x>4) Λογικό λάθος Λογικό λάθος (κενό σώµα-εντολές του if) Συντακτικό λάθος Λογικό λάθος 1 <= 4 TRUE (λάθοςεκτίµηση) 1 && 0 FALSE (ορθή εκτίµηση)

Λάθοςαντιστοιχία 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 ); } Ενέργειες Μεταγλωττιστή Μοναδική εντολή του if Εκτός του if. Θα εκτελεστεί οπωσδήποτε, ως η επόµενη εντολήµετάτο if. Συντακτικόλάθος: εν ξεκινάς µε εντολή else

Τέλος 6 ου Κεφαλαίου