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

Σχετικά έγγραφα
ΗΥ-150. Προγραμματισμός

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

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

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

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

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

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

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

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

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

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος

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

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

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

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

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

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

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

Εργαστήριο 5. Εντολή if και παραλλαγές: if-else, πολλαπλές if, πολλαπλές if-else. Απλές και σύνθετες εντολές. Εντολή switch.

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

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

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

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

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

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

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

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

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

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

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

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

Ηλεκτρονικοί Υπολογιστές

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

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

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

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

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

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

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

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

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Δομές ελέγχου ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 8/11/07

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

for for for for( . */

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι χρειάζεται η εντολή if ; Εντολή if. Παράδειγμα #1. Παράδειγμα #1

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

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

Βασικά στοιχεία της Java

ΔΟΜΗ ΕΠΙΛΟΓΗΣ. Οι διάφορες εκδοχές της

Δομημένος Προγραμματισμός

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

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

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

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

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

Transcript:

ΗΥ-150 Εντολές Ελέγχου Ροής

Σειριακή εκτέλεση εντολών Όλα τα προγράµµατα «γράφονται» χρησιµοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαµβάνει έκφραση ελέγχου σε µορφή λογικής πρότασης. Ανάλογα µε το εάν η πρόταση είναι αληθής ή ψευδής εκτελείται ένα, αντίστοιχο, σύνολο εντολών. Εντολές επανάληψης ( for, while, do/while) 2

if εντολή διακλάδωσης Συντάσσεται ως εξής: if (condition)... // block A else... // block B Εάν η συνθήκη (condition) είναι αληθής, εκτελείται το block των εντολών που περικλείεται µεταξύ των πρώτων (block A). Αλλιώς, εκτελείται το block των εντολών µετά το else (block B). 3

if Το κάθε block µπορεί να αποτελείται από καµµία, µία, ή περισσότερες εντολές. Στην περίπτωση που περιλαµβάνει µία µόνο εντολή µπορούν να παραληφθούν τα άγκιστρα () που την περικλείουν. if (val > max) max = val; else max = 1000.0; i=i+1; 4

if Στην περίπτωση που το else block είναι κενό µπορεί να παραληφθεί ολόκληρο: if (condition)... Εάν το αποτέλεσµα της έκφρασης (συνθήκης) είναι αληθής τότε εκτελούνται οι εξαρτώµενες εντολές αλλιώς η εκτέλεση συνεχίζει µετά το if block (αγνοούνται οι εξαρτώµενες εντολές) 5

Παράδειγµα int main() int a, b; printf( dwse to a\n ); scanf( %d, &a); printf( dwse to b\n ); scanf( %d, &b); if (a < b) printf( %d\n, a); else printf( %d\n, b); return 0; 6

if Kάθε block µπορεί να περιλαµβάνει οποιεσδήποτε άλλες εντολές και βέβαια άλλο if. H if (condition)... else... είναι µία εντολή. Στην περίπτωση ενός εσωκλειόµενου if, θέλει ιδιαίτερη προσοχή το επόµενο else του κώδικα. Το κάθε else ταιριάζει µε το αµέσως προηγoύµενό του if στο ίδιο block. Η εντολή max = 10; εκτελείται όταν to i είναι 0 και δεν ισχύει το ( val > max ) και όχι όταν δεν ισχύει το ( i == 0 ). Η χρήση των αγκίστρων επιβάλει την πρόθεση του προγραµµατιστή: if (i == 0) if (val > max) max = val; else max = 10; if (i == 0) if (val > max) max = val; else max = 10; 7

Εντολές υπό Συνθήκη - if εντολή <-έκφραση; εντολή <- σειρά εντολών if (έκφραση) εντολή1 if (έκφραση) εντολή1 else εντολή2 if (έκφραση1) εντολή1 else if (έκφραση2) εντολή2 else εντολή3 //Ανηέκφρασηέχειτιµήδιάφορητου 0 (!0), //εκτελείται η εντολή 1 //Ανηέκφρασηέχειτιµήδιάφορητου 0 (!0), //εκτελείται η εντολή 1 αλλιώς η εντολή2 //Ανηέκφραση1έχειτιµήδιάφορητου 0 (!0), //εκτελείταιηεντολή 1 //αλλιώςανηέκφραση2 έχειτιµήδιάφορητου 0 //εκτελείται η εντολή 2 //αλλιώςεκτελείταιηεντολή 3 8

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

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

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

Αληθής / Ψευδής λογική πρόταση στη C Η C αποτιµά οποιοδήποτε αποτέλεσµα έκφρασης σε συνθήκη που έχει τιµή διάφορη του 0 ως αληθή (TRUE) if (x) else printf( TRUE ); printf( FALSE ); /* x=, -3, -2, -1, 1, 2, 3, */ /* x= 0 */ 12

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

Παραδείγµατα (x < y) t = (x < y); Αν (t) τότε printf( true\n ); k = (i >= 8); a = (b!= c); (f == 2.3456) ΠΡΟΣΟΧΗ ποτέ δεν συγκρίνουµε δυο float ή double µε ισότητα Εναλλακτικά: ((f1-f2) <.00001) ( a >= d ) a < b <..< z A < B <..< Z 0 < 1 <..< 9 Θυµηθείτε πως οι χαρακτήρες είναι αριθµοί και ερµηνεύονται σύµφωνα µε τον πίνακα ASCII. Στον πίνακα αυτό, οι χαρακτήρες είναι οργανωµένοι µε αλφαβητική σειρά. 14

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

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

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

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

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

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

Εκφράσεις στη 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) x είναι µικρότερο του 0 ή µεταξύ 10 και 1000 (x<0) (x>=10 && x<=1000) z είναι αγγλικός χαρακτήρας (z>= a && z<= z ) (z>= A && z<= Z ) 21

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

