Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης
Εντολές Ελέγχου 2
Γενικά Εντολές λήψης αποφάσεων Επιτρέπουν στο πρόγραμμα να εκτελεί διαφορετικές ενέργειες με βάση το αποτέλεσμα κάποιων λογικών ελέγχων Οι προτάσεις ελέγχου είναι if case 3
H Εντολή If Οι εντολές για τη λήψη αποφάσεων επιτρέπουν στο πρόγραμμα να εκτελεί διαφορετικές ενέργειες βασιζόμενο σε κάποιους λογικούς ελέγχους. Αποτελείται από τη δεσμευμένη λέξη If που ακολουθείται από μια συνθήκη και μετά από τη δεσμευμένη λέξη Then. Μετά το Then ακολουθεί μία εντολή ή ένα σύνολο εντολών. 4
Η Πρόταση Ελέγχου if... then if «πρόταση» then Begin «εντολές» End; 5
Λειτουργία If Ελέγχει αν μία πρόταση είναι αληθής ή ψευδής Σε περίπτωση που είναι αληθής εκτελούνται οι εντολές που ακολουθούν Σε περίπτωση που είναι ψευδής οι εντολές που ακολουθούν αγνοούνται (δεν εκτελούνται) 6
Παρατηρήσεις Όταν οι εντολές είναι περισσότερες από μία πρέπει να εσωκλείονται σε Begin και End Όταν υπάρχει μόνο μία εντολή τα Begin και End είναι προαιρετικά Συνιστάται η χρήση των Begin και End σε κάθε περίπτωση 7
Παράδειγμα If (1) Program ElegxosMeIf; Var a : Integer; Begin Write('Dose arithmo:'); Readln(a); if (a>0) then Begin Write('Thetikos'); End; 8
Παράδειγμα If (2) if (a<0) then Begin Write('Arnitikos'); End; if (a=0) then Begin Write('Edoses 0'); End; Readln; End. 9
Επεξήγηση Παραδείγματος Αν η μεταβλητή a είναι μεγαλύτερη από 0 τότε τύπωσε στην οθόνη «Θετικός» Αν η μεταβλητή a είναι μικρότερη του 0 τότε τύπωσε στην οθόνη «Αρνητικός» Αν η μεταβλητή a είναι ίση με 0 τότε τύπωσε στην οθόνη «Έδωσες 0» 10
Η Εντολή Else Σε μια εντολή If μπορεί να υπάρχει προαιρετικά και η πρόταση Else, ακολουθούμενη από μία ή περισσότερες εντολές που εκτελούνται αν η συνθήκη του If είναι ψευδής. Η πρόταση Else επιτρέπει σε μια πρόταση If να πάρει δύο διαφορετικές αποφάσεις. Ανάλογα με τους ελέγχους του προγράμματος επιτρέπεται το φώλιασμα και ο συνδυασμός των εντολών If.. Then.. Else. Κάθε πρόταση Else συνδέεται με την αμέσως προηγούμενή της If. 11
Η Πρόταση Ελέγχου if... then... else If «πρόταση» then Begin «εντολές» End else Begin «εντολές» End; 12
Παράδειγμα if... then... else Program ElegxosMeElse; Var b : Integer; Begin Write('Dose arithmo:'); Readln(b); if (b>=100) then Begin Write('OK'); End else Begin Writeln('Error'); End; Readln; End. 13
Παρατηρήσεις Ο σκοπός που βάζουμε το else σε μια πρόταση ελέγχου if... then είναι σε περίπτωση που δεν ισχύουν οι if αλλά κάτι άλλο Προσέξτε ότι στην εντολή που βρίσκεται αμέσως πριν το else δεν βάζουμε ερωτηματικό (;) Οι if μπορούν να είναι φωλιασμένες (δηλαδή if μέσα σε if) Όταν ο έλεγχος είναι πολλαπλός μπορεί να χρησιμοποιηθεί και η εντολή else if 14
AND και OR Σε περίπτωση που έχουμε πάνω από μία συνθήκες να ελέγξουμε χρησιμοποιούμε τους λογικούς τελεστές AND και OR Το AND το χρησιμοποιούμε όταν επιθυμούμε να ισχύουν όλες οι προτάσεις μέσα σε μία συνθήκη Το OR το χρησιμοποιούμε όταν επιθυμούμε να ισχύει έστω και μία από τις προτάσεις της συνθήκης 15
Program ElexgosANDOR; Var c : Integer; Παράδειγμα AND Begin Write('Dose arithmo:'); Readln(c); if (c>=0) and (c<=100) then Begin Write('Eise mesa sta oria') End else Begin Write('Eise ektos oriwn'); End; Readln; End. 16
Η Εντολή Case Η εντολή Case επιλέγει μία πράξη ανάμεσα από πολλές με βάση το αποτέλεσμα ενός ελέγχου. Η προς έλεγχο έκφραση καλείται «επιλογέας» και κάθε επιλογή καλείται «σταθερά» της Case. Αν ο επιλογέας δεν ταιριάζει με καμία από τις σταθερές της Case, θα εκτελεστεί η δήλωση που ορίζεται με τη λέξη Else. Κάθε εντολή Case πρέπει να τερματίζεται με μια εντολή End. 17
Η Πρόταση Ελέγχου case case «μεταβλητή» of «λίστα τιμών1» : Begin «εντολές» End;... «λίστα τιμών 2» : Begin «εντολές» End; else Begin «εντολές» End; End; 18
Παράδειγμα case Program ElegxosMeCase; Var c : char; Begin Write('Dose a or b:'); Readln(c); case c of 'a': Begin writeln('alpha'); End; 'b': Begin writeln('beta'); End; else Begin writeln('other'); End; End. End; Readln; 19
Εντολές Επανάληψης 20
Οι Βρόχοι (Loops) Ο βρόχος (loop) είναι η συνεχής επανάληψη μίας μόνο εντολής ή και μιας ομάδας εντολών μέχρις ότου να ισχύσει μια συνθήκη (condition). Υπάρχουν τρία είδη βρόχων : Η επανάληψη ενός βρόχου για έναν καθορισμένο αριθμό φορών. Ο έλεγχος μιας λογικής έκφρασης (συνθήκης) αρχικά και αν αυτή είναι αληθής (true), τότε ακολουθεί η εκτέλεση ενός βρόχου. Η εκτέλεση ενός βρόχου για μία τουλάχιστον φορά αρχικά και μετά ακολουθεί ο έλεγχος μιας λογικής έκφρασης (συνθήκης). 21
Οι βρόγχοι for, while... do και repeat Επαναληπτικές Δομές Επιτρέπουν στο πρόγραμμα να εκτελεί πολλές φορές και κατ επανάληψη ένα κομμάτι κώδικα Οι επαναληπτικές δομές είναι for do... while repeat... until... until 22
Ο Βρόχος For Στην Pascal, η επανάληψη ενός βρόχου για έναν καθορισμένο αριθμό φορών γίνεται με την εντολή for. Στην Pascal, με τον βρόχο for μπορούμε να έχουμε βήμα μόνο κατά 1. 23
Δομή Βρόγχου For for μεταβλητή:=αρχή to τέλος do Begin «κώδικας προς επανάληψη» End; Η τιμή της μεταβλητής του δείκτη (index variable) θα πρέπει να είναι ενός βαθμωτού (ordinal) τύπου δεδομένων. Μπορούμε να χρησιμοποιήσουμε τον δείκτη σε υπολογισμούς μέσα στο σώμα ενός βρόχου, αλλά δεν πρέπει να αλλάξουμε την τιμή του. 24
Παράδειγμα For (1) Program ForExample1; var count :integer; begin for count := 1 to 10 do begin writeln(count); end; Readln; End. 25
Επεξήγηση Παραδείγματος(1) For Η μεταβλητή count παίρνει αρχική τιμή 1 Η τελική τιμή της count είναι 10 Ο κώδικας εκτελείται 10 φορές Σε κάθε εκτέλεση η τιμή της count γίνεται διαδοχικά 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Σ έναν βρόχο for-to-do, η αρχική τιμή θα πρέπει να είναι μικρότερη από την τελική τιμή, διαφορετικά ο βρόχος δεν θα εκτελεσθεί ποτέ 26
Παράδειγμα For (2) Program ForExample2; var count :integer; begin for count := 10 downto 1 do begin writeln(count); end; Readln; End. 27
Επεξήγηση Παραδείγματος(2) For Κάνει ότι και το προηγούμενο παράδειγμα με τη διαφορά ότι η μεταβλητή count μετράει ανάποδα Η count σε κάθε επανάληψη παίρνει διαδοχικά τις τιμές 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 Αν θέλουμε να μετρήσουμε ανάποδα, θα πρέπει να χρησιμοποιήσουμε τον βρόχο for-downto-do 28
Ο Βρόχος While Do Ο βρόχος συνεχίζει να εκτελείται μέχρις ότου γίνει ψευδής (false) η λογική έκφραση. Μέσα στο σώμα του βρόχου θα πρέπει με κάποιον τρόπο να επηρεάσουμε την λογική έκφραση αλλάζοντας τιμή σε κάποια από τις μεταβλητές που υπάρχουν εκεί. Ο βρόχος while do είναι γνωστός και ως pretest loop επειδή η συνθήκη ελέγχεται πριν εκτελεσθεί έστω και μία φορά το σώμα του βρόχου. Αυτό σημαίνει ότι αν η συνθήκη (λογική έκφραση) είναι ψευδής (false) από την αρχή, το σώμα του βρόχου while δεν θα εκτελεσθεί ποτέ. 29
Δομή Βρόγχου while... do while «συνθήκη» do Begin «κώδικας προς επανάληψη» End; 30
Παράδειγμα while... do Program WhileExample; var a :integer; begin a := 0; while a < 10 do begin writeln (a); a := a + 1; end; Readln; End. 31
Επεξήγηση Παραδείγματος while... do Αρχικά δίνουμε αρχική τιμή στη μεταβλητή a ίση με 0 Όσο η a είναι μικρότερη του 10 τυπώνεται η a και στη συνέχεια η a αυξάνει κατά ένα Η a παίρνει σε κάθε επανάληψη διαδοχικά τις τιμές 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Μόλις η a γίνει δέκα η συνθήκη παύει να ισχύει και ο βρόγχος τερματίζεται 32
Ατέρμονα βρόχος while... do a := 5; while a < 6 do writeln (a); Ο παραπάνω βρόχος δεν θα σταματήσει ποτέ να εκτελείται (ατέρμονας) και αυτό γιατί η μεταβλητή a, που χρησιμοποιείται στην λογική έκφραση του βρόχου, δεν αλλάζει πουθενά τιμή μέσα στον βρόχο και έτσι η λογική έκφραση είναι πάντα αληθής (true). 33
Διόρθωση Ατέρμονα βρόχου while... do Μπορούμε να διορθώσουμε αυτήν την κατάσταση, αν αλλάξουμε τιμή στην μεταβλητή μέσα στον βρόχο, ως εξής : a := 5; while a < 6 do begin writeln (a); a := a + 1 end; 34
Ο Βρόχος Repeat Until Στον βρόχο αυτόν δεν χρειάζεται μα χρησιμοποιήσουμε τον συνδυασμό begin end στην περίπτωση που έχουμε περισσότερες από μία εντολές. Ο βρόχος συνεχίζει να εκτελείται έως ότου η λογική έκφραση γίνει αληθής (true), σε αντίθεση με τον βρόχο while, ο οποίος συνεχίζει να εκτελείται για όσο διάστημα η λογική έκφραση παραμένει αληθής (true). 35
Ο Βρόγχος Repeat... Until Repeat «κώδικας προς επανάληψη» Until «συνθήκη»; Ο βρόχος Repeat... Until είναι γνωστός και ως posttest loop επειδή η συνθήκη ελέγχεται αφού έχει εκτελεσθεί το σώμα του βρόχου και είναι χρήσιμος όταν θέλουμε να εκτελεσθεί ο βρόχος μία φορά τουλάχιστον, άσχετα με την αρχική τιμή της λογικής έκφρασης. 36
Παράδειγμα Repeat... Until Program RepeatExample; var a :integer; begin a := 0; Repeat writeln(a); a := a + 1; Until (a > 9); Readln; End. 37
Επεξήγηση Παραδείγματος Repeat... Until Στην μεταβλητή a δίνουμε αρχική τιμή 0 Η a θα αυξάνεται κατά ένα μέχρι να πάρει τιμή μεγαλύτερη του 9 Σε κάθε επανάληψη η a παίρνει διαδοχικά τις τιμές 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Μόλις το a γίνει 10 η συνθήκη πλέον ισχύει και ο βρόγχος τερματίζεται 38
Παρατηρήσεις Οι βρόγχοι με συνθήκη θα πρέπει να συμπεριλαμβάνουν κάτι που να αλλάζει την τιμή της έκφρασης αλλιώς ο βρόγχος δεν θα τερματίζεται ποτέ 39
Τέλος Κεφαλαίου