Δομές Επιλογής
Δομή επιλογής
Πολλές φορές για να λυθεί ένα πρόβλημα πρέπει να ελεγχθεί αν ισχύει κάποια συνθήκη
Παράδειγμα 2: Να διαβαστεί ένας αριθμός και να επιστραφεί η απόλυτη τιμή του
Ο εισαγόμενος αριθμός ελέγχεται αν είναι θετικός ή αρνητικός. Στην πρώτη περίπτωση δεν χρειάζεται να γίνει καμιά ενέργεια, ενώ στη δεύτερη πρέπει να πολλαπλασιαστεί ο αριθμός με το –1 ώστε να γίνει θετικός
Αλγόριθμος Παράδειγμα_2 |
Σχολιασμός διαγράμματος ροής: Ο ρόμβος (έλεγχος συνθήκης) ελέγχει συνθήκες και έχει δυο εξόδους (μια θετική και μια αρνητική στην ερώτηση)
Σχολιασμός ψευδοκώδικα:
Η εντολή αριθμός ← αριθμός * (-1), δεν είναι μαθηματική έκφραση αλλά εντολή εκχώρησης. Επιτρέπεται λοιπόν, η παρουσία της ίδιας μεταβλητής αριστερά και δεξιά του ←. Έτσι, πολλαπλασιάζεται το περεχόμενο της μεταβλητής αριθμός με το –1 και το αποτέλεσμα καταχωρείται εκ νέου στη μεταβλητή αριθμός
|
Αν συνθήκη τότε |
Παράδειγμα 3: Να διαβαστεί ένας αριθμός και να εκτυπωθεί ο αντίστροφός του αριθμός
Αλγόριθμος Παράδειγμα_3 |
Δομή Σύνθετης επιλογής
Η δομή σύνθετης επιλογής χρησιμοποιείται στην περίπτωση που επιθυμούμε να εκτελέσουμε εναλλακτικά δυο ομάδες εντολών. Κριτήριο για το ποιο σετ εντολών θα εκτελεστεί αποτελεί κάποια συνθήκη. Στην περίπτωση που η συνθήκη ισχύει θα εκτελεστεί η πρώτη ομάδα εντολών διαφορετικά θα εκτελεστεί η δεύτερη
Παράδειγμα 4: Να διαβαστούν δύο αριθμοί και να εκτυπωθεί ο μεγαλύτερος από τους δυο
Αλγόριθμος Παράδειγμα_4 |
|
Παράδειγμα 5: Να διαβαστεί αριθμός και να εκτυπωθεί αντίστοιχο μήνυμα για το αν είναι άρτιος ή περιττός
Αλγόριθμος Παράδειγμα_5 |
Κάποια προβλήματα απαιτούν την επιλογή μεταξύ περισσοτέρων από δυο περιπτώσεις
Παράδειγμα 6: Να διαβαστεί ο μέσος όρος ενός μαθητή και να εκτυπωθεί χαρακτηρισμός του
Αλγόριθμος Παράδειγμα_6 |
Αλγόριθμος Παράδειγμα_6 |
Σχολιασμός:
Μια απο τις περιπτώσεις της δομής επιλογής εκτελούνται σε κάθε περίπτωση
Στη δομή Επίλεξε αν δεν ικακοποιείται καμία περίπτωση τότε εκτελείται το Περίπτωση Αλλιώς
Τα σύμβολα ' και " χρησιμοποιούνται ισοδύναμα
Στις περιπτώσεις που θα ελεγχθούν περιλαμβάνουμε και αυτήν την λανθασμένη εισαγωγής δεδομένων
Τα παραπάνω θα μπορούσαν να υλοποιηθούν και με πολλές δομές σύνθετης επιλογής
Εμφωλευμένες Δομές
Στην υλοποίηση ενός αλγορίθμου μπορούμε να χρησιμοποιούμε κάποιες από τις παραπάνω δομές ως τμήμα εντολών σε άλλες
Παράδειγμα 7: Να διαβαστούν τα έτη υπηρεσίας και ο μισθός ενός υπαλλήλου και να εκτυπωθεί το μπόνους σύμφωνα με τον πίνακα
Έτη υπηρεσίας |
Μισθός |
Μπόνους |
< 10 |
– |
|
> 10 |
< 300.000 |
10 % |
> 300.000 |
12 % |
Αλγόριθμος Παράδειγμα_7 |
Παρατηρήσεις: Στο παραπάνω πρόβλημα οι δυο δομές επιλογής θα μπορούσαν να συγχωνευτούν σε μια, της οποίας η συνθήκη περιέχει και τις δυο παραπάνω συνθήκες. Για το σκοπό αυτό χρησιμοποιούνται οι συγκριτικοί τελεστές
Πρόταση Α |
Πρόταση Β |
Α ή Β |
Α και Β |
όχι Α |
Αληθής |
Αληθής |
Αληθής |
Αληθής |
Ψευδής |
Αληθής |
Ψευδής |
Αληθής |
Ψευδής |
Ψευδής |
Ψευδής |
Αληθής |
Αληθής |
Ψευδής |
Αληθής |
Ψευδής |
Ψευδής |
Ψευδής |
Ψευδής |
Αληθής |
Σχολιασμός πίνακα:
Η πρόταση Α ή Β είναι αληθής όταν κάποια από τις δύο ή και οι δυο είναι αληθείς
Η πρόταση Α και Β είναι αληθής όταν και οι δυο προτάσεις Α, Β είναι αληθείς
Η πρόταση όχι Α είναι αληθής όταν και η πρόταση Α είναι ψευδής
Η ιεραρχία των πράξεων των λογικών τελεστών είναι: όχι, και, ή
Έτσι, ας υποθέσουμε ότι: Α=8, Β=2
|
(Α>=7) |
και |
(Β=1) |
Ψευδής |
Ψευδής |
Ψευδής |
|||
|
Α <20 |
ή |
Β = 4 |
αληθής |
αληθής |
Ψευδής |
|||
|
Α > Β |
και |
Β <> 6 |
αληθής |
αληθής |
αληθής |
|||
|
όχι |
Β < 6 |
ψευδής |
|
αληθής |
||||
|
Α mod 2 = 0 |
ή |
Β mod 2 = 1 |
αληθής |
αληθής |
Ψευδής |
Σύμφωνα με τα παραπάνω ο αλγόριθμός του παραδείγματος 7 τροποποιείται ως εξής:
Αλγόριθμος Παράδειγμα_7_εναλλακτικός
Διάβασε έτη_υπηρεσίας, μισθός
Αν έτη_υπηρεσίας < 10 τότε
μπόνους ← 0
Τέλος_Αν
Αν (έτη_υπηρεσίας > 10) και (μισθός < 300000) τότε
μπόνους ← 0,1 * μισθός
Τέλος_Αν
Αν (έτη_υπηρεσίας > 10) και (μισθός > 300000) τότε
μπόνους ← 0,12 * μισθός
Τέλος_Αν
Εκτύπωσε μπόνους
Τέλος Παράδειγμα_7_εναλλακτικός