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

Σχετικά έγγραφα
Η γλώσσα προγραμματισμού C

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

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

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

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

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

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

Εισαγωγή στην πληροφορική

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

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

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

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

Ενότητα 5: «Εισαγωγή στον Προγραμματισμό. Απλές ασκήσεις με γλώσσα C»

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

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

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

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

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

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

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

Εκτέλεση της εντολής1 και στη συνέχεια εκτέλεση της ΕΝΟΤΗΤΑΣ και της εντολής2 όσο η ΣΥΝΘΗΚΗ είναι αληθής.

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3

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

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

10. Εντολές επανάληψηςκαι οι εντολές

for for for for( . */

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

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

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

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

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

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

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

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

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

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

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

Transcript:

Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Ελέγχου ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1

Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία του υπολογισμού θα μελετήσουμε τον τρόπο επιλογής μεταξύ δύο εναλλακτικών ενεργειών (selection) 2

Εντολή (statement) - Επιλογή μερικές φορές πρέπει να επιλέξουμε μεταξύ κάποιων εναλλακτικών λύσεων στη C αυτό μπορεί να γίνει με χρήση της εντολής if ή της εντολής switch 3

Εντολή (statement) - Επιλογή - if 1. // εύρεση μέγιστου αριθμού 3. if (a < b) // συνθήκη 4. max = b; 5. else 6. max = a; 1. // φανάρι κυκλοφορίας 3. if (traffic_light == 'G') go(); 4. if (traffic_light == 'R') wait(); συντακτικό εντολής if: if (condition) statement-1 else statement-2 // if the condition is true, do statement-1 // if not, do statement-2 4

Εντολή (statement) - Επιλογή - if ΙΙ η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού χρησιμοποιείται για τον έλεγχο της ροής εκτέλεσης του προγράμματος, εξετάζοντας αν ισχύει ή όχι κάποια συνθήκη η συνθήκη μπορεί να είναι 1. μια έκφραση συσχετισμού x>10 μια λογική πρόταση (x>10 && x<20) 3. ένα αποτέλεσμα κάποιας πράξης x+y 4. μεταβλητή ή τιμή x η συνθήκη αποτιμάται σε κάποια τιμή a και είναι αληθής όταν a 0 ψευδής όταν a = 0 5

Εντολή (statement) - Επιλογή - if-else - Διάγραμμα ροής (έναρξη) Εντολές Προγράμματος... Γίνεται εποτίμηση της συνθήκης συνθήκη 0 συνθήκη = 0 ΑΛΗΘΗΣ συνθήκη ΨΕΥΔΗΣ εκτελείται αν η συνθήκη είναι αληθής εντολή Α εντολή Β εκτελείται αν η συνθήκη είναι ψευδής Εντολές Προγράμματος (συνέχεια)... 1. // εύρεση μέγιστου αριθμού 3. if (a < b) // συνθήκη 4. max = b; 5. else 6. max = a; 6

Εντολή (statement) - Επιλογή - if - Διάγραμμα ροής (χωρίς το else) (έναρξη) Εντολές Προγράμματος... Γίνεται εποτίμηση της συνθήκης συνθήκη 0 συνθήκη = 0 ΑΛΗΘΗΣ συνθήκη ΨΕΥΔΗΣ εκτελείται αν η συνθήκη είναι αληθής εντολή Α 1. // φανάρι κυκλοφορίας 3. if (traffic_light == 'G') go(); 4. if (traffic_light == 'R') wait(); Εντολές Προγράμματος (συνέχεια)... 7

Εντολή (statement) - Επιλογή - if - Παράδειγμα 1. // Μετατροπή από ίντσες σε εκατοστά, ή το αντίστροφο 3. #include <stdio.h> 4. 5. int main () 6. { 7. const double cm_per_inch = 54; // πλήθος cm ανά inch 8. int length; // απόσταση σε ίντσες ή εκατοστά 9. char unit; // μονάδα μέτρησης, i:ίντσες ή c:εκατοστά 10. 11. printf ("Παρακαλώ εισάγετε μία απόσταση και τη μονάδα της: "); 1 scanf ("%d %c", length, unit); 13. 14. if (unit == 'i') 15. printf ("%din = %fcm\n", length, cm_per_inch * length ); 16. else 17. printf ("%dcm = %fin\n", length, length / cm_per_inch); 18. }? παρατηρείτε κάποιο σφάλμα στο παραπάνω πρόγραμμα; δεν ελέγχεται η περίπτωση λάθος εισόδου (π.χ. 100 K) 8

Εντολή (statement) - Επιλογή - if - Παράδειγμα ΙΙ 1. // Μετατροπή από ίντσες σε εκατοστά, ή το αντίστροφο 3. #include <stdio.h> 4. 5. int main () 6. { 7. const double cm_per_inch = 54; // πλήθος cm ανά inch 8. int length; // απόσταση σε ίντσες ή εκατοστά 9. char unit; // μονάδα μέτρησης, i:ίντσες ή c:εκατοστά 10. 11. printf ("Παρακαλώ εισάγετε μία απόσταση και τη μονάδα της: "); 1 scanf ("%d", length, unit); 13. 14. if (unit == 'i') 15. printf ("%din = %fcm\n", length, cm_per_inch * length ); 16. else if (unit == 'c') 17. printf ("%dcm = %fin\n", length, length / cm_per_inch); 18. else 19. printf ("Λυπούμαι, δε γνωρίζω μονάδα με το σύμβολο %c\n", unit); 20. } 9

Εντολή (statement) - Επιλογή - if II συντακτικό εντολής if: if (condition-1) statement-1 else if (condition-2) statement-2 else if...... else statement-3 // if the condition-1 is true, do statement-1 // if the condition-2 is true, do statement-2 // otherwise, do statement-3 10

Εντολή (statement) - Επιλογή - if-else if-else - Διάγραμμα ροής (έναρξη) Εντολές Προγράμματος... ΑΛΗΘΗΣ συνθήκη ΨΕΥΔΗΣ εντολή Α ΑΛΗΘΗΣ συνθήκη ΨΕΥΔΗΣ εντολή Β εντολή Γ Εντολές Προγράμματος (συνέχεια)... 11

Εντολή (statement) - Επιλογή - switch - 1 ο Παράδειγμα 1. // Μετατροπή από ίντσες σε εκατοστά, ή το αντίστροφο #include <stdio.h> 3. 4. int main () 5. { 6. const double cm_per_inch = 54; // πλήθος cm ανά inch 7. int length; // απόσταση σε ίντσες ή εκατοστά 8. char unit; // μονάδα μέτρησης, i:ίντσες ή c:εκατοστά 9. 10. printf ("Παρακαλώ εισάγετε μία απόσταση και τη μονάδα της: "); 11. scanf ("%d", length, unit); 1 13. switch (unit) { 14. case 'i': 15. printf ("%din = %fcm\n", length, cm_per_inch * length ); 16. break; 17. case 'c': 18. printf ("%dcm = %fin\n", length, length / cm_per_inch); 19. break; 20. default: 21. printf ("Λυπούμαι, δε γνωρίζω μονάδα με το σύμβολο %c\n", unit); 2 } 23. } 12

Εντολή (statement) - Επιλογή - switch συντακτικό εντολής switch: switch (value) { case val-1: statement-1 break; case val-2: statement-2 break; case...... default: statement } // if value == val-1, do statement-1 // (optional!) // if value == val-2, do statement-2 // (optional!) // (optional!) 13

Εντολή (statement) - Επιλογή - switch - Τεχνικές λεπτομέρειες η τιμή την οποία πρέπει να επιλέξουμε πρέπει να είναι int ή char οι τιμές στο case πρέπει να είναι σταθερές εκφράσεις δε χρησιμοποιούμε ';' στο τέλος των case και default, αλλά ':' η τιμή που επιλέγουμε συγκρίνεται διαδοχικά με τις σταθερές των case αν η τιμή ταιριάζει με τη σταθερά ενός case τότε εκτελούνται οι εντολές του αν η τιμή δεν ταιριάζει με καμία σταθερά, τότε εκτελούνται οι εντολές του default εάν δεν υπάρχει το default τερματίζεαι η εντολή switch και εκτελούνται οι εντολές μετά το switch δε μπορούμε να χρησιμοποιήσουμε την ίδια τιμή για δύο case 14

Εντολή (statement) - Επιλογή - switch - Τεχνικές λεπτομέρειες II η εντολή break προκαλεί τον τερματισμό μιας εντολής switch η εκτέλεση του προγράμματος μέσα σε ένα switch συνεχίζεται στο επόμενο case, εκτός αν δεν μεσολαβεί κάποια από τις εντολές break μπορούμε να αντιστοιχούμε πολλαπλά case σε ένα σύνολο εντολών παραλείπουμε τις αντίστοιχες εντολές break ο μεταγλωττιστής δε θα μας προειδοποιήσει εάν ξεχάσουμε κάποιο break 15

Εντολή (statement) - Επιλογή - switch - 2 ο Παράδειγμα 1. // αναγνώριση άρτιων και περιττών ψηφίων 3. int main () 4. { 5. char digit; 6. 7. printf("παρακαλώ εισάγετε ένα ψηφίο: "); 8. scanf("%c", digit); 9. 10. switch (digit) { 11. case '0': case '2': case '4': case '6': case '8': 1 printf ("είναι άρτιος\n"); 13. break; 14. case '1': case '3': case '5': case '7': case '9': 15. printf ("είναι περιττός\n"); 16. break; 17. default: 18. printf ("δεν είναι ψηφίο\n"); 19. } 20. } σημείωση ο κώδικας που παρουσιάζεται αποτελεί ένα παράδειγμα χρήσης της εντολής switch δεν αποτελεί την καλύτερη λύση του προβλήματος αναγνώρισης άρτιων και περιττών αριθμών (ή ψηφίων) 16

Εντολή (statement) - Μπλοκ ή σύνθετη εντολή μία ακολουθία από εντολές που ορίζονται από τα άγκιστρα { και } ένα μπλοκ είναι ένα είδος εντολής 1. if (i < 100 ) { printf("the value is less than 100\n"); 3. ++i; 4. } το κενό μπλοκ είναι χρήσιμο μερικές φορές για να εκφράσουμε ότι τίποτα δεν πρέπει να γίνει 1. if (a <= b) { // μην κάνεις τίποτα } 3. else { // αντιμετάθεσε τα α και b 4. int t = a; 5. a = b; 6. b = t; 7. } 17

Εντολή (statement) - Μπλοκ ή σύνθετη εντολή - Παράδειγμα 1. // εύρεση μεγίστου και ελαχίστου δύο αριθμών 3. main () 4. { 5. int a, b, min, max; 6. 7. printf("enter first number: "); 8. scanf("%d", &a); 9. printf("enter second number: "); 10. scanf("%d", &b); 11. 1 if (a < b) 13. min = a; 14. else 15. min = b; 16. 17. if (a < b) 18. max = b; 19. else 20. max = a; 21. 2 printf("min = %d max = %d\n", min, max); 23. } 1. // εύρεση μεγίστου και ελαχίστου δύο αριθμών 3. main () 4. { 5. int a, b, min, max; 6. 7. printf("enter first number: "); 8. scanf("%d", &a); 9. printf("enter second number: "); 10. scanf("%d", &b); 11. 1 if (a < b) { 13. min = a; 14. max = b; 15. } 16. else { 17. min = b; 18. max = a; 19. } 20. 21. printf("min = %d max = %d\n", min, max); 2 } 18

Εντολή (statement) - Μπλοκ ή σύνθετη εντολή - Παράδειγμα II 1. // εύρεση μεγίστου και ελαχίστου δύο αριθμών 3. main () 4. { 5. int a, b, min, max; 6. 7. printf("enter first number: "); 8. scanf("%d", &a); 9. printf("enter second number: "); 10. scanf("%d", &b); 11. 1 if (a < b) { 13. min = a; 14. max = b; 15. } 16. else { 17. min = b; 18. max = a; 19. } 20. 21. printf("min = %d max = %d\n", min, max); 2 } 1. // εύρεση μεγίστου και ελαχίστου δύο αριθμών 3. main () 4. { 5. int a, b, min, max; 6. 7. printf("enter first number: "); 8. scanf("%d", &a); 9. printf("enter second number: "); 10. scanf("%d", &b); 11. 1 if (a < b) { 13. printf("min = %d max = %d\n", a, b); 14. } 15. else { 16. printf("min = %d max = %d\n", b, a); 17. } 18. } 19

Εντολή (statement) - Μπλοκ ή σύνθετη εντολή - Παράδειγμα ΙΙΙ 1. // εύρεση μεγίστου και ελαχίστου δύο αριθμών 3. main () 4. { 5. int a, b, min, max; 6. 7. printf("enter first number: "); 8. scanf("%d", &a); 9. printf("enter second number: "); 10. scanf("%d", &b); 11. 1 if (a < b) { 13. printf("min = %d max = %d\n", a, b); 14. } 15. else { 16. printf("min = %d max = %d\n", b, a); 17. } 18. } όταν το block έχει μόνο μία εντολή (άρα δεν είναι σύνθετη εντολή), τότε τα άγκιστρα δεν είναι απαραίτητα 11.... 1 if (a < b) 13. printf("min = %d max = %d\n", a, b); 14. else 15. printf("min = %d max = %d\n", b, a); 16.... 20

Εντολές ελέγχου (if και switch) Παραδείγματα 21

Εντολή (statement) - Επιλογή - if - 1 ο Παράδειγμα 1. // αναγνώριση θετικών αριθμών 3. #include <stdio.h> 4. 5. main() 6. { 7. int value; 8. 9. printf ("Please enter an integer value: "); 10. scanf("%d", &value); 11. 1 if (value > 0) 13. printf("value %d is positive\n", value); 14. } 22

Εντολή (statement) - Επιλογή - if - 1 ο Παράδειγμα II 1. // αναγνώριση θετικών αριθμών 3. #include <stdio.h> 4. 5. main() 6. { 7. int value, result; 8. 9. printf ("Please enter an integer value: "); 10. scanf("%d", &value); 11. 1 result = (value > 0); 13. if (result!= 0) 14. printf("value %d is positive\n", value); 15. } 23

Εντολή (statement) - Επιλογή - if - 1 ο Παράδειγμα ΙΙΙ 1. // αναγνώριση θετικών αριθμών 3. #include <stdio.h> 4. 5. main() 6. { 7. int value, result; 8. 9. printf ("Please enter an integer value: "); 10. scanf("%d", &value); 11. 1 result = (value > 0); 13. if (result) 14. printf("value %d is positive\n", value); 15. } ακόμη και εάν δεν το προσδιορίσουμε ελέγχει αν η τιμή είναι διαφορετική από 0 24

Εντολή (statement) - Επιλογή - if - Περίεργες συνθήκες 1. if (1) if (0) 3. if (a) 4. if (!a) 5. if (a=-2) // είναι πάντα αληθής // είναι πάντα ψευδής // είναι ισοδύναμη με την if (a!=0) // είναι ισοδύναμη με την if (a==0) // είναι αληθής γενικά, η έκφραση: a = <τιμή> είναι αληθής αν η τιμή είναι 0 αν η τιμή που αναθέτουμε είναι 0 τότε η συνθήκη είναι ψευδής 25

Εντολή (statement) - Επιλογή - if - 2 ο Παράδειγμα 1. // αναγνώριση θετικών αριθμών και μη θετικών αριθμών 3. #include <stdio.h> 4. 5. main() 6. { 7. int value; 8. 9. printf ("Please enter an integer value: "); 10. scanf("%d", &value); 11. 1 if (value > 0) 13. printf("value %d is positive\n", value); 14. else 15. printf("value %d is not positive\n", value); // αρνητικός ή μηδέν 16. } 26

Εντολή (statement) - Επιλογή - if - 3 ο Παράδειγμα 1. // αναγνώριση θετικών αριθμών, αρνητικών αριθμών και του μηδενός 3. #include <stdio.h> 4. 5. main() 6. { 7. int value; 8. 9. printf ("Please enter an integer value: "); 10. scanf("%d", &value); 11. 1 if (value > 0) 13. printf("value %d is positive\n", value); 14. else if (value < 0) 15. printf("value %d is negative\n", value); 16. else 17. printf("value %d is zero\n", value); 18. } 27

Εντολή (statement) - Επιλογή - if - 4 ο Παράδειγμα 1. main() { 3. int value; 4. 5. printf ("Please enter an integer value: "); 6. scanf("%d", &value); 7.? σε τι διαφέρουν αυτά τα δύο προγράμματα; τι γίνεται εάν value=2; 8. if (value == 2) 9. printf("the value is 2\n"); 10. if (value < 5) 11. printf("value %d is less than 5\n", value); 1 else 13. printf("value %d is greater than 4\n", value); 14. } 1. main() { 3. int value; 4. 5. printf ("Please enter an integer value: "); 6. scanf("%d", &value); 7. 8. if (value == 2) 9. printf("the value is 2\n"); 10. else if (value < 5) 11. printf("value %d is less than 5\n", value); 1 else 13. printf("value %d is greater than 4\n", value); 14. } εάν value=2 εκτυπώνει: the value is 2 value 2 is less than 5 εάν value=2 εκτυπώνει: the value is 2 28

Εντολή (statement) - Επιλογή - if - ΠΡΟΣΟΧΗ ΛΑΘΟΣ! if( i == j ) if ( j == k ) printf("i equals k"); else printf("i is not equal to j"); το (πράσινο) else μοιάζει σαν να πηγαίνει με το (μπλε) else αλλά ταιριάζεται με το τελευταίο (πράσινο) if ΣΩΣΤΟ! if( i == j ){ if ( j == k ) { printf("i equals k"); } } else { printf("i is not equal to j ); } ένα if μπορεί να είναι φωλιασμένο (nested) κάτω από κάποιο άλλο if προσοχή: ένα else ταιριάζεται με το τελευταίο if του ίδιου σώματος (block) κώδικα (ακόμη κι αν η στοίχιση του κώδικα υπονοεί διαφορετικά) πάντα να βάζετε { } στο σώμα των if, else if, else εντολών πάντα να στοιχίζετε σωστά τον κώδικα 29

Εντολή (statement) - Μπλοκ ή σύνθετη εντολή - 5 ο Παράδειγμα ΙΙΙ 1. // εύρεση μεγίστου τριών αριθμών main () 3. { 4. int a, b, c, min, max; 5. 6. printf("enter first number: "); 7. scanf("%d", &a); 8. printf("enter second number: "); 9. scanf("%d", &b); 10. printf("enter third number: "); 11. scanf("%d", &b); 1 13. if (a > b) { 14. if (a > c) 15. printf("max = %d \n", a); 16. else 17. printf("max = %d \n", c); 18. } 19. else { 20. if (b > c) 21. printf("max = %d \n", b); 2 else 23. printf("max = %d \n", c); 24. } λύση με ένθετα if 1. // εύρεση μεγίστου τριών αριθμών main () 3. { 4. int a, b, c, min, max; 5. 6. printf("enter first number: "); 7. scanf("%d", &a); 8. printf("enter second number: "); 9. scanf("%d", &b); 10. printf("enter third number: "); 11. scanf("%d", &b); 1 13. if (a > b && a > c) 14. printf("max = %d \n", a); 15. else if (b > a && b > c) 16. printf("max = %d \n", b); 17. else 18. printf("max = %d \n", c); 19. }? πώς συμπεριφέρονται αυτά τα προγράμματα εάν: a=b ή b=c; λύση με λογικές προτάσεις 30

Εντολή (statement) - Επιλογή - if - 6 ο Παράδειγμα 1. // αριθμομηχανή 3. #include <stdio.h> 4. 5. main() 6. { 7. char op; 8. float x, y; 9. 10. printf ("Please enter the first real number, the operand, and the second real number: "); 11. scanf("%f %c %f", &x, &op, &y); 1 13. if (op == '+') 14. printf("%f + %f = %f \n", x, y, x+y); 15. else if (op == '+') 16. printf("%f - %f = %f \n", x, y, x-y); 17. else if (op == '*') 18. printf("%f * %f = %f \n", x, y, x*y); 19. else if (op == '/') 20. printf("%f / %f = %f \n", x, y, x/y); 21. else 2 printf("error: Wrong operator! \n"); 23. } η τιμή της y μπορεί να είναι μηδέν! 31

Εντολή (statement) - Επιλογή - if - 6 ο Παράδειγμα II 1. // αριθμομηχανή #include <stdio.h> 3. main() 4. { 5. char op; 6. float x, y; 7. 8. printf ("Please enter the first real number, the operand, and the second real number: "); 9. scanf("%f %c %f", &x, &op, &y); 10. 11. if (op == '+') 1 printf("%f + %f = %f \n", x, y, x+y); 13. else if (op == '-') 14. printf("%f - %f = %f \n", x, y, x-y); 15. else if (op == '*') 16. printf("%f * %f = %f \n", x, y, x*y); 17. else if (op == '/') { 18. if (y == 0) printf("error: Division with zero! \n"); 19. else printf("%f / %f = %f \n", x, y, x/y); 20. } 21. else 2 printf("error: Wrong operator! \n"); 23. } 32

Εντολή (statement) - Επιλογή - if - 6 ο Παράδειγμα III 1. // αριθμομηχανή 3. #include <stdio.h> 4. 5. main() 6. { 7. char op; 8. float x, y, result; 9. 10. printf ("Please enter the first real number, the operand, and the second real number: "); 11. scanf("%f %c %f", &x, &op, &y); 1 13. if (op == '+') 14. result = x + y; 15. else if (op == '-') 16. result = x - y; 17. else if (op == '*') 18. result = x * y; 19. else if (op == '/') 20. result = x / y; 21. 2 printf("%f %c %f = %f \n", x, op, y, result); 23. } εάν η op είναι λάθος σύμβολο, τότε δε θα εκτελεστεί καμία πράξη! το πρόγραμμα εκτυπώνει λάθος αποτέλεσμα 33

Εντολή (statement) - Επιλογή - if - 6 ο Παράδειγμα IV 1. // αριθμομηχανή 3. #include <stdio.h> 4. 5. main() 6. { 7. char op; 8. float x, y, result; 9. int flag = 0; 10. 11. printf ("Please enter the first real number, the operand, and the second real number: "); 1 scanf("%f %c %f", &x, &op, &y); 13. 14. if (op == '+') 15. result = x + y; 16. else if (op == '-') 17. result = x - y; 18. else if (op == '*') 19. result = x * y; 20. else if (op == '/') 21. result = x / y; 2 else 23. flag = 1; παραμένει το πρόβλημα της διαίρεσης με το μηδέν! 24. if (flag == 1) 25. printf("error: Wrong operator! \n"); 26. else 27. printf("%f %c %f = %f \n", x, op, y, result); 28. } 34

Εντολή (statement) - Επιλογή - switch - 6 ο Παράδειγμα 1. // αριθμομηχανή #include <stdio.h> 3. main() { 4. char op; 5. float x, y; 6. printf ("Please enter the first real number, the operand, and the second real number: "); 7. scanf("%f %c %f", &x, &op, &y); 8. switch (op) { 9. case '+': 10. printf("%f + %f = %f \n", x, y, x+y); 11. break; 1 case '-': 13. printf("%f - %f = %f \n", x, y, x-y); 14. break; 15. case '*': 16. printf("%f * %f = %f \n", x, y, x*y); 17. break; 18. case '/': 19. printf("%f / %f = %f \n", x, y, x/y); 20. break; 21. default: 2 printf("error: Wrong operator! \n"); 23. } 24. } παραμένει το πρόβλημα της διαίρεσης με το μηδέν! 35

Σύνοψη Εντολές ελέγχου if if-else if-else if-else switch case break Διαγράμματα ροής Μπλοκ ή Σύνθετη εντολή 36