Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος δ ΠΡΥ019 - Πληροφορική Δρ.Βάσος Βασιλείου
Εντολές Διακλάδωσης Εντολή IF/THEN Eντολή IF/THEN/ELSE Ένθετη Διακλάδωση Πολλαπλή Διακλάδωση
ναι όχι Εντολή IF-THEN IF <συνθήκη> THEN <διαδικασία>; If x>y then a:=x-y Επόμενη εντολή
Εντολή IF-THEN (2) READLN (X,Y); IF X>Y THEN WRITELN(‘ Η MΕΤΑΒΛΗΤΗ Χ ΕΙΝΑΙ ΜΕΓΑΛΥΤΕΡΗ ΤΗΣ ΜΕΤΑΒΛΗΤΗΣ Υ’); WRITELN(‘ΤΕΛΟΣ’);
Εντολή IF-THEN (3) READLN(X,Y); IF X>=Y THEN BEGIN X:=X+Y; Y:=Y-5; END; WRITELN(X,Y);
Εντολή IF-THEN-ELSE ψευδής αληθής συνθήκη Διαδικασία2 Διαδικασία1 Επόμενη εντολή
Εντολή IF-THEN-ELSE (2) IF K>15 THEN K:=K+5 ELSE K:=K-5; WRITELN(K); IF Q>=100 THEN BEGIN WRITE(‘ΕΚΠΤΩΣΗ’); COST:=Q*6.5 END ELSE WRITE(‘ΧΩΡΙΣ ΕΚΠΤΩΣΗ); COST:=Q*7 END; WRITELN(‘ΤΕΛΟΣ’);
Ένθετες Διακλαδώσεις IF <συνθήκη> THEN IF <συνθήκη> THEN . <Διαδικασία>
Ένθετες Διακλαδώσεις (2) συνθήκη1 συνθήκη2 συνθήκηΝ διαδικασία Έπόμενη εντολή ναι όχι
Ένθετες Διακλαδώσεις (3) IF a<0 THEN IF b>0 THEN IF c=0 THEN BEGIN WRITELN(‘negative’); WRITELN(‘positive’); WRITELN(‘zero’); END; WRITELN(‘ΤΕΛΟΣ’);
Πολλαπλή Διακλάδωση CASE <έκφραση επιλογής> OF <τιμή επιλογής >:<διαδικασία>; …. ELSE <εναλλακτική διαδικασία> END;
Πολλαπλή Διακλάδωση (2) διαδικασία1 διαδικασία3 διαδικασίαΝ Εναλλακτική διαδικασία διαδικασία2 Τιμή επιλογής1 Τιμή επιλογής2 Τιμή επιλογής3 Τιμή επιλογήςΝ ELSE
Πολλαπλή Διακλάδωση (3) READLN(GRAMMA); CASE GRAMMA OF ‘A’: WRITELN(‘ΑΡΙΣΤΟΣ’); ‘B’: WRITELN(‘ΠΟΛΥ ΚΑΛΟΣ’); ‘C’: WRITELN(‘ΚΑΛΟΣ’); ‘D’: WRITELN(‘ΜΕΤΡΙΟΣ’); ‘E’: WRITELN(‘ΚΑΚΟΣ’) ELSE WRITELN(‘ΛΑΘΟΣ ΧΑΡΑΚΤΗΡΑΣ’) END; WRITELN(‘ΤEΛΟΣ’);
Πολλαπλή Διακλάδωση (3) CASE MONTH OF 1,3,5,7, 8,10,12 : DAYS:=31; 4,6,9,11 : DAYS:=30; 2 : IF (YEAR MOD 4=0) THEN DAYS:=29 ELSE DAYS:=28 END;
Επαναληπτικές Δομές FOR /DO WHILE/DO REPEAT/UNTIL Ένθετες Επαναληπτικές Δομές
Επαναληπτκή Δομή FOR-DO <αρχική τιμή> ΤΟ <τελική τιμή> DO <σώμα της Δομής>;
* m -μετρητής * * Επαναληπτκή Δομή FOR-DO (2) m:=1 m<=5 όχι A:=a*b ναι m<=5 όχι A:=a*b * m:=m+1 * FOR M:=1 TO 5 DO A:=A*B;
* m -μετρητής * * Επαναληπτκή Δομή FOR-DO (3) m:=5 M>=0 όχι A:=a*b ναι M>=0 όχι A:=a*b * m:=m-1 * FOR M:=5 DOWNTO 0 DO A:=A*B;
Εντολή WHILE-DO WHILE <συνθήκη> DO <συνθήκη>
m -μετρητής Εντολή WHILE-DO (2) m:=1 m<=5 όχι A:=a*b m:=m+1 ναι while m<=5 do begin a:=a*b; m:=m+1 end; m<=5 όχι A:=a*b m:=m+1
m -μετρητής Εντολή WHILE-DO (3) m:=1 m<=5 όχι A:=a*b m:=m+1 ναι repeat a:=a*b; m:=m+1 until m>5; m<=5 όχι A:=a*b m:=m+1
Διαφορές Επαναληπτικών Δομών Στην εντολή WHILE/DO πρώτα ελέγχεται η συνθήκη και μετά ανάλογα, εκτελείται ή όχι το σώμα της δομής. Στην εντολή REPEAT/UNTIL πρώτα εκτελείται μιά φορά το σώμα της δομής και μετά ελέγχεται η συνθήκη.
Διαφορές Επαναληπτικών Δομών (2) Στην εντολή WHILE/DO το σώμα δομής μπορεί να μην εκτελεστεί ούτε μιά φορά. Στην εντολή REPEAT/UNTIL εκτελείται πάντοτε τουλάχιστον μιά φορά. Η εντολή WHILE/DO σταματά τη λειτουργία της όταν η συνθήκη γίνει ψευδής. Η εντολή REPEAT/UNTIL σταματά τη λειτουργία της όταν η συνθήκη γίνει αληθής.
Διαφορές Επαναληπτικών Δομών (3) Στην εντολή WHILE/DO το σώμα της δομής, όταν αποτελείται από 2 ή περισσότερες εντολήες, πρέπει να τοποθετείται μεταξύ των εντολών BEGIN και END. Στην εντολή REPEAT/UNTIL δε χρειάζονται τα BEGIN και END. Όταν το σώμα της δομής αποτελείται από μία εντολή τότε, στη δομή WHILE/DO πρέπει να συνοδεύεται από το σύμβολο ; Στην εντολή REPETA/UNTIL το σύμβολο ; δεν είναι απαραίτητο.
Τύποι Δεδομένων Integer real char string boolean
Δεδομένα Βαθμωτού Τύπου TYPE όνομα = σύνολο τιμών; π.χ. TYPE day=(Mon,Tues,Wed); number=integer; color=(blue,red,green); DayNum=1..31;
Δεδομένα Βαθμωτού Τύπου (2) TYPE DAYS=(Deytera,Triti,Tetarti,Pempti, Paraskevi,Sabbato,Kiriaki); Argia=Sabbato..Kiriaki; VAR meres:days; weekend:argia; ergasimes:Deytera..Paraskevi;
Δεδομένα Βαθμωτού Τύπου (3) Οι τιμές βαθμωτού τύπου είναι διατεταγμένες, σύμφωνα με τη σειρά που εμφανίζονται στον ορισμό του τύπου. Π.χ. Η τιμή Triti είναι μεγαλύτερη από την τιμή Deytera διότι τοποθετήθηκε μετά. Οι τιμές βαθμωτού τύπου δε μπορούν να χρησιμοποιηθούν σε συνδυασμό με τις εντολές READ/READLN και WRITE/WRITELN. Γι΄αυτό χρησιμοποιείται η εντολή CASE.
FOR ergasimes:=Deytera TO Paraskevi DO CASE ergasimes OF Deytera :writeln(ΔΕΥΤΕΡΑ); Triti :writeln(ΤΡΙΤΗ); Tetarti :writeln(ΤΕΤΑΡΤΗ); Pempti :writeln(ΠΕΜΠΤΗ); Paraskevi :writeln(ΠΑΡΑΣΚΕΥΗ); END;