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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αλγοριθμικές Δομές Επιλογής και Επανάληψης Συνθήκες, Λογικές Εκφράσεις και Βρόγχοι

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

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

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

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

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

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

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

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

2. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Α' μέρος: if)

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

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

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

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

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

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

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

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

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

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

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

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

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

ικτυακά Πολυμέσα Ι (Β Έτος, 3ο εξ) ιάλεξη #8η: Javascript: Τεχνικές εντοπισμού/διόρθωσης λαθών, τελεστές, δομές ελέγχου, βρόχοι επανάληψης

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

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

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

Transcript:

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy

Κεφάλαιο 6 ομές Επιλογής

Θέματα ιάλεξης Σχεσιακοί και Λογικοί Τελεστές Λογικές Παραστάσεις Εντολές if, if-else, φωλιασμένα if-else,?: Εντολή switch Έλεγχος ορθότητας δεδομένων και συναρτήσεων

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

ομές Επιλογής (Selection Structures) Έκφραση Συνθήκης Σχεσιακοί/Συγκριτικοί Τελεστές Λογικοί Τλ Τελεστές Εντολές 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!= b); (f == 2.3456) ( a (a >= b ) b) a < b <..< z A < B < A<B<..<Z < Z 0 < 1 <..< 9

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

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

Λογικές εκφράσεις σε μεταβλητές t = (A>=0 && A<=100); t1 = (A>= 0); t2 = (A <= 100); t = (t1 && t2);

Πίνακας Αληθείας για && Όταν χρειάζεται να ελέγξουμε πως όλες οι υποεκφράσεις ισχύουν, π.χ. (a && b)

Πίνακας Αληθείας για Όταν χρειάζεται να ελέγξουμε πως τουλάχιστον μια υποέκφραση ισχύει, π.χ. (a b)

Πίνακας Αληθείας για! Όταν χρειάζεται να ελέγξουμε πως ισχύει το αντίθετο μιας έκφρασης π.χ.!(a && b)

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

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

Κανόνες 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 )

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

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

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

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

Μετατροπή Εκφράσεων σε C x και y μεγαλύτερα του z x είναι ίσο με το 2 ή με το 10 a είναι στο πεδίο από b μέχρι και c α είναι έξω από το πεδίο b μέχρι και c x είναι μικρότερο του 0 ή μεταξύ 10 και 1000 z είναι αγγλικός χαρακτήρας (english character)

Μετατροπή Εκφράσεων σε 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 )

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