Παράδειγµα int main() int a, b; printf( dwse to a\n ); scanf( %d, &a); printf( dwse to b\n ); scanf( %d, &b); if (a < b) printf( %d\n, a); else printf( %d\n, b); return 0; 23

Παράδειγµα int main() int a, b, minimum; printf( dwse ta a kai to b\n ); scanf( %d%d, &a, &b); if (a < b) minimum = a; else minimum = b; printf( %d\n, minimum); return 0; 24

Παράδειγµα int main() int a, b, minimum; printf( dwse ta a kai to b\n ); scanf( %d%d, &a, &b); minimum = b; if (a < b) minimum = a; printf( %d\n, minimum); return 0; 25

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

Παράδειγµα int minimum; if (a < b) minimum = a; else minimum = b; if (c < minimum) minimum = c; else printf( The minimum is %d\n, minimum); 27

Παράδειγµα 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); 28

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

Nested 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); 30

Nested 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); 31

Nested if-else int number, code; scanf( %d, &number); if (number > 0) code = 1; elseif (number < 0) code = -1; else /* number einai 0 */ code = 0; printf( %d\n,code); 32

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

if για έλεγχο Εντολές ελέγχου για να έλεγχο της ορθότητας δεδοµένων π.χ. if(size<=0) printf( Error: size is not positive\n ); exit(-1); /*termatizei το programma*/ 34

if για έλεγχο printf( Enter length and width in meters: ); scanf( %f%f,&length,&width); if (length<0) printf( Error: Length is not positive!\n ); exit(-1); 35

Παράδειγµα int main() char p; float x,y,res; scanf("%f %c %f",&x,&p,&y); if (p == + ) res = x+y; else if (p == - ) res = x-y; else if (p == * ) res = x*y; else if (p == / ); res = x/y; else printf( La8os\n ); return -1; printf( %f%c%f = %f\n, x,p,y,res); return 0; 36

Εντολές υπό Συνθήκη - switch switch (έκφραση) case σταθερή_παράσταση_1 : statements; break; case σταθερή_παράσταση_2 : statements; break; default : statements; Το default είναι προαιρετικό και εκτελείται αν καµία παράσταση δεν βρεθεί ίση µε την έκφραση Αν ένα break λείπει τότε συνεχίζεται η εκτέλεση των εντολών 37

switch 38

Εντολές υπό Συνθήκη - switch Η τιµή ελέγχου i πρέπει να είναι ακέραιου τύπου (char, int, short int, long int) µε τις signed και unsigned παραλλαγές τους. Η τιµή µπορεί να προέρχεται από µεταβλητή ή να είναι η τιµή συνάρτησης που επιστρέφει τέτοιο τύπο ή κάποια µεταβλητή. Οι τιµές value1, value2,..., valuen είναι σταθερές ακέραιου τύπου και διακριτές µεταξύ τους. Κατά την εκτέλεση, η τιµή ελέγχου i συγκρίνεται µε κάθε µία από τις value1, value2,...,valuen. Αν η τιµή της περιλαµβάνεται σε αυτές, τότε εκτελούνται οι εντολές που ακολουθούν το αντίστοιχο case. Η εκτέλεση συνεχίζει µε τις εντολές των επόµενων case ή/και του default αν έπεται, έως ότου διακοπεί µε break (ή τυχόν π.χ. goto, return). Μετά το break η εκτέλεση συνεχίζει µε την πρώτη εντολή µετά το καταληκτικό άγκιστρο της δοµής switch. Αν δεν βρεθεί η τιµή της στις value1, value2,...,valuen εκτελείται το block των εντολών του default, αν υπάρχει. Αλλιώς, η εκτέλεση συνεχίζει µετά το του switch. Οι σχετικές θέσεις των case και του default µπορούν να είναι οποιεσδήποτε. 39

Παράδειγµα µε switch int main() char p; float x, y, res; scanf("%f %c %f",&x,&p,&y); switch (p) case + : res = x+y; break; case - : res = x-y; break; case * : res = x*y; break; case / : res = x/y; break; default : printf( La8os eisodos\n ); printf( %f%c%f = %f\n,x,c,y,res); 40

Τυπικά Λάθη if(x=5) αντί για if(x==5) Ξεχάσατε το break σε εντολή switch Ξεχάσατε, Λάθος στις προτεραιότητες: ( ) Λύση: Μορφοποίηση και χρήση σχολίων 41

Παραστάσεις υπό Συνθήκη -? Ο τελεστής (?: ) είναι ένας ιδιαίτερα διαδεδοµένος ιδιωµατισµός της C++. Η εντολή if (condition) val = value1; else val = value2; ισοδυναµεί µε val = (condition? value1 : value2); Γενικότερα, η έκφραση (condition? έκφρασηα : έκφρασηβ) έχει την τιµή έκφρασηα όταν η συνθήκη condition είναι αληθής, ενώ έχει την τιµή έκφρασηβ όταν η συνθήκη είναι ψευδής. 42

Παραστάσεις υπό Συνθήκη -? Οι παρενθέσεις που περιβάλουν τον τελεστή (?: ) µε τα ορίσµατά του στο συγκεκριµένο παράδειγµα δεν είναι απαραίτητες, βοηθούν όµως στην κατανόηση του κώδικα. Καθώς για το συγκεκριµένο τελεστή δεν µπορεί να καθοριστεί µονοσήµαντα η προτεραιότητά του σε σχέση µε τον ( = ) πρέπει να τις χρησιµοποιούµε για να εκτελείται η επιδιωκόµενη πράξη. Εναλλακτικά, µπορούµε να εφαρµόζουµε τον εξής κανόνα: Οι τελεστές (?: ) και ( = ) έχουν ίδια προτεραιότητα, δεχόµενοι ότι οι πράξεις εκτελούνται από τα δεξιά προς τα αριστερά. Εποµένως, η έκφραση a = b? c : d ισοδυναµεί µε a = (b? c : d), ενώ η έκφραση a? b : c = d εκτελείται ως a? b : (c = d) 43

Παραστάσεις υπό Συνθήκη -? if ( x > y) x = a; else x = b; x = (x>y)? a : b; 44

Το πιο σύνηθες λάθος if ( a = b) έναντι if (a == b) και τα 2 είναι αποδεκτά από το µεταφραστή, το πρώτο όµως αποτιµάται πάντα ως b. 45