290 likes | 402 Views
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος δ. ΠΡΥ019 - Πληροφορική Δρ.Βάσος Βασιλείου. Εντολές Διακλάδωσης. Εντολ ή IF/THEN Eντολή IF/THEN/ELSE Ένθετη Διακλάδωση Πολλαπλή Διακλάδωση. Εντολή IF-THEN. IF < συνθήκη> THEN < διαδικασία>;. ναι. συνθήκη. διαδικασία. όχι.
E N D
Προγραμματισμός 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 IF <συνθήκη>THEN <διαδικασία 1> ELSE <διαδικασία 2>; ψευδής αληθής συνθήκη Διαδικασία2 Διαδικασία1 Επόμενη εντολή
Εντολή IF-THEN-ELSE (2) IF Q>=100 THEN BEGIN WRITE(‘ΕΚΠΤΩΣΗ’); COST:=Q*6.5 END ELSE BEGIN WRITE(‘ΧΩΡΙΣ ΕΚΠΤΩΣΗ); COST:=Q*7 END; WRITELN(‘ΤΕΛΟΣ’); IF K>15 THEN K:=K+5 ELSE K:=K-5; WRITELN(K);
Ένθετες Διακλαδώσεις IF<συνθήκη> THEN IF <συνθήκη> THEN . . IF <συνθήκη> THEN <Διαδικασία>
ναι συνθήκη1 ναι συνθήκη2 όχι ναι όχι συνθήκηΝ όχι διαδικασία Έπόμενη εντολή Ένθετες Διακλαδώσεις (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 ELSE Τιμή επιλογήςΝ διαδικασία1 διαδικασία3 Εναλλακτική διαδικασία διαδικασία2 διαδικασίαΝ
Πολλαπλή Διακλάδωση (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 FOR<μεταβλητή ελέγχου>:= <αρχική τιμή> ΤΟ <τελική τιμή> DO <σώμα της Δομής>;
Επαναληπτκή Δομή FOR-DO (2) * m -μετρητής m:=1 * ναι m<=5 όχι A:=a*b * m:=m+1 * FOR M:=1 TO 5 DO A:=A*B;
Επαναληπτκή Δομή FOR-DO (3) * m -μετρητής m:=5 * ναι M>=0 όχι A:=a*b * m:=m-1 * FOR M:=5 DOWNTO 0 DO A:=A*B;
Εντολή WHILE-DO WHILE <συνθήκη> DO <συνθήκη>
Εντολή WHILE-DO (2) m -μετρητής m:=1 ναι M:=1; while m<=5 do begin a:=a*b; m:=m+1 end; m<=5 όχι A:=a*b m:=m+1
Εντολή WHILE-DO (3) m -μετρητής m:=1 ναι 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 όνομα = σύνολο τιμών; π.χ. TYPEday=(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;