Σημασία if-else Σημασία: Εάν το αποτέλεσμα της έκφρασης (συνθήκης) είναι αληθής τότε εκτελούνται οι εντολές του if block αλλιώς εκτελούνται οι εντολές του else block. if (temp > 0){ printf( above freezing.\n ); else { printf( freezing!\n );

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

Παράδειγμα 1: if-else Λύση 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 );

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

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

Παράδειγμα 2: if-else Λύση int min(int a, int b){ int minimum; if (a < b) else minimum = a; minimum i = b; return minimum;

Παράδειγμα 2: Ενναλακτικές Λύσεις int min(int a, int b){ int min(int a, int b){ int minimum; int minimum; if (a < b) minimum = b; minimum = a; if (a < b) else minimum = a; minimum = b; return minimum; 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;

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

Παράδειγμα 3: if-else - Λύση Με χρήση της συνάρτησης min την οποία υλοποιήσαμε στο Παράδειγμα 2. int min_three(int a, int b, int c){ int minimum; minimum = min(a,b); minimum = min(minimum,c); return minimum;

Παράδειγμα 3: if-else Ενναλακτική Λύση Χωρίς την χρήση οποιασδήποτε συνάρτησης. int min_three(int a, int b, int c){ int minimum; i if (a < b) minimum = a; else minimum = b; if (c < minimum) minimum = c; return minimum;

Φώλιασμα (nesting) 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;

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

Παράδειγμα 4: Φωλιασμένο if-else Λύση 1 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;

Παράδειγμα 4: Φωλιασμένο if-else Λύση 2 int detect(int number){ int code; if (number > 0){ code = 1; else{ if (number < 0){ /* number < 0 */ code = -1; else{ /* number = 0 */ code = 0; return code;

Παράδειγμα 4: Λύση 3 (if-else-if) int detect(int t(i tnumber){ int code; if (number > 0) code = 1; else if (number < 0) code = -1; else /* number einai 0 */ code = 0; return code;

Φíλτρα/Έλεγχος εδομένων Χρησιμοποιείτε τις εντολές ελέγχου για να ελέγχετε την ορθότητα δεδομένων π.χ. if (i (size<=0){ <0){ printf( Error: size is not possitive\n ); exit(-1); /*termatizei programma*/ ή το assert (assert.h) assert(size>0); /*Error: size is not possitive - termatizei*/

Έλεγχος Συναρτήσεων Χρησιμοποιείτε τις εντολές ελέγχου ή assert για να ελέγχετε την ορθότητα της εκτέλεσης συναρτήσεων βιβλιοθήκης. Η συνάρτηση scanf επιστρέφει τον αριθμό αντικειμένων εισόδου που συμφώνησαν με την προδιαγραφή. fields_read = scanf( %d, %d,&num); if (fields_read!=1){ /* error */

Παράδειγμα 5: Έλεγχος Συναρτήσεων printf( Enter t length and width in meters: ); field_read = scanf( %f %f, &length, &width); if (field_read!=2){ printf( Error: input in incorrect format\n ); exit(-1); if (length<0){ printf( Error: Length is not possitive!\n ); assert(0); assert(length<10000); /* length is greater than 9999*/

Eντολή? : Σύνταξη: (παράσταση)? τιμήα : τιμήβ; Σημασία: Εαν η τιμή της παράστασης είναι διάφορη του μηδενός τότε το αποτέλεσμα είναι τιμήα αλλιώς είναι τιμήβ π.χ.: : x = (y >100)? y : 0;

Εντολή switch

Παράδειγμα 6: Εντολή switch 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( %d is the wrong grade!\n, letter_grade);

Ροή Ελέγχου με switch

Switch vs if-else

Switch, if-else, if

Παράδειγμα 7 Γράψε κώδικα που διαβάζει ένα χαρακτήρα και τυπώνει 0 εάν ο χαρακτήρας είναι άσπρο διάστημα (whitespace) και 1 αλλιώς.

Παράδειγμα 7 Λύση #define WHITE_SPACE 0 #define NOT_WHITE_SPACE 1 char c; int code; scanf( %c, &c); if (c== c== \n c== \t ) code = WHITE_SPACE; else code = NOT_WHITE_SPACE; printf( %d\n, code); Input: 123 3#4%^&* asdf Output: 11101111111001111

Παράδειγμα 8 Γράψετε την διαδικασία display_grade_message που παίρνει τον βαθμό ενός φοιτητή (0 100), και τυπώνει τα μηνύματα: πάνω απο 85 - Excellent 65-84 - Very Good 50-64 Good κάτω από 50 - Failure

Παράδειγμα 8 Πιθανή Λύση Είναι σωστή η ποιο κάτω λύση? 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 );

Παράδειγμα 8 Πιθανή Λύση Είναι σωστή η ποιο κάτω λύση? void display_grade_message(int weighted_aver){ if (weighted_aver >= 85) printf( \nexcellent ); if (weighted_aver >= 65) printf( \nvery Good ); if (weighted_aver >= 50) printf( \ngood ); if (weighted_aver < 50) printf( \nfailure );

Παράδειγμα 8 Πιθανή Λύση Είναι σωστή η ποιο κάτω λύση? void display_grade_message(int weighted_aver){ if (weighted_aver >= 85) printf( \nexcellent ); else if (weighted_aver < 85&&weighted weighted_aver >= 65) printf( \nvery Good ); else if (weighted_aver < 65 && weighted_aver >= 50) printf( \ngood ); else printf( \nfailure );

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

Παράδειγμα 9 Σχεδιασμός Λύσης (Φάση 1) Ένας χρόνος είναι δίσεχτος εάν διαιρείται ακριβώς με το 4, εκτός και εάν διαιρείται ακριβώς με το 100 στην οποία περίπτωση θα πρέπει να διαιρείται ακριβώς καιμετο400. αν (χ%4 == 0) τότε είναι δίσεχτος αλλιώς δεν είναι

Παράδειγμα 9 Σχεδιασμός Λύσης (Φάση 2) Ένας χρόνος είναι δίσεχτος εάν διαιρείται ακριβώς με το 4, εκτός και εάν διαιρείται ακριβώς με το 100 στην οποία περίπτωση θα πρέπει να διαιρείται ακριβώς καιμετο400. αν (χ%4 == 0) τότε αλλιώς αν (χ%100 == 0) τότε δεν είναι αλλιώς είναι δίσεχτος δεν είναι

Παράδειγμα 9 Σχεδιασμός Λύσης (Φάση 2) Ένας χρόνος είναι δίσεχτος εάν διαιρείται ακριβώς με το 4, εκτός και εάν διαιρείται ακριβώς με το 100 στην οποία περίπτωση θα πρέπει να διαιρείται ακριβώς καιμετο400. αν (χ%4 == 0) τότε αλλιώς αν (χ%100 == 0) τότε δεν είναι αλλιώς είναι δίσεχτος δεν είναι

Παράδειγμα 9 Σχεδιασμός Λύσης (Φάση 3) Ένας χρόνος είναι δίσεχτος εάν διαιρείται ακριβώς με το 4, εκτός και εάν διαιρείται ακριβώς με το 100 στην οποία περίπτωση θα πρέπει να διαιρείται ακριβώς και με το 400. αν (χ%4 == 0) τότε αν (χ%100 == 0) τότε αν (χ%400 == 0) τότε είναι δίσεχτος αλλιώς δεν είναι αλλιώς είναι δίσεχτος αλλιώς δεν είναι

Παράδειγμα 9 Λύση 1 void 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; printf( o xronos %s disektos\n, disectos? einai : den einai );

Παράδειγμα 9 Λύση 2 void is_leap (int year){ int disektos; if (year % 4 == 0 && (year % 100!= 0 year % 400 == 0)) disektos =1; else disektos = 0; printf( o xronos %s disektos\n,disectos? einai : den einai );

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

Παράδειγμα 9 Λύση 3 Υλοποίηση με switch switch (year % 4 == 0) { case 0: disektos = 0; break; case 1: switch (year % 100 == 0) { case 0: disektos = 1; break; case 1: switch (year % 400 == 0) { case 0: disektos = 0; break; case 1: disektos = 1; break;

Κοινά Συντακτικά/Λογικά Λάθη = αντί == if (x=10) αντί if (x==10) συνθήκη χωρίς παρένθεση if x>4 αντί if (x>4) Μετατροπή από μαθηματικά σε C: (0 <= x <= 4) αντί (0 <= x && x<= 4)

Λάθος αντιστοιχία 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 );

Άσκηση για εξάσκηση Γράψτε πρόγραμμα για τον υπολογισμό του λογαριασμού ύδρευσης για οικιακή (Ο), επαγγελματική (Ε) και βιομηχανική χρήση (Β), με βάση τους κανόνες: Ο: πάγιο $5, σύν $0.5 ανά κυβικό μέτρο Ε: πάγιο $100, σύν $0.2 ανά κυβικό μέτρο μετά τα 1000 κυβικά Β: πάγιο $500 σύν $0 1 ανά κυβικό μέτρο μετά Β: πάγιο $500, σύν $0.1 ανά κυβικό μέτρο μετά τα 5000 κυβικά

Περίληψη ομές μςεκτέλεσης Λογικές Παραστάσεις Σχεσιακοί και Λογικοί Τελεστές Προτεραιότητα τελεστών ομές Επιλογής Εντολές if, if-else, φωλιασμένα if-else Εντολή switch Έλεγχος Ορθότητας εδομένων και Συναρτήσεων if και exit(-1) if, scanf και fields_read assert (χρήση η βιβλιοθήκης ββ assert.h)

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