Εντολές Διακλάδωσης ή Εντολές Υπό Συνθήκη Εντολές Διακλάδωσης ή Εντολές Υπό Συνθήκη If λογική έκφραση Then εντολή ή If λογική έκφραση Then εντολή Else εντολή
Δομή επιλογής Η δομή επιλογής είναι μια ολοκληρωμένη πρόταση η οποία περικλείει μια συνθήκη και δύο ομάδες εντολών, από τις οποίες θα εκτελεστούν, η μεν πρώτη ομάδα στην περίπτωση που ικανοποιείται η συνθήκη η δε δεύτερη ομάδα στην περίπτωση που δεν ικανοποιείται η συνθήκη ΑΝ συνθήκη ΤΟΤΕ Εντολή α1 Εντολή α2 : : ΑΛΛΙΩΣ Εντολή ψ1 Εντολή ψ2 : ΤΕΛΟΣ ΑΝ Συνθήκη Αληθής Α’ ομάδα εντολών Αληθής Αληθής Αληθής Συνθήκη Ψευδής Ψευδής Ψευδής Α’ ομάδα εντολών Β’ ομάδα εντολών Συνθήκη Ψευδής Β’ ομάδα εντολών
ΣΤΟΧΟΙ Να κατανοήσουμε τη χρήση και εφαρμογή της εντολής If…. Then…. Else Nα αναλύσουμε την εντολή If - Then – Else Να κατανοήσουμε την χρήση της εντολής σε παραδείγματα Να επιλύσουμε προβλήματα με τη χρήση της εντολής If….Then…. Else
Εντολές Διακλάδωσης Εντολές διακλάδωσης ή επιλογής. Εντολή If Then Else. Εντολή Case. (α) If συνθήκη Then εντολή (β) If συνθήκη Then εντολή Else
Ορισμός Εντολών (γ) If συνθήκη Then εντολή Else if συνθήκη Then ……
Παράδειγμα Να γράψετε ένα πρόγραμμα που να διαβάζει ένα αριθμό. Να υπολογίζετε στη συνέχεια και να τυπώνετε την τετραγωνική του ρίζα αν ο αριθμός είναι θετικός. Αν είναι αρνητικός να τυπώνετε ένα ανάλογο μήνυμα, “αρνητικός αριθμός”.
Απάντηση Program sample2_1; Uses wincrt; Var x:real; Begin Write(‘Dose ena arithmo…’); Readln(x);writeln; If x>=0 then write(‘H tetragoniki riza tou arithmou einai:’,sqrt(x):8:2) else write(x:7:2,’O arithmos einai arnitikos’); End.
1356 1356 ΠΡΟΓΡΑΜΜΑ Απόλυτη_Τιμή ‘Εισαγωγή δεδομένων ΓΡΑΨΕ ”Δώσε τον αριθμό” ΔΙΑΒΑΣΕ α ‘Επεξεργασία δεδομένων ΑΝ α>0 ΤΟΤΕ Απόλυτη_Τιμή ← α ΑΛΛΙΩΣ Απόλυτη_Τιμή ← -α ΤΕΛΟΣ ΑΝ ‘Εκτύπωση αποτελεσμάτων ΓΡΑΨΕ ”Η απόλυτη τιμή είναι: ”, Απόλυτη_Τιμή ΤΕΛΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Αληθής Αληθής Αληθής Αληθής Οθόνη Δώσε τον αριθμό Μνήμη. Περιοχή μεταβλητών 1356 Η απόλυτη τιμή είναι: 1356 1356 α Απόλυτη_Τιμή 1356
-3495 3495 ΠΡΟΓΡΑΜΜΑ Απόλυτη_Τιμή ‘Εισαγωγή δεδομένων ΓΡΑΨΕ ”Δώσε τον αριθμό” ΔΙΑΒΑΣΕ α ‘Επεξεργασία δεδομένων ΑΝ α>0 ΤΟΤΕ Απόλυτη_Τιμή ← α ΑΛΛΙΩΣ Απόλυτη_Τιμή ← -α ΤΕΛΟΣ ΑΝ ‘Εκτύπωση αποτελεσμάτων ΓΡΑΨΕ ”Η απόλυτη τιμή είναι: ”, Απόλυτη_Τιμή ΤΕΛΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ψευδής Ψευδής Ψευδής Ψευδής Οθόνη Δώσε τον αριθμό Μνήμη. Περιοχή μεταβλητών -3495 Η απόλυτη τιμή είναι: 3495 -3495 α Απόλυτη_Τιμή 3495
Δομή επιλογής Αν δε θέλουμε να εκτελεστεί καμιά εντολή στην περίπτωση που η συνθήκη είναι ψευδής μπορούμε να παραλείψουμε και τη λέξη ΑΛΛΙΩΣ ΑΝ συνθήκη ΤΟΤΕ Εντολή 1 Εντολή 2 : : ΤΕΛΟΣ ΑΝ Αληθής Αληθής Αληθής Συνθήκη Ψευδής Ψευδής Ψευδής Συνθήκη Αληθής Oμάδα εντολών
1356 1356 ΠΡΟΓΡΑΜΜΑ Απόλυτη_Τιμή ‘Εισαγωγή δεδομένων ΓΡΑΨΕ ”Δώσε τον αριθμό” ΔΙΑΒΑΣΕ α ‘Επεξεργασία δεδομένων Απόλυτη_Τιμή ← α ΑΝ α<0 ΤΟΤΕ Απόλυτη_Τιμή ← -α ΤΕΛΟΣ ΑΝ ‘Εκτύπωση αποτελεσμάτων ΓΡΑΨΕ ”Η απόλυτη τιμή είναι: ”, Απόλυτη_Τιμή ΤΕΛΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ψευδής Ψευδής Ψευδής Ψευδής Οθόνη Δώσε τον αριθμό Μνήμη. Περιοχή μεταβλητών 1356 Η απόλυτη τιμή είναι: 1356 1356 α Απόλυτη_Τιμή 1356
-3495 -3495 3495 ΠΡΟΓΡΑΜΜΑ Απόλυτη_Τιμή ‘Εισαγωγή δεδομένων ΓΡΑΨΕ ”Δώσε τον αριθμό” ΔΙΑΒΑΣΕ α ‘Επεξεργασία δεδομένων Απόλυτη_Τιμή ← α ΑΝ α<0 ΤΟΤΕ Απόλυτη_Τιμή ← -α ΤΕΛΟΣ ΑΝ ‘Εκτύπωση αποτελεσμάτων ΓΡΑΨΕ ”Η απόλυτη τιμή είναι: ”, Απόλυτη_Τιμή ΤΕΛΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Αληθής Αληθής Αληθής Αληθής Οθόνη Δώσε τον αριθμό Μνήμη. Περιοχή μεταβλητών -3495 Η απόλυτη τιμή είναι: 3495 -3495 α Απόλυτη_Τιμή -3495 3495
Επεξεργασία Υπό Συνθήκη Παράδειγμα_1 Μια εταιρεία πωλήσεων μέσω ταχυδρομείου, προσφέρει έκπτωση 10% στην αξία του εμπορεύματος για παραγγελίες μεγαλύτερες των 1000 ECU. Για παραγγελίες μικρότερες των 1000ECU, το πληρωτέο ποσό είναι ίσο με την αξία των αγαθών. Να γράψετε ένα πρόγραμμα το οποίο θα λαμβάνει υπόψη τα πιο πάνω.
PROGRAM IF_1; Uses wincrt; Var timi_emprmts,pliroteo,ekptosi:real; Begin write(‘ Dose tin timi tou emporeumatos….: ’); Readln(timi_emprmts); Pliroteo:=timi_emprmts; If timi_emprts>= 1000 then ekptosi:=timi_emprmts * 0.1; pliroteo:=timi_emprmts - ekptosi; writeln(‘ H plirotea timi se ECU einai…’,pliroteo:8:2); End.
Παράδειγμα_2 Να γράψετε ένα πρόγραμμα που θα αποφασίζει για την πραγματοποίηση μιας αγοράς, με δεδομένα το μηνιαίο εισόδημα, την περιουσία της συζύγου και τον αριθμό των παιδιών. Όταν το μηνιάιο εισόδημα είναι μεγαλύτερο από 2000 ECU, ή η περιουσία της συζύγου είναι μεγαλύτερη από 200000 ECU, και ο αριθμός των παιδιών ίσος με μηδέν, τότε συνιστάται η αγορά σπόρ αυτοκινήτου. Αλλιώς συνιστάται η αγορά κοινού αυτοκινήτου.
Απάντηση PROGRAM if__2; Uses wincrt; Var eisodima, periousia:real; paidia:Integer; Begin Write(‘Dose to miniaio eisodima…’); Readln(eisodima); Write(‘Periousia tis syzygou…’); Readln(periousia); Write(‘Posa paidia exete; ‘); Readln(paidia); If ((eisodima>2000)or (periousia>=200000)) and (paidia=0) Then writeln(‘ Agorase spor autokinhto’) else writeln(‘Agorase aplo autkinhto’); End.
Παράδειγμα με πολλαπλή επιλογή Παράδειγμα με πολλαπλή επιλογή Γράψε ένα πρόγραμμα για το πιο κάτω πρόβλημα. Ένας χοντρέμπορας προσφέρει διαφορετική έκπτωση ανάλογα με τον πελάτη. Οι επαγγελματίες έχουν έκπτωση 10%, οι λιανοπώλες 15%, ενώ όλοι οι άλλοι πελάτες δεν έχουν καμιά έκπτωση.
PROGRAM if_3; Uses wincrt; Var timi_eidous,pliroteo:real; Kat_pelati:char; Begin Write(‘Dose tin timi eidous:’); Readln(timi_eidous); Writeln(‘Dose tin katigoria pelati:’); Writeln(‘1. Epaggelmatias’); Writeln(‘2. Lianopolis ’); Writeln(‘3. Allos ’); Readln(kat_pelati);
case kat_pelati of ‘1’ :pliroteo:=timi_eidous*(1-0.1); ‘2’ :pliroteo:=timi_eidous*(1-0.15); ‘3’ :pliroteo:=timi_eidous; Else pliroteo:=0; writeln(‘ Lathos eisagwgis’); End. Writeln(‘ H plirotea timi se ECU einai…’,pliroteo:8:2);
Τύπος δεδομένων Char(χαρακτήρας) Ο τύπος δεδομένων Char (character=χαρακτήρας) μας δίνει τη δυνατότητα να χρησιμοποιήσουμε γράμματα και σύμβολα στο πρόγραμμά μας. Μια μεταβλητή τύπου Char, παίρνει ως τιμή ένα οποιδήποτε χαρακτήρα σε εισαγωγικά. Στη μεταβλητή αποθηκεύεται μόνο ο χαρακτήρας χωρίς τα εισαγωγικά.
Παράδειγμα Να γραφεί ένα πρόγραμμα το οποίο να διαβάζει ένα ακέραιο αριθμό απ΄οτο 1…7 και να τυπώνει την αντίστοιχη μέρα της εβδομάδας. Το ‘1’ αντιστοιχεί στη Κυριακή.
Απάντηση Program Xaraktiras; Uses wincrt; Var n:Char; Begin Write(‘Dose ena akeraio arithmo apo to 1…7’);Readln(n); If n=‘1’ then writeln(‘Kyriakh’) Else if n=‘2’ then writeln(‘Deutera’) Else if n=‘3’ then writeln(‘Trith’) Else if n=‘4’ then writeln(‘Tetarth’) Else if n=‘5’ then writeln(‘Pempth’) Else if n=‘6’ then writeln(‘Paraskeui’) Else if n=‘7’ then writeln(‘Savvato’) Else writeln(‘ Akyros arithmos… ksanaprosp;athise’); End.
Ασκήσεις Να γράψετε ένα πρόγραμμα το οποίο να διαβάζει ένα ακέραιο αριθμό από το 1…12 και να τυπώνει τον αντίστοιχο μήνα του χρόνου. Το ένα ‘1’ , αντιστοιχεί στον Γενάρη. Να γραφεί ένα πρόγραμμα που να δέχεται δύο αριθμούς. Στην έξοδο να δίνετε ο μεγαλύτερος αριθμός με το μήνυμα, ¨Ο Megalyteros arithmos einai…¨.
Ασκήσεις 3. Μια εταιρεία ταχυδρομικών πωλήσεων υπολογίζει το πληρωτέο ποσό ανάλογα με την αξία των εμπορευμάτων. Αν η αξία του εμπορεύματος είναι μικρότερη από 1000 ECU, το πληρωτέο ποσό επιβαρύνεται με 50 ECU για έξοδα αποστολής. Γράψετε ένα πρόγραμμα που με δεδομένη την αξία του εμπορεύματος, να υπολογίζει το πληρωτέο ποσό.
Ασκήσεις 4. Μια εταιρεία ηλεκτρικών ειδών, προσφέρει έκπτωση 10% σε παραγγελίες αξίας μεγαλύτερης των 800 ECU. Όσοι είναι πελάτες για περισσότερο από 5 χρόνια θα έχουν έκπτωση 4% της αξίας της παραγγελίας. Γράψετε ένα πρόγραμμα, που θα υπολογίζει το πληρωτέο ποσό με δεδομένα την αξία παραγγελίας και τη χρονική διάρκεια που είναι κάποιος πελάτης.
Απαντήσεις Program askisi_1; Uses wincrt; n:Char; Begin Write(‘Dose ena akeraio arithmo apo to 1…12’);Readln(n); If n=‘1’ then writeln(‘Genaris’) Else if n=‘2’ then writeln(‘Fevrouarios’) Else if n=‘3’ then writeln(‘Martios’) Else if n=‘4’ then writeln(‘Aprillios’) Else if n=‘5’ then writeln(‘Maios’) Else if n=‘6’ then writeln(‘Iounios’) Else if n=‘7’ then writeln(‘Ioulios’) Else if n=‘8’ then writeln(‘Augoustos’) Else if n=‘9’ then writeln((‘septemvrios’) Else if n =’10’ then writeln(‘Oktomvrios’) Else if n=’11’ then writeln(‘Noemvrios’) Else if n=’12’ then writeln(‘Dekemvrios’) Else writeln(‘ Akyros arithmos… ksanaprosp;athise’); End.
Απαντήσεις Program askisi_2; Uses wincrt; Var x,y,megalyteros:real; Begin writeln(‘ Dose dyo arithmous’); readln(x,y); writeln(‘Arithmos 1=‘,x,’Artithmos 2=‘,y); If x>y then megalyteros:=x Else megalyteros:=y; writeln(‘ O megalyteros arithmos einai…’,megalyteros:10:2); End.
Απαντήσεις Program Askisi_3; Uses wincrt; Var timi_eidous,pliroteo:real; Begin write(‘ Timi eidous se ECU..’); readln(timi_eidous); If timi_eidous< 1000 then pliroteo:=timi_eidous + 50 else pliroteo:=timi_eidous; writeln(‘ Pliroteo poso se ECU…’, pliroteo:2:2); End.
Απαντήσεις Program askisi_4; Uses wincrt; Var paraggelia, pliroteo:real; diarkeia: Integer; Begin write(‘Paraggelia se ECU..’); readln(paraggelia); write(‘ Synergasia gia posa xronia’); readln(diarkeia); If paraggelia< 800 then If diarkeia < 5 then pliroteo:=paraggelia else pliroteo:=paraggelia*(1-0.04); end
Else Begin if diarkeia < 5 then pliroteo:=paraggelia*(1-0.1) else pliroteo:=paraggelia*(1-0.1-0.04); end; writeln(‘ To pliroteo poso se ECU einai..’, pliroteo:2:2); END.