Δομές Διακλάδωσης Κεφάλαιο 6 Trimos Mike
IF / Then Η Συνθήκη αυτή χρησιμοποιείται, όταν ο προγραμματιστής επιθυμεί να εκτελεστεί μια, ή περισσότερες εντολές του προγράμματος, στην περίπτωση που ισχύει μια συνθήκη ή και περισσότερες. Συντακτικό IF <Συνθήκη> ΤΗΕΝ <Διαδικασία> Παράδειγμα Γράψετε πρόγραμμα το οποίο να δέχεται δύο αριθμούς Χ & Υ. Αν το Χ>Υ να τυπώνει Η Μεταβλητή Χ είναι Μεγαλύτερη. Program GreaterLess(Input, Output); VAR X, Y:Integer; READLN(X,Y); IF X>Y Then WRITELN( Η Μεταβλητή Χ είναι Μεγαλύτερη ); WRITELN( ΤΕΛΟΣ ) END. Συνθήκη Επόμενη Εντολή Διαδικασίες
IF-THEN- Συντακτικό IF <ΣΥΝΘΗΚΗ> THEN Begin ΔΙΑΔΙΚΑΣΙΑ 1 ΔΙΑΔΙΚΑΣΙΑ 2 End; Ψευδής Διαδικασία 2 Συνθήκη Αληθής Διαδικασία 1 Παράδειγμα: Γράψετε πρόγραμμα το οποίο να δέχεται ένα αριθμό Χ και να εξετάζει αν είναι Ζυγός ή περιττός.
Program EvenOdd(Input, Output); VAR X, T:Integer; WRITELN( Πληκτρολογήστε ένα Αριθμό ); READLN(X); T=X MOD 2; IF T=0 THEN Begin WRITELN( Ο Αριθμός, Χ:4, είναι ΖΥΓΟΣ ); end Begin WRITELN( Ο Αριθμός, Χ:4, είναι ΠΕΡΙΤΤΟΣ ); end; WRITELN( ΤΕΛΟΣ ); END.
Φωλιασμένες Συνθήκες Παράδειγμα: Κατασκευάστε Λογικό Διάγραμμα και γράψετε πρόγραμμα το οποίο να δέχεται ένα ακέραιο αριθμό και να διερευνά αν ο Αριθμός είναι θετικός, αρνητικός ή μηδέν. Program NestedIf(Input, Output); VAR X:INTEGER; WRITELN( Πληκτρολογήστε Ένα Αριθμό ); READLN(X); IF(X>0) THEN WRITELN( ΘΕΤΙΚΟΣ ); END IF(X<0) THEN WRITELN( ΑΡΝΗΤΙΚΟΣ ); END WRITELN( ΜΗΔΕΝ ); END; END; WRITELN( ΤΕΛΟΣ ); END.
AND / OR Παράδειγμα Μία ασφαλιστική εταιρία εκδίδει ένα ειδικό Σχέδιο για ασφάλειες Ζωής όταν ο Ασφαλισμένος είναι Άνδρας, άνω των 25 Ετών και μικρότερος των 45 (συμπεριλαμβανομένων και των δυο ηλικιών) και Δημόσιος Υπάλληλος, ή Γυναίκα παντρεμένη με τουλάχιστο ένα παιδί με μισθό 1000 μηνιαίως. Κατασκευάστε Λογικό Διάγραμμα και Γράψτε το ανάλογο Πρόγραμμα. Ανάλυση Στο πρόβλημα αυτό θα πρέπει πρώτα να αναγνωρίσουμε τις Συνθήκες και τις πιθανές παραμέτρους. Ακολούθως θα πρέπει να δημιουργήσουμε την λογική που θα κυβερνά το πρόγραμμα. Υπάρχουν οι πιο κάτω Συνθήκες: (1) Γένος: (1) Άνδρας (2) Γυναίκα (2) Ηλικία: >=25 ΚΑΙ <=45 (3) Επάγγελμα: Δημόσιος Υπάλληλος (4) Παντρεμένη:(1) Ναι (2) Όχι (5) Παιδιά: (1) Ναι (2) Όχι (6) Μισθός: > 1000
Για να μπορέσουμε να μαζέψουμε τις πληροφορίες που χρειαζόμαστε μια έξυπνη λύση θα ήταν να συμπεριλάβουμε στο πρόγραμμα μας τέτοιες ερωτήσεις ώστε να αναγκάζουν τον χρήστη να μας δώσει τις τιμές που χρειαζόμαστε. Οι Ερωτήσεις που θα κάνουμε είναι: 1. Φύλο; (1) Άντρας (2) Γυναίκα 2. Ποια Η Ηλικία σας; 3. Είστε Δημόσιος Υπάλληλος; (1) Ναι (2) Όχι 4. Είστε Παντρεμένη; (1) Ναι (2) Όχι 5. Πόσα Παιδιά έχετε; 6. Ποιος ο Μισθός σας;
Program LifeInsurance(Input, Output); VAR Sex, Age, Employee, Married, Kids, Salary: Integer; Insurance: Boolean; Insurance:=False; WRITELN( Ερωτηματολόγιο ); WRITELN( Επιλέξτε την απάντηση σας σε κάθε Ερώτηση ); WRITELN( Φύλο: (1) Άντρας (2) Γυναίκα ); READLN(Sex); WRITELN( Ποια Η Ηλικία σας; ); READLN(Age); WRITELN( Είστε Δημόσιος Υπάλληλος; (1) ΝΑΙ (2) ΟΧΙ; ); READLN(Employee); WRITELN( Είστε Παντρεμένος; (1) ΝΑΙ (2) ΟΧΙ ); READLN(Married) WRITELN( Πόσα Παιδιά Έχετε; ); READLN(Kids); WRITELN( Ποιος ο Μισθός σας; ); READLN(Salary);
AND / OR IF (SEX=1 AND Age>=25 AND Age<=45 AND Employee=1 AND Married=1) OR (Sex=2 AND Married=1 AND Kids>0 AND Salary>=1000) THEN Begin Insurance:=True; End; IF Insurance=True Then WRITELN( Η Ασφάλεια μπορεί να εκδοθεί. ) WRITELN( Η Ασφάλεια ΔΕΝ μπορεί να εκδοθεί. ); END. Ερωτήσεις (1) Τι θα συμβεί αν σε κάποια από τις ερωτήσεις αντί ο χρήστης να πατήσει αριθμητικό σύμβολο, πατήσει χαρακτήρα; (2) Μετατρέψετε το όλο πρόγραμμα χρησιμοποιώντας όσο γίνεται πιο λίγα AND/ OR. Βοήθημα Χρησιμοποιήστε Φωλιασμένα IF/THEN/
Πολλαπλή Διακλάδωση Program Grades(Input, Output); VAR Grade:Char; Begin writeln( Δώσε Βαθμό ); readln(grade); CASE Grade OF A : Writeln( ΑΡΙΣΤΑ ); B : Writeln( ΠΟΛΥ ΚΑΛΑ ); C : Writeln( ΚΑΛΑ ); D : Writeln( ΜΕΤΡΙΑ ); E : Writeln( ΑΠΟΤΥΧΙΑ ); Writeln( Λάθος Χαρακτήρας ); End; END.
Πολλαπλή Διακλάδωση Program Grade2(Input, Output); VAR Score:Integer; Grade:Char; Writeln( Ποιος ο Βαθμός σας στο Διαγώνισμα ); Readln(Score); CASE Score OF 19, 20: Grade:= A ; 16, 17, 18: Grade:= B ; 13, 14, 15:Grade:= C ; 10, 11, 12: Grade:= D ; 1,2,3,4,5,6,7,8,9: Grade:= E ; If Score<1 AND Score>20 Then Writeln( Βαθμός εκτός ορίων ); end; end; END.
Άσκηση Να γραφτεί πρόγραμμα που να ζητά από τον χρήστη να εισάγει τον χρόνο και τον μήνα αριθμητικά και να τυπώσει τον χρόνο, τον δε αντίστοιχο μήνα να τον τυπώνει ολογράφως καθώς και τον αριθμό των ημερών του συγκεκριμένου μήνα.