Κεφάλαιο 10
Εντολές Επιλογής & Αποφάσεων.
Η Δομή Της Επιλογής. Ορισμένες φορές δεν επιθυμούμε την διαδοχική εκτέλεση εντολών (Δομή Ακολουθίας) αλλά την εκτέλεση τους υπό συνθήκες.
Παράδειγμα
Αν έχω χρήματα τότε Θα πάω για ψώνια Θα πιω καφέ Αλλιώς Θα δω TV Θα παίξω PSP Τελος_Άν
2
1/11/2013
Κέρος Α. Ιωάννης
Σύνθετη Εντολή. Πρόκειται για πολλές εντολές μαζί οι οποίες ομαδοποιούνται για να αποτελέσουν μία ενιαία εντολή. Begin Εντολή-1; Εντολή-2; . . End
3
1/11/2013
Κέρος Α. Ιωάννης
Σύνθετη Επιλογή if. if λογική-έκφραση then Εντολή-1 else
Εντολή-2; Ενέργεια: Υπολογίζεται η τιμή της λογικής έκφρασης και: α. Αν ήταν True, εκτελείται η Εντολή-1 β. Αν ήταν False, εκτελείται η Εντολή-2. Προσοχή στην χρήση του ; μόνο στο τέλος της εντολής.
4
1/11/2013
Κέρος Α. Ιωάννης
Παράδειγμα Σύνθετης Επιλογής. Να γραφεί πρόγραμμα Pascal που θα διαβάσει 2 αριθμούς a και b και αν a>b θα εμφανίσει το άθροισμα τους, διαφορετικά το γινόμενο τους. (PC10Exe1.pas)
5
1/11/2013
Κέρος Α. Ιωάννης
Λύση (Κωδικοποίηση).
6
1/11/2013
Κέρος Α. Ιωάννης
Λύση (Λογικό Διάγραμμα).
7
1/11/2013
Κέρος Α. Ιωάννης
Σύνθετη Επιλογή if Με Σύνθετη Εντολή. if λογική-έκφραση then Begin Εντολή-1; Εντολή-2; Ενέργεια: . Υπολογίζεται η τιμή της λογικής έκφρασης και: end α. Αν ήταν True, εκτελείται η Εντολή-1, Εντολή-2 κλπ. else β. Αν ήταν False, εκτελείται η Εντολή-3, Εντολή-4 κλπ. Begin Εντολή-3; Εντολή-4; . end;
8
Προσοχή στην χρήση του ; μόνο στο τέλος της εντολής. 1/11/2013
Κέρος Α. Ιωάννης
Παράδειγμα Σύνθετης Επιλογής. Να γραφεί πρόγραμμα Pascal που θα διαβάσει 2 αριθμούς a και b και αν a>b θα εμφανίσει το άθροισμα τους +10, διαφορετικά την διαφορά τους +20. (PC10Exe2.pas)
9
1/11/2013
Κέρος Α. Ιωάννης
Λύση (Κωδικοποίηση).
10
1/11/2013
Κέρος Α. Ιωάννης
Λύση (Λογικό Διάγραμμα).
11
1/11/2013
Κέρος Α. Ιωάννης
Απλή Επιλογή if. if λογική-έκφραση then Εντολή; Ενέργεια: Υπολογίζεται η τιμή της λογικής έκφρασης και: α. Αν ήταν True, εκτελείται η Εντολή β. Αν ήταν False, δεν εκτελείται η Εντολή. Προσοχή στην χρήση του ; μόνο στο τέλος της εντολής.
12
1/11/2013
Κέρος Α. Ιωάννης
Παράδειγμα Απλής Επιλογής. Να γραφεί πρόγραμμα Pascal που θα διαβάσει έναν αριθμό a και θα εμφανίσει την απόλυτη του τιμή. (PC10Exe3.pas)
13
1/11/2013
Κέρος Α. Ιωάννης
Λύση (Κωδικοποίηση).
14
1/11/2013
Κέρος Α. Ιωάννης
Λύση (Λογικό Διάγραμμα).
15
1/11/2013
Κέρος Α. Ιωάννης
Απλή Επιλογή if Με Σύνθετη Εντολή. if λογική-έκφραση then Begin Εντολή-1; Εντολή-2; . end; Ενέργεια: Υπολογίζεται η τιμή της λογικής έκφρασης και: α. Αν ήταν True, εκτελείται η Εντολή-1, Εντολή-2 κλπ. β. Αν ήταν False, δεν εκτελείται η Εντολή-1, Εντολή-2 κλπ.
Προσοχή στην χρήση του ; μόνο στο τέλος της εντολής.
16
1/11/2013
Κέρος Α. Ιωάννης
Παράδειγμα Σύνθετης Επιλογής. Να γραφεί πρόγραμμα Pascal που θα διαβάσει 2 αριθμούς a και b και θα τους εμφανίσει στην οθόνη προσαυξημένους κατά 4 και 8 αντίστοιχα, εκτός αν a<b οπότε θα τους εμφανίσει προσαυξημένους κατά 10 και 20 αντίστοιχα. (PC10Exe4.pas)
17
1/11/2013
Κέρος Α. Ιωάννης
Λύση (Κωδικοποίηση).
18
1/11/2013
Κέρος Α. Ιωάννης
Λύση (Λογικό Διάγραμμα).
19
1/11/2013
Κέρος Α. Ιωάννης
Εμφωλευμένη Επιλογή if. Πρόκειται για την δυνατότητα να τοποθετηθεί ένα if μέσα σε ένα άλλο κοκ. Στην περίπτωση αυτή δεν αλλάζει κάτι σε σχέση με πριν (δηλαδή ή εκτελείται το κομμάτι από το if έως το else εάν ισχύει η συνθήκη ή το κομμάτι από το else έως το ; εάν δεν ισχύει).
Προσοχή στην χρήση του ; μόνο στο τέλος της εντολής. Αναγνωρίστε για κάθε if που έχετε ποιο κομμάτι εκτελείται αν ισχύει η συνθήκη και ποιο αν δεν ισχύει.
20
1/11/2013
Κέρος Α. Ιωάννης
Παράδειγμα Εμφωλευμένης Επιλογής. Να γραφεί αλγόριθμος που θα διαβάσει τους συντελεστές a και b της εξίσωσης α’ βαθμού: ax+b=0 και θα εμφανίσει την κατάλληλη απάντηση ανάλογα με τις τιμές των a και b. Υπόδειξη 1η Περίπτωση: αν a<>0 τότε υπάρχει μία ρίζα x= - b / a 2η Περίπτωση: αν a=0 τότε 2α Περίπτωση: αν b=0 τότε η εξίσωση είναι αόριστη 2β Περίπτωση: αν b<>0 τότε η εξίσωση είναι αδύνατη. (PC10Exe5.pas)
21
1/11/2013
Κέρος Α. Ιωάννης
Λύση (Κωδικοποίηση).
22
1/11/2013
Κέρος Α. Ιωάννης
Λύση
(Λογικό Διάγραμμα).
23
1/11/2013
Κέρος Α. Ιωάννης
Η Επιλογή Case. case έκφραση of τιμή-1,τιμή-2,… : Εντολή-1; Προσοχή στα ; τιμή-3,τιμή-4,… : Εντολή-2; . Ενέργεια: . Υπολογίζεται η τιμή της έκφρασης και: else α. Αν είναι ίση με την τιμή-1, τιμή-2 κοκ εκτελείται η Εντολή-1, Εντολή; διαφορετικά, end;
β. Αν είναι ίση με την τιμή-3, τιμή-4 κοκ εκτελείται η Εντολή-2, κοκ . . Εάν δεν ήταν ίση με καμιά από τις παραπάνω περιπτώσεις εκτελείται η εντολή που ακολουθεί το else.
24
1/11/2013
Κέρος Α. Ιωάννης
Παραδείγματα Case. case x of 1,2,3: writeln(‘ΠΑΟΚ’); 4,5,6: writeln(‘ΑΡΗΣ’); 7,8,9: writeln(‘ΗΡΑΚΛΗΣ’); else writeln(‘ΟΣΦΠ’); end; Εντολές…
Αν x=2 εμφανίζεται: ΠΑΟΚ Αν x=6 εμφανίζεται: ΑΡΗΣ Αν x=10 εμφανίζεται: ΟΣΦΠ
Εντολές…
Εντολές…
25
1/11/2013
Κέρος Α. Ιωάννης
Παραδείγματα Case (συνέχεια). case x of 1,2,3: writeln(‘ΠΑΟΚ’); 4,5,6: writeln(‘ΑΡΗΣ’); 7,8,9: writeln(‘ΗΡΑΚΛΗΣ’); end;
Αν x=2 εμφανίζεται: ΠΑΟΚ Αν x=6 εμφανίζεται: ΑΡΗΣ Αν x=10 δεν γίνεται τίποτα και συνεχίζουμε μετά το end;
Εντολές… Εντολές… Εντολές…
26
1/11/2013
Κέρος Α. Ιωάννης
Παραδείγματα Case (συνέχεια). case x of ‘Α’, ‘Β’ : writeln(‘Πολύ καλά’); ‘C’, ‘D’ : writeln(‘Καλά’); ‘Ε’ : begin y:=5; writeln(‘Μέτρια’); end; else writeln(‘Λάθος’); end;
Αν x=‘Α’ εμφανίζεται: Πολύ καλά Αν x=‘D’ εμφανίζεται: Καλά Αν x=‘E’ το y γίνεται ίσο με 5 και εμφανίζεται: Μέτρια
Εντολές… Εντολές…
27
Εντολές…
1/11/2013
Κέρος Α. Ιωάννης
Παραδείγματα Case (συνέχεια). case x of true : writeln(‘Good’); false : writeln(‘Bad’); end;
Αν x=True εμφανίζεται: Good Αν x=False εμφανίζεται:Bad
Εντολές… Εντολές…
28
1/11/2013
Κέρος Α. Ιωάννης
Παραδείγματα Case (συνέχεια). case x of 1,2 : writeln(‘ΠΑΟΚ’); 4,5 : writeln(‘ΑΡΗΣ’); 7..10,12 : writeln(‘ΗΡΑΚΛΗΣ’); else writeln(‘ΟΣΦΠ’); end; Εντολές…
Αν x=2 εμφανίζεται: ΠΑΟΚ Αν x=5 εμφανίζεται: ΑΡΗΣ Αν x=8 εμφανίζεται: ΗΡΑΚΛΗΣ
Εντολές… Εντολές…
29
1/11/2013
Κέρος Α. Ιωάννης
Παράδειγμα Με Επιλογή Case. Να γραφεί αλγόριθμος που θα διαβάσει έναν ακέραιο αριθμό x και θα εμφανίσει:
•
Α, αν x=1 ή x=2 ή x=4,
•
Β, αν x>=5 και x<=8
•
Γ, αν x>=10 και x<=20 ή x=25
•
Άγνωστος χαρακτήρας, διαφορετικά
(PC10Exe6.pas)
30
1/11/2013
Κέρος Α. Ιωάννης
Λύση (Κωδικοποίηση).
31
1/11/2013
Κέρος Α. Ιωάννης
Λύση (Λογικό Διάγραμμα).
32
1/11/2013
Κέρος Α. Ιωάννης
Σύγκριση Case - If
PC10Exe6.pas
33
1/11/2013
PC10Exe7.pas
Κέρος Α. Ιωάννης