ΜΑΘΗΜΑ 2, 080312 Έλεγχος ροής προγράμματος Μπορούμε να χρησιμοποιήσουμε μια σειρά από λογικούς ελέγχους (συγκρίσεις) και με βάση το αποτέλεσμά τους γίνεται η λήψη αποφάσεων για τη συνέχεια του προγράμματος Ουσιαστικά χρησιμοποιούμε στο μυαλό μας την έννοια του 'ΑΝ συνθήκη ΤΟΤΕ ΤΕΛΟΣ' Μπορεί να γίνει και πιο σύνθετο: 'ΑΝ συνθήκη1 ΤΟΤΕ ΑΛΛΙΩΣ ΑΝ συνθήκη2 ΤΟΤΕ ΑΛΛΙΩΣ ΑΝ συνθήκη3 ΤΟΤΕ ΣΕ ΚΑΘΕ ΑΛΛΗ ΠΕΡΙΠΤΩΣΗ ΤΕΛΟΣ' ΒΑΣΙΚΗ ΣΥΝΤΑΞΗ: IF (συνθήκη) THEN (εντολές) IF THEN (εντολές)
IF THEN (εντολές) ΣΥΝΤΑΞΗ ΜΕ ΣΥΝΔΥΑΣΤΙΚΕΣ ΣΥΝΘΗΚΕΣ: Η κάθε συνθήκη μάλιστα μπορεί να είναι μοναδική ή συνδυαστική Μια συνδυαστική μπορεί να είναι των παρακάτω τύπων: IF συνθήκη1 AND συνθήκη2 THEN (εκτελείται αυτό το κομμάτι της διακλάδωσης μόνο αν ΚΑΙ ΟΙ ΔΥΟ συνθήκες ισχύουν) IF συνθήκη1 OR συνθήκη2 THEN (εκτελείται αυτό το κομμάτι της διακλάδωσης αν είναι αληθής ΤΟΥΛΑΧΙΣΤΟΝ ΜΙΑ από τις δύο συνθήκες) IF συνθήκη1 NOR συνθήκη2 THEN (εκτελείται αυτό το κομμάτι της διακλάδωσης μόνο αν ΔΕΝ ΙΣΧΥΕΙ ΚΑΜΙΑ από τις δύο συνθήκες, δηλαδή μόνο αν και οι δύο είναι ψευδείς) ΕΜΦΩΛΕΥΜΕΝΕΣ IF: (μέσα σε κάποια συνθήκη, μπορεί να υπάρχουν υποσυνθήκες) IF (συνθήκη) THEN IF (συνθήκη1) THEN IF (συνθήκη2) THEN (εντολές) ΛΟΓΙΚΕΣ ΣΥΝΘΗΚΕΣ: Μπορούμε να έχουμε τις παρακάτω λογικές συνθήκες: Λογικές συνθήκες Σημασία Πιθανή Απάντηση = Ίσο αληθής/ψευδή
< > Διάφορο αληθής/ψευδή > Μεγαλύτερο αληθής/ψευδή < Μικρότερο αληθής/ψευδή >= Μεγαλύτερο ή ίσο αληθής/ψευδή <= Μικρότερο ή ίσο αληθής/ψευδή Μπορούμε να ελέγχουμε τα παραπάνω: - είτε απ'ευθείας με τιμές (που δεν έχει νόημα), πχ 5 > 3 (true) 153 < 121 (false) 5 >= 5 (true) 11 <> 16 (true) - είτε με μεταβλητές (που ουσιαστικά κρύβουν ένα περιεχόμενο, οπότε αυτό που συγκρίνεται είναι η τιμή τους), πχ a > b (αναλόγως με τις τιμές θα είναι true/false) a < b (αναλόγως με τις τιμές θα είναι true/false) a >= b (αναλόγως με τις τιμές θα είναι true/false) a <> b (αναλόγως με τις τιμές θα είναι true/false) ΠΑΡΑΔΕΙΓΜΑΤΑ: (1) a%=3 b%=5 ' An theloume na sugkrinoume to a me mia timi, px to 3: IF a%>=3 THEN PRINT "nai, einai megalutero i iso tou 3" PRINT "Den einai oute iso oute megalutero me 3" ' An theloume na diaxwrisoume tis periptwseis 'megalutero' kai 'iso': IF a%>3 THEN PRINT "To a einai megalutero tou 3" IF a%=3 THEN PRINT "To a einai iso me 3" PRINT "Den einai oute iso oute megalutero me 3" ' ' An theloume na sugkrinoume to a me to b: IF a%>b% THEN PRINT "To a einai megalutero tou b" IF a%=b% THEN PRINT "To a einai iso me to b" Sta parapanw mporoume stin arxi anti na thetoume tis times twn metavlitwn a% kai b% entos tou kwdika, na epitrepontas ston xristi na epilegei o idios tis times allilepidrwntas me to programma: INPUT "Dwse mia timi (akeraia) gia ton a: "; a% INPUT "Dwse mia timi (akeraia) gia ton b: "; b%
' Antistoixa tha mporousame na eisagagoume mia tuxaiotita sto programma kai kathe fora ta a% kai b% na epilegontai tuxaia se kathe treksimo: RANDOMIZE a% = INT(RND*10) b% = INT(RND*10) ' ASKHSH DIAIRESHS DYO ARITHMWN ME APOTELESMA PANTA > 1 ' Kaname ta parakatw sto ergastirio, alla stin pragmatikotita den leitourgoun swsta se periptwsi pou dwsoume arnitikes times Se auti tin periptwsi kanonika tha prepei na sugkrinoume tis APOLYTES times twn duo metavlitwn, px IF ABS(a%)>=ABS(b%) THEN c!=a%/b% ' Simeiwsi: Prepei na merimnisoume, wste o paronomastis na min pairnei pote mideniki timi ' a tropos ' An theloume na diaxwrisoume tin periptwsi tou a%=b% (na ektupwnei oti einai isa): IF a%>b% THEN PRINT "To a einai megalutero tou b" IF b%=0 THEN 'c!=a%/b% 'PRINT "kai to apotelesma tis diaireris tou a/b einai"; c! IF a%=b% THEN PRINT "To a einai iso me to b kai to apotelesma tis diairesis einai 1" ' diladi an b%>a% (pou tha mporousame na kanoume kai me elseif) IF a%=0 THEN 'c!=b%/a% 'PRINT "kai to apotelesma tis diaireris tou b/a einai"; c! END ' b tropos ' Alliws mporoume na entaksoume tin periptwsi a%=b% se mia apo tis alles duo periptwseis ws eksis: IF a%>=b% THEN ' To idio akrivws tha mporousame na to grapsoume kai ws eksis: ' IF a%>b% OR a%=b% THEN PRINT "To a einai megalutero i iso me to b" IF b%=0 THEN 'c!=a%/b% 'PRINT "kai to apotelesma tis diaireris tou a/b einai"; c! ' diladi an b%>a% (pou tha mporousame na kanoume kai me elseif) IF a%=0 THEN 'c!=b%/a% 'PRINT "kai to apotelesma tis diaireris tou b/a einai"; c!
END ' c Alliws, ligo pio suntoma: IF a%>=b% AND b%<>0 THEN c!=a%/b% PRINT "To apotelesma tis diairesis einai: "; c! IF a%>=b% AND b%=0 THEN PRINT "Apagoreuetai na dineis mideniko paronomasti" IF a%<b% AND a%<>0 THEN c!=b%/a% PRINT "To apotelesma tis diairesis einai: "; c! IF a%<b% AND a%=0 THEN PRINT "Apagoreuetai na dineis mideniko paronomasti" END