Μετατροπή από ΑΛΛΙΩΣ_ΑΝ σε ΕΠΙΛΕΞΕ: Μεθοδολογία και 20 Λυμένες Ασκήσεις
Η δομή ΑΝ…ΑΛΛΙΩΣ_ΑΝ και η δομή ΕΠΙΛΕΞΕ χρησιμοποιούνται για τη λήψη αποφάσεων ανάμεσα σε πολλές εναλλακτικές. Δεν είναι, όμως, πάντοτε ισοδύναμες.
Η ΑΝ…ΑΛΛΙΩΣ_ΑΝ μπορεί να ελέγχει οποιεσδήποτε λογικές συνθήκες, ακόμη και συνθήκες που χρησιμοποιούν διαφορετικές μεταβλητές. Η ΕΠΙΛΕΞΕ, αντίθετα, εξετάζει την τιμή μίας συγκεκριμένης έκφρασης και εκτελεί την περίπτωση που αντιστοιχεί σε αυτήν.
Στο άρθρο θα μάθουμε:
- πότε επιτρέπεται η μετατροπή,
- ποια βήματα ακολουθούμε,
- πώς χρησιμοποιούμε μεμονωμένες τιμές, λίστες τιμών και διαστήματα,
- ποια λάθη πρέπει να αποφεύγουμε,
- πώς ελέγχουμε ότι οι δύο δομές είναι πραγματικά ισοδύναμες.
1. Οι δύο βασικές δομές
1.1 Πολλαπλή επιλογή με ΑΛΛΙΩΣ_ΑΝ
ΑΝ έκφραση = τιμή1 ΤΟΤΕ
εντολές1
ΑΛΛΙΩΣ_ΑΝ έκφραση = τιμή2 ΤΟΤΕ
εντολές2
ΑΛΛΙΩΣ_ΑΝ έκφραση = τιμή3 ΤΟΤΕ
εντολές3
ΑΛΛΙΩΣ
εντολές_άλλης_περίπτωσης
ΤΕΛΟΣ_ΑΝ
Οι συνθήκες ελέγχονται από πάνω προς τα κάτω. Μόλις βρεθεί η πρώτη αληθής συνθήκη, εκτελείται ο αντίστοιχος κλάδος και οι υπόλοιποι παραλείπονται.
1.2 Πολλαπλή επιλογή με ΕΠΙΛΕΞΕ
ΕΠΙΛΕΞΕ έκφραση
ΠΕΡΙΠΤΩΣΗ τιμή1
εντολές1
ΠΕΡΙΠΤΩΣΗ τιμή2
εντολές2
ΠΕΡΙΠΤΩΣΗ τιμή3
εντολές3
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
εντολές_άλλης_περίπτωσης
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Η τιμή της έκφρασης συγκρίνεται με τις τιμές των περιπτώσεων. Εκτελείται ο κλάδος που αντιστοιχεί στην τιμή της.
2. Η βασική αντιστοίχιση
| Στη δομή ΑΝ…ΑΛΛΙΩΣ_ΑΝ | Στη δομή ΕΠΙΛΕΞΕ |
|---|---|
ΑΝ έκφραση = τιμή1 ΤΟΤΕ |
ΕΠΙΛΕΞΕ έκφραση και ΠΕΡΙΠΤΩΣΗ τιμή1 |
ΑΛΛΙΩΣ_ΑΝ έκφραση = τιμή2 ΤΟΤΕ |
ΠΕΡΙΠΤΩΣΗ τιμή2 |
ΑΛΛΙΩΣ_ΑΝ έκφραση = τιμή3 ΤΟΤΕ |
ΠΕΡΙΠΤΩΣΗ τιμή3 |
ΑΛΛΙΩΣ |
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ |
ΤΕΛΟΣ_ΑΝ |
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ |
Παράδειγμα
Αρχική δομή
ΑΝ επιλογή = 1 ΤΟΤΕ
ΓΡΑΨΕ 'Εισαγωγή'
ΑΛΛΙΩΣ_ΑΝ επιλογή = 2 ΤΟΤΕ
ΓΡΑΨΕ 'Διαγραφή'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Λάθος επιλογή'
ΤΕΛΟΣ_ΑΝ
Ισοδύναμη δομή
ΕΠΙΛΕΞΕ επιλογή
ΠΕΡΙΠΤΩΣΗ 1
ΓΡΑΨΕ 'Εισαγωγή'
ΠΕΡΙΠΤΩΣΗ 2
ΓΡΑΨΕ 'Διαγραφή'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Λάθος επιλογή'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
3. Πότε μπορεί να γίνει η μετατροπή
Η άμεση μετατροπή είναι κατάλληλη όταν:
- Όλοι οι κλάδοι εξετάζουν την ίδια έκφραση.
- Κάθε συνθήκη αντιστοιχεί σε συγκεκριμένη τιμή, λίστα τιμών ή σαφές διάστημα τιμών.
- Οι περιπτώσεις δεν επικαλύπτονται.
- Η συμπεριφορά του αλγορίθμου δεν εξαρτάται από τη σειρά των ελέγχων.
Παράδειγμα κατάλληλο για μετατροπή:
ΑΝ κωδικός = 1 ΤΟΤΕ
...
ΑΛΛΙΩΣ_ΑΝ κωδικός = 2 ΤΟΤΕ
...
ΑΛΛΙΩΣ_ΑΝ κωδικός = 3 ΤΟΤΕ
...
ΤΕΛΟΣ_ΑΝ
Όλες οι συνθήκες συγκρίνουν την ίδια μεταβλητή, τον κωδικός, με συγκεκριμένες τιμές.
4. Πότε δεν γίνεται άμεση μετατροπή
4.1 Έλεγχος διαφορετικών μεταβλητών
ΑΝ x = 1 ΤΟΤΕ
...
ΑΛΛΙΩΣ_ΑΝ y = 1 ΤΟΤΕ
...
ΤΕΛΟΣ_ΑΝ
Δεν υπάρχει μία κοινή έκφραση που να μπορεί να τοποθετηθεί μετά την εντολή ΕΠΙΛΕΞΕ.
4.2 Άσχετες λογικές συνθήκες
ΑΝ ηλικία >= 18 ΚΑΙ κάρτα = 'Ν' ΤΟΤΕ
...
ΑΛΛΙΩΣ_ΑΝ υπόλοιπο > 100 ΤΟΤΕ
...
ΤΕΛΟΣ_ΑΝ
Οι κλάδοι δεν αποτελούν διαφορετικές τιμές της ίδιας έκφρασης.
4.3 Επικαλυπτόμενες συνθήκες
ΑΝ x > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Θετικός'
ΑΛΛΙΩΣ_ΑΝ x > 10 ΤΟΤΕ
ΓΡΑΨΕ 'Μεγάλος'
ΤΕΛΟΣ_ΑΝ
Για x = 15 είναι αληθείς και οι δύο συνθήκες, αλλά εκτελείται μόνο η πρώτη. Επομένως, η σειρά των ελέγχων επηρεάζει το αποτέλεσμα. Μια βιαστική μετατροπή σε δύο επικαλυπτόμενες περιπτώσεις θα ήταν λανθασμένη.
5. Μεθοδολογία μετατροπής βήμα προς βήμα
Βήμα 1: Εντοπίζουμε την κοινή έκφραση
Υπογραμμίζουμε νοερά τι υπάρχει αριστερά από το = σε κάθε συνθήκη.
χρώμα = 'Κ'
χρώμα = 'Π'
χρώμα = 'Μ'
Η κοινή έκφραση είναι η μεταβλητή χρώμα. Άρα γράφουμε:
ΕΠΙΛΕΞΕ χρώμα
Η κοινή έκφραση δεν είναι υποχρεωτικό να είναι απλή μεταβλητή. Μπορεί, για παράδειγμα, να είναι η έκφραση αριθμός MOD 3, αρκεί να είναι ίδια σε όλους τους ελέγχους.
Βήμα 2: Μεταφέρουμε τις τιμές στις ΠΕΡΙΠΤΩΣΕΙΣ
Κάθε σύγκριση με μία τιμή γίνεται μία ΠΕΡΙΠΤΩΣΗ.
ΑΛΛΙΩΣ_ΑΝ χρώμα = 'Π' ΤΟΤΕ
μετατρέπεται σε:
ΠΕΡΙΠΤΩΣΗ 'Π'
Βήμα 3: Μεταφέρουμε τις εντολές χωρίς αλλαγές
Οι εντολές κάθε κλάδου τοποθετούνται κάτω από την αντίστοιχη περίπτωση. Δεν αλλάζουμε τη σειρά τους και δεν παραλείπουμε αναθέσεις, εισόδους ή εξόδους.
Βήμα 4: Ομαδοποιούμε τιμές με την ίδια ενέργεια
Αν πολλές τιμές οδηγούν ακριβώς στις ίδιες εντολές, μπορούν να τοποθετηθούν στην ίδια περίπτωση.
ΠΕΡΙΠΤΩΣΗ 1, 3, 5
ΓΡΑΨΕ 'Ομάδα Α'
Βήμα 5: Χρησιμοποιούμε διάστημα όπου είναι κατάλληλο
Διαδοχικές τιμές με την ίδια ενέργεια μπορούν να γραφούν ως διάστημα:
ΠΕΡΙΠΤΩΣΗ 10..12
ΓΡΑΨΕ 'Μέτρια επίδοση'
Πριν χρησιμοποιήσουμε διάστημα, πρέπει να γνωρίζουμε το πεδίο τιμών της μεταβλητής. Για παράδειγμα, αν ο βαθμός είναι ακέραιος από 0 μέχρι 20, το 0..9 περιγράφει με ακρίβεια τους βαθμούς κάτω από τη βάση.
Βήμα 6: Μετατρέπουμε το ΑΛΛΙΩΣ
Το τελικό ΑΛΛΙΩΣ γίνεται:
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
Αν η αρχική δομή δεν έχει ΑΛΛΙΩΣ, δεν είναι υποχρεωτικό να προσθέσουμε ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ.
Βήμα 7: Κλείνουμε σωστά τη δομή
Το ΤΕΛΟΣ_ΑΝ αντικαθίσταται από:
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Βήμα 8: Ελέγχουμε την ισοδυναμία
Δοκιμάζουμε τουλάχιστον:
- μία τιμή από την πρώτη περίπτωση,
- μία τιμή από μια ενδιάμεση περίπτωση,
- μία τιμή από την τελευταία περίπτωση,
- μία τιμή που οδηγεί στην
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ.
Αν και οι δύο δομές παράγουν τα ίδια αποτελέσματα για όλες τις δοκιμές, η μετατροπή είναι σωστή.
6. Γρήγορος έλεγχος πριν από τη μετατροπή
Ρωτάμε:
Μπορώ να γράψω μία μόνο έκφραση μετά την εντολή ΕΠΙΛΕΞΕ και να περιγράψω όλους τους κλάδους ως τιμές ή μη επικαλυπτόμενα διαστήματα αυτής της έκφρασης;
- Αν η απάντηση είναι ναι, η μετατροπή συνήθως μπορεί να γίνει.
- Αν η απάντηση είναι όχι, διατηρούμε τη δομή
ΑΝ…ΑΛΛΙΩΣ_ΑΝή ανασχεδιάζουμε πρώτα τη λύση.
20 Λυμένες Ασκήσεις
Άσκηση 1 – Απλό αριθμητικό μενού
Να μετατραπεί η παρακάτω δομή σε ΕΠΙΛΕΞΕ.
ΑΝ επιλογή = 1 ΤΟΤΕ
ΓΡΑΨΕ 'Νέα εγγραφή'
ΑΛΛΙΩΣ_ΑΝ επιλογή = 2 ΤΟΤΕ
ΓΡΑΨΕ 'Αναζήτηση'
ΑΛΛΙΩΣ_ΑΝ επιλογή = 3 ΤΟΤΕ
ΓΡΑΨΕ 'Έξοδος'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Μη έγκυρη επιλογή'
ΤΕΛΟΣ_ΑΝ
Λύση
Η κοινή μεταβλητή είναι η επιλογή.
ΕΠΙΛΕΞΕ επιλογή
ΠΕΡΙΠΤΩΣΗ 1
ΓΡΑΨΕ 'Νέα εγγραφή'
ΠΕΡΙΠΤΩΣΗ 2
ΓΡΑΨΕ 'Αναζήτηση'
ΠΕΡΙΠΤΩΣΗ 3
ΓΡΑΨΕ 'Έξοδος'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Μη έγκυρη επιλογή'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Άσκηση 2 – Χαρακτηρισμός επιπέδου
ΑΝ επίπεδο = 'Α' ΤΟΤΕ
ΓΡΑΨΕ 'Αρχάριος'
ΑΛΛΙΩΣ_ΑΝ επίπεδο = 'Μ' ΤΟΤΕ
ΓΡΑΨΕ 'Μέσος'
ΑΛΛΙΩΣ_ΑΝ επίπεδο = 'Π' ΤΟΤΕ
ΓΡΑΨΕ 'Προχωρημένος'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Άγνωστο επίπεδο'
ΤΕΛΟΣ_ΑΝ
Λύση
ΕΠΙΛΕΞΕ επίπεδο
ΠΕΡΙΠΤΩΣΗ 'Α'
ΓΡΑΨΕ 'Αρχάριος'
ΠΕΡΙΠΤΩΣΗ 'Μ'
ΓΡΑΨΕ 'Μέσος'
ΠΕΡΙΠΤΩΣΗ 'Π'
ΓΡΑΨΕ 'Προχωρημένος'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Άγνωστο επίπεδο'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Οι χαρακτήρες παραμένουν μέσα σε εισαγωγικά.
Άσκηση 3 – Ημέρα της εβδομάδας
ΑΝ ημέρα = 1 ΤΟΤΕ
ΓΡΑΨΕ 'Δευτέρα'
ΑΛΛΙΩΣ_ΑΝ ημέρα = 2 ΤΟΤΕ
ΓΡΑΨΕ 'Τρίτη'
ΑΛΛΙΩΣ_ΑΝ ημέρα = 3 ΤΟΤΕ
ΓΡΑΨΕ 'Τετάρτη'
ΑΛΛΙΩΣ_ΑΝ ημέρα = 4 ΤΟΤΕ
ΓΡΑΨΕ 'Πέμπτη'
ΑΛΛΙΩΣ_ΑΝ ημέρα = 5 ΤΟΤΕ
ΓΡΑΨΕ 'Παρασκευή'
ΑΛΛΙΩΣ_ΑΝ ημέρα = 6 ΤΟΤΕ
ΓΡΑΨΕ 'Σάββατο'
ΑΛΛΙΩΣ_ΑΝ ημέρα = 7 ΤΟΤΕ
ΓΡΑΨΕ 'Κυριακή'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Λάθος αριθμός ημέρας'
ΤΕΛΟΣ_ΑΝ
Λύση
ΕΠΙΛΕΞΕ ημέρα
ΠΕΡΙΠΤΩΣΗ 1
ΓΡΑΨΕ 'Δευτέρα'
ΠΕΡΙΠΤΩΣΗ 2
ΓΡΑΨΕ 'Τρίτη'
ΠΕΡΙΠΤΩΣΗ 3
ΓΡΑΨΕ 'Τετάρτη'
ΠΕΡΙΠΤΩΣΗ 4
ΓΡΑΨΕ 'Πέμπτη'
ΠΕΡΙΠΤΩΣΗ 5
ΓΡΑΨΕ 'Παρασκευή'
ΠΕΡΙΠΤΩΣΗ 6
ΓΡΑΨΕ 'Σάββατο'
ΠΕΡΙΠΤΩΣΗ 7
ΓΡΑΨΕ 'Κυριακή'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Λάθος αριθμός ημέρας'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Άσκηση 4 – Αριθμομηχανή
Να μετατραπεί η δομή που εκτελεί την πράξη που επιλέγει ο χρήστης.
ΑΝ τελεστής = '+' ΤΟΤΕ
αποτέλεσμα <- α + β
ΑΛΛΙΩΣ_ΑΝ τελεστής = '-' ΤΟΤΕ
αποτέλεσμα <- α - β
ΑΛΛΙΩΣ_ΑΝ τελεστής = '*' ΤΟΤΕ
αποτέλεσμα <- α * β
ΑΛΛΙΩΣ_ΑΝ τελεστής = '/' ΤΟΤΕ
ΑΝ β <> 0 ΤΟΤΕ
αποτέλεσμα <- α / β
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Αδύνατη διαίρεση'
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Άγνωστος τελεστής'
ΤΕΛΟΣ_ΑΝ
Λύση
ΕΠΙΛΕΞΕ τελεστής
ΠΕΡΙΠΤΩΣΗ '+'
αποτέλεσμα <- α + β
ΠΕΡΙΠΤΩΣΗ '-'
αποτέλεσμα <- α - β
ΠΕΡΙΠΤΩΣΗ '*'
αποτέλεσμα <- α * β
ΠΕΡΙΠΤΩΣΗ '/'
ΑΝ β <> 0 ΤΟΤΕ
αποτέλεσμα <- α / β
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Αδύνατη διαίρεση'
ΤΕΛΟΣ_ΑΝ
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Άγνωστος τελεστής'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Η εσωτερική δομή ΑΝ της διαίρεσης δεν αλλάζει. Μετατρέπουμε μόνο την εξωτερική πολλαπλή επιλογή.
Άσκηση 5 – Ομαδοποίηση τιμών
ΑΝ αριθμός = 1 ΤΟΤΕ
ΓΡΑΨΕ 'Ομάδα Α'
ΑΛΛΙΩΣ_ΑΝ αριθμός = 3 ΤΟΤΕ
ΓΡΑΨΕ 'Ομάδα Α'
ΑΛΛΙΩΣ_ΑΝ αριθμός = 5 ΤΟΤΕ
ΓΡΑΨΕ 'Ομάδα Α'
ΑΛΛΙΩΣ_ΑΝ αριθμός = 2 ΤΟΤΕ
ΓΡΑΨΕ 'Ομάδα Β'
ΑΛΛΙΩΣ_ΑΝ αριθμός = 4 ΤΟΤΕ
ΓΡΑΨΕ 'Ομάδα Β'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Εκτός ομάδων'
ΤΕΛΟΣ_ΑΝ
Λύση
Οι τιμές που εκτελούν τις ίδιες εντολές ομαδοποιούνται.
ΕΠΙΛΕΞΕ αριθμός
ΠΕΡΙΠΤΩΣΗ 1, 3, 5
ΓΡΑΨΕ 'Ομάδα Α'
ΠΕΡΙΠΤΩΣΗ 2, 4
ΓΡΑΨΕ 'Ομάδα Β'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Εκτός ομάδων'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Άσκηση 6 – Ημέρες ενός μήνα
Θεωρούμε έτος που δεν είναι δίσεκτο.
ΑΝ μήνας = 1 Η μήνας = 3 Η μήνας = 5 Η μήνας = 7 Η μήνας = 8 Η μήνας = 10 Η μήνας = 12 ΤΟΤΕ
ημέρες <- 31
ΑΛΛΙΩΣ_ΑΝ μήνας = 4 Η μήνας = 6 Η μήνας = 9 Η μήνας = 11 ΤΟΤΕ
ημέρες <- 30
ΑΛΛΙΩΣ_ΑΝ μήνας = 2 ΤΟΤΕ
ημέρες <- 28
ΑΛΛΙΩΣ
ημέρες <- 0
ΓΡΑΨΕ 'Λάθος μήνας'
ΤΕΛΟΣ_ΑΝ
Λύση
ΕΠΙΛΕΞΕ μήνας
ΠΕΡΙΠΤΩΣΗ 1, 3, 5, 7, 8, 10, 12
ημέρες <- 31
ΠΕΡΙΠΤΩΣΗ 4, 6, 9, 11
ημέρες <- 30
ΠΕΡΙΠΤΩΣΗ 2
ημέρες <- 28
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ημέρες <- 0
ΓΡΑΨΕ 'Λάθος μήνας'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Οι πολλές ισότητες που συνδέονται με Η έγιναν λίστες τιμών.
Άσκηση 7 – Τρίμηνο του έτους
ΑΝ μήνας >= 1 ΚΑΙ μήνας <= 3 ΤΟΤΕ
ΓΡΑΨΕ '1ο τρίμηνο'
ΑΛΛΙΩΣ_ΑΝ μήνας >= 4 ΚΑΙ μήνας <= 6 ΤΟΤΕ
ΓΡΑΨΕ '2ο τρίμηνο'
ΑΛΛΙΩΣ_ΑΝ μήνας >= 7 ΚΑΙ μήνας <= 9 ΤΟΤΕ
ΓΡΑΨΕ '3ο τρίμηνο'
ΑΛΛΙΩΣ_ΑΝ μήνας >= 10 ΚΑΙ μήνας <= 12 ΤΟΤΕ
ΓΡΑΨΕ '4ο τρίμηνο'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Λάθος μήνας'
ΤΕΛΟΣ_ΑΝ
Λύση
Η μεταβλητή μήνας είναι ακέραια και οι περιοχές είναι διαδοχικές και δεν επικαλύπτονται.
ΕΠΙΛΕΞΕ μήνας
ΠΕΡΙΠΤΩΣΗ 1..3
ΓΡΑΨΕ '1ο τρίμηνο'
ΠΕΡΙΠΤΩΣΗ 4..6
ΓΡΑΨΕ '2ο τρίμηνο'
ΠΕΡΙΠΤΩΣΗ 7..9
ΓΡΑΨΕ '3ο τρίμηνο'
ΠΕΡΙΠΤΩΣΗ 10..12
ΓΡΑΨΕ '4ο τρίμηνο'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Λάθος μήνας'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Άσκηση 8 – Χαρακτηρισμός ακέραιου βαθμού
Ο βαθμός είναι ακέραιος από 0 μέχρι 20.
ΑΝ βαθμός >= 0 ΚΑΙ βαθμός <= 9 ΤΟΤΕ
ΓΡΑΨΕ 'Απορρίπτεται'
ΑΛΛΙΩΣ_ΑΝ βαθμός >= 10 ΚΑΙ βαθμός <= 12 ΤΟΤΕ
ΓΡΑΨΕ 'Μέτρια'
ΑΛΛΙΩΣ_ΑΝ βαθμός >= 13 ΚΑΙ βαθμός <= 15 ΤΟΤΕ
ΓΡΑΨΕ 'Καλά'
ΑΛΛΙΩΣ_ΑΝ βαθμός >= 16 ΚΑΙ βαθμός <= 18 ΤΟΤΕ
ΓΡΑΨΕ 'Πολύ καλά'
ΑΛΛΙΩΣ_ΑΝ βαθμός >= 19 ΚΑΙ βαθμός <= 20 ΤΟΤΕ
ΓΡΑΨΕ 'Άριστα'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Μη έγκυρος βαθμός'
ΤΕΛΟΣ_ΑΝ
Λύση
ΕΠΙΛΕΞΕ βαθμός
ΠΕΡΙΠΤΩΣΗ 0..9
ΓΡΑΨΕ 'Απορρίπτεται'
ΠΕΡΙΠΤΩΣΗ 10..12
ΓΡΑΨΕ 'Μέτρια'
ΠΕΡΙΠΤΩΣΗ 13..15
ΓΡΑΨΕ 'Καλά'
ΠΕΡΙΠΤΩΣΗ 16..18
ΓΡΑΨΕ 'Πολύ καλά'
ΠΕΡΙΠΤΩΣΗ 19..20
ΓΡΑΨΕ 'Άριστα'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Μη έγκυρος βαθμός'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Η δήλωση ότι ο βαθμός είναι ακέραιος είναι απαραίτητη. Αν ήταν πραγματικός, οι τιμές ανάμεσα στους ακεραίους θα έπρεπε επίσης να καλυφθούν.
Άσκηση 9 – Κατηγορία ηλικίας
Η ηλικία δίνεται ως ακέραιος από 0 μέχρι 120.
ΑΝ ηλικία >= 0 ΚΑΙ ηλικία <= 12 ΤΟΤΕ
ΓΡΑΨΕ 'Παιδί'
ΑΛΛΙΩΣ_ΑΝ ηλικία >= 13 ΚΑΙ ηλικία <= 17 ΤΟΤΕ
ΓΡΑΨΕ 'Έφηβος'
ΑΛΛΙΩΣ_ΑΝ ηλικία >= 18 ΚΑΙ ηλικία <= 64 ΤΟΤΕ
ΓΡΑΨΕ 'Ενήλικος'
ΑΛΛΙΩΣ_ΑΝ ηλικία >= 65 ΚΑΙ ηλικία <= 120 ΤΟΤΕ
ΓΡΑΨΕ 'Ηλικιωμένος'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Μη έγκυρη ηλικία'
ΤΕΛΟΣ_ΑΝ
Λύση
ΕΠΙΛΕΞΕ ηλικία
ΠΕΡΙΠΤΩΣΗ 0..12
ΓΡΑΨΕ 'Παιδί'
ΠΕΡΙΠΤΩΣΗ 13..17
ΓΡΑΨΕ 'Έφηβος'
ΠΕΡΙΠΤΩΣΗ 18..64
ΓΡΑΨΕ 'Ενήλικος'
ΠΕΡΙΠΤΩΣΗ 65..120
ΓΡΑΨΕ 'Ηλικιωμένος'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Μη έγκυρη ηλικία'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Άσκηση 10 – Χρέωση αποσκευής
Το βάρος δίνεται ως ακέραιος αριθμός κιλών.
ΑΝ κιλά >= 0 ΚΑΙ κιλά <= 8 ΤΟΤΕ
χρέωση <- 0
ΑΛΛΙΩΣ_ΑΝ κιλά >= 9 ΚΑΙ κιλά <= 15 ΤΟΤΕ
χρέωση <- 10
ΑΛΛΙΩΣ_ΑΝ κιλά >= 16 ΚΑΙ κιλά <= 23 ΤΟΤΕ
χρέωση <- 25
ΑΛΛΙΩΣ_ΑΝ κιλά >= 24 ΚΑΙ κιλά <= 32 ΤΟΤΕ
χρέωση <- 50
ΑΛΛΙΩΣ
χρέωση <- -1
ΓΡΑΨΕ 'Το βάρος δεν γίνεται δεκτό'
ΤΕΛΟΣ_ΑΝ
Λύση
ΕΠΙΛΕΞΕ κιλά
ΠΕΡΙΠΤΩΣΗ 0..8
χρέωση <- 0
ΠΕΡΙΠΤΩΣΗ 9..15
χρέωση <- 10
ΠΕΡΙΠΤΩΣΗ 16..23
χρέωση <- 25
ΠΕΡΙΠΤΩΣΗ 24..32
χρέωση <- 50
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
χρέωση <- -1
ΓΡΑΨΕ 'Το βάρος δεν γίνεται δεκτό'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Άσκηση 11 – Ζώνη αποστολής
ΑΝ ζώνη = 'Α' ΤΟΤΕ
κόστος <- 4
ΑΛΛΙΩΣ_ΑΝ ζώνη = 'Β' ΤΟΤΕ
κόστος <- 7
ΑΛΛΙΩΣ_ΑΝ ζώνη = 'Γ' ΤΟΤΕ
κόστος <- 12
ΑΛΛΙΩΣ_ΑΝ ζώνη = 'Δ' ΤΟΤΕ
κόστος <- 12
ΑΛΛΙΩΣ
κόστος <- -1
ΤΕΛΟΣ_ΑΝ
Λύση
ΕΠΙΛΕΞΕ ζώνη
ΠΕΡΙΠΤΩΣΗ 'Α'
κόστος <- 4
ΠΕΡΙΠΤΩΣΗ 'Β'
κόστος <- 7
ΠΕΡΙΠΤΩΣΗ 'Γ', 'Δ'
κόστος <- 12
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
κόστος <- -1
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Οι περιπτώσεις 'Γ' και 'Δ' ενώθηκαν, επειδή εκτελούν την ίδια ανάθεση.
Άσκηση 12 – Αντιστοίχιση κωδικού μαθήματος
ΑΝ κωδικός = 101 ΤΟΤΕ
μάθημα <- 'Πληροφορική'
ώρες <- 2
ΑΛΛΙΩΣ_ΑΝ κωδικός = 102 ΤΟΤΕ
μάθημα <- 'Μαθηματικά'
ώρες <- 4
ΑΛΛΙΩΣ_ΑΝ κωδικός = 103 ΤΟΤΕ
μάθημα <- 'Φυσική'
ώρες <- 3
ΑΛΛΙΩΣ
μάθημα <- 'Άγνωστο'
ώρες <- 0
ΤΕΛΟΣ_ΑΝ
Λύση
ΕΠΙΛΕΞΕ κωδικός
ΠΕΡΙΠΤΩΣΗ 101
μάθημα <- 'Πληροφορική'
ώρες <- 2
ΠΕΡΙΠΤΩΣΗ 102
μάθημα <- 'Μαθηματικά'
ώρες <- 4
ΠΕΡΙΠΤΩΣΗ 103
μάθημα <- 'Φυσική'
ώρες <- 3
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
μάθημα <- 'Άγνωστο'
ώρες <- 0
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Μεταφέρουμε όλες τις εντολές κάθε κλάδου και όχι μόνο την πρώτη.
Άσκηση 13 – Επιλογή με αριθμητική έκφραση
ΑΝ αριθμός MOD 4 = 0 ΤΟΤΕ
ΓΡΑΨΕ 'Υπόλοιπο 0'
ΑΛΛΙΩΣ_ΑΝ αριθμός MOD 4 = 1 ΤΟΤΕ
ΓΡΑΨΕ 'Υπόλοιπο 1'
ΑΛΛΙΩΣ_ΑΝ αριθμός MOD 4 = 2 ΤΟΤΕ
ΓΡΑΨΕ 'Υπόλοιπο 2'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Υπόλοιπο 3'
ΤΕΛΟΣ_ΑΝ
Λύση
Η κοινή έκφραση είναι η αριθμός MOD 4.
ΕΠΙΛΕΞΕ αριθμός MOD 4
ΠΕΡΙΠΤΩΣΗ 0
ΓΡΑΨΕ 'Υπόλοιπο 0'
ΠΕΡΙΠΤΩΣΗ 1
ΓΡΑΨΕ 'Υπόλοιπο 1'
ΠΕΡΙΠΤΩΣΗ 2
ΓΡΑΨΕ 'Υπόλοιπο 2'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Υπόλοιπο 3'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Η ΕΠΙΛΕΞΕ μπορεί να εξετάζει έκφραση και όχι μόνο μία απλή μεταβλητή.
Άσκηση 14 – Δομή χωρίς ΑΛΛΙΩΣ
ΑΝ εντολή = 'Ε' ΤΟΤΕ
ΓΡΑΨΕ 'Εκτύπωση'
ΑΛΛΙΩΣ_ΑΝ εντολή = 'Α' ΤΟΤΕ
ΓΡΑΨΕ 'Αποθήκευση'
ΑΛΛΙΩΣ_ΑΝ εντολή = 'Τ' ΤΟΤΕ
ΓΡΑΨΕ 'Τερματισμός'
ΤΕΛΟΣ_ΑΝ
Λύση
ΕΠΙΛΕΞΕ εντολή
ΠΕΡΙΠΤΩΣΗ 'Ε'
ΓΡΑΨΕ 'Εκτύπωση'
ΠΕΡΙΠΤΩΣΗ 'Α'
ΓΡΑΨΕ 'Αποθήκευση'
ΠΕΡΙΠΤΩΣΗ 'Τ'
ΓΡΑΨΕ 'Τερματισμός'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Δεν προσθέτουμε ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ, επειδή ούτε η αρχική δομή εκτελούσε κάποια εντολή για τις υπόλοιπες τιμές.
Άσκηση 15 – Τύπος συνδρομής
ΑΝ τύπος = 'ΜΗΝΙΑΙΑ' ΤΟΤΕ
έκπτωση <- 0
ΑΛΛΙΩΣ_ΑΝ τύπος = 'ΕΞΑΜΗΝΗ' ΤΟΤΕ
έκπτωση <- 10
ΑΛΛΙΩΣ_ΑΝ τύπος = 'ΕΤΗΣΙΑ' ΤΟΤΕ
έκπτωση <- 20
ΑΛΛΙΩΣ
έκπτωση <- -1
ΓΡΑΨΕ 'Άγνωστος τύπος'
ΤΕΛΟΣ_ΑΝ
Λύση
ΕΠΙΛΕΞΕ τύπος
ΠΕΡΙΠΤΩΣΗ 'ΜΗΝΙΑΙΑ'
έκπτωση <- 0
ΠΕΡΙΠΤΩΣΗ 'ΕΞΑΜΗΝΗ'
έκπτωση <- 10
ΠΕΡΙΠΤΩΣΗ 'ΕΤΗΣΙΑ'
έκπτωση <- 20
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
έκπτωση <- -1
ΓΡΑΨΕ 'Άγνωστος τύπος'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Άσκηση 16 – Κατηγορίες θέσεων
ΑΝ σειρά = 1 Η σειρά = 2 ΤΟΤΕ
τιμή <- 30
ΑΛΛΙΩΣ_ΑΝ σειρά = 3 Η σειρά = 4 Η σειρά = 5 ΤΟΤΕ
τιμή <- 22
ΑΛΛΙΩΣ_ΑΝ σειρά = 6 Η σειρά = 7 Η σειρά = 8 ΤΟΤΕ
τιμή <- 15
ΑΛΛΙΩΣ
τιμή <- 0
ΓΡΑΨΕ 'Δεν υπάρχει αυτή η σειρά'
ΤΕΛΟΣ_ΑΝ
Λύση με διαστήματα
ΕΠΙΛΕΞΕ σειρά
ΠΕΡΙΠΤΩΣΗ 1..2
τιμή <- 30
ΠΕΡΙΠΤΩΣΗ 3..5
τιμή <- 22
ΠΕΡΙΠΤΩΣΗ 6..8
τιμή <- 15
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
τιμή <- 0
ΓΡΑΨΕ 'Δεν υπάρχει αυτή η σειρά'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Επειδή οι τιμές κάθε ομάδας είναι συνεχόμενες, τα διαστήματα κάνουν τη λύση συντομότερη και πιο ευανάγνωστη.
Άσκηση 17 – Μετατροπή διαδοχικών ορίων
Ο βαθμός είναι ακέραιος από 0 μέχρι 20.
ΑΝ βαθμός < 10 ΤΟΤΕ
ΓΡΑΨΕ 'Ανεπαρκώς'
ΑΛΛΙΩΣ_ΑΝ βαθμός < 13 ΤΟΤΕ
ΓΡΑΨΕ 'Μέτρια'
ΑΛΛΙΩΣ_ΑΝ βαθμός < 16 ΤΟΤΕ
ΓΡΑΨΕ 'Καλά'
ΑΛΛΙΩΣ_ΑΝ βαθμός < 19 ΤΟΤΕ
ΓΡΑΨΕ 'Πολύ καλά'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Άριστα'
ΤΕΛΟΣ_ΑΝ
Ανάλυση
Οι συνθήκες δεν σημαίνουν:
- δεύτερη περίπτωση: όλοι οι βαθμοί κάτω από 13,
- τρίτη περίπτωση: όλοι οι βαθμοί κάτω από 16.
Επειδή οι συνθήκες ελέγχονται διαδοχικά, η πραγματική σημασία τους είναι:
- πρώτη περίπτωση:
0..9, - δεύτερη περίπτωση:
10..12, - τρίτη περίπτωση:
13..15, - τέταρτη περίπτωση:
16..18, - τελευταία περίπτωση:
19..20.
Λύση
ΕΠΙΛΕΞΕ βαθμός
ΠΕΡΙΠΤΩΣΗ 0..9
ΓΡΑΨΕ 'Ανεπαρκώς'
ΠΕΡΙΠΤΩΣΗ 10..12
ΓΡΑΨΕ 'Μέτρια'
ΠΕΡΙΠΤΩΣΗ 13..15
ΓΡΑΨΕ 'Καλά'
ΠΕΡΙΠΤΩΣΗ 16..18
ΓΡΑΨΕ 'Πολύ καλά'
ΠΕΡΙΠΤΩΣΗ 19..20
ΓΡΑΨΕ 'Άριστα'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Η λύση βασίζεται στη δεδομένη παραδοχή ότι ο βαθμός είναι ακέραιος από 0 μέχρι 20. Αν θέλουμε να ελέγχουμε και μη έγκυρες τιμές, πρέπει να προσθέσουμε αντίστοιχο έλεγχο τόσο στην αρχική όσο και στην τελική μορφή.
Άσκηση 18 – Πολλές τιμές και πολλές εντολές
ΑΝ κωδικός = 10 Η κωδικός = 11 ΤΟΤΕ
ποσοστό <- 5
μήνυμα <- 'Μικρή έκπτωση'
ΑΛΛΙΩΣ_ΑΝ κωδικός = 20 Η κωδικός = 21 Η κωδικός = 22 ΤΟΤΕ
ποσοστό <- 10
μήνυμα <- 'Κανονική έκπτωση'
ΑΛΛΙΩΣ_ΑΝ κωδικός = 30 ΤΟΤΕ
ποσοστό <- 20
μήνυμα <- 'Μεγάλη έκπτωση'
ΑΛΛΙΩΣ
ποσοστό <- 0
μήνυμα <- 'Χωρίς έκπτωση'
ΤΕΛΟΣ_ΑΝ
Λύση
ΕΠΙΛΕΞΕ κωδικός
ΠΕΡΙΠΤΩΣΗ 10, 11
ποσοστό <- 5
μήνυμα <- 'Μικρή έκπτωση'
ΠΕΡΙΠΤΩΣΗ 20, 21, 22
ποσοστό <- 10
μήνυμα <- 'Κανονική έκπτωση'
ΠΕΡΙΠΤΩΣΗ 30
ποσοστό <- 20
μήνυμα <- 'Μεγάλη έκπτωση'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ποσοστό <- 0
μήνυμα <- 'Χωρίς έκπτωση'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Άσκηση 19 – Παγίδα: διαφορετικές μεταβλητές
Εξετάζουμε αν η παρακάτω δομή μπορεί να μετατραπεί άμεσα σε ΕΠΙΛΕΞΕ.
ΑΝ βαθμός >= 18 ΤΟΤΕ
ΓΡΑΨΕ 'Υψηλή επίδοση'
ΑΛΛΙΩΣ_ΑΝ απουσίες > 50 ΤΟΤΕ
ΓΡΑΨΕ 'Πολλές απουσίες'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Κανονική περίπτωση'
ΤΕΛΟΣ_ΑΝ
Λύση
Δεν γίνεται άμεση μετατροπή.
Ο πρώτος κλάδος εξετάζει τη μεταβλητή βαθμός, ενώ ο δεύτερος τη μεταβλητή απουσίες. Δεν υπάρχει μία κοινή έκφραση της οποίας διαφορετικές τιμές να περιγράφουν όλους τους κλάδους.
Η σωστή λύση είναι να διατηρηθεί η αρχική δομή:
ΑΝ βαθμός >= 18 ΤΟΤΕ
ΓΡΑΨΕ 'Υψηλή επίδοση'
ΑΛΛΙΩΣ_ΑΝ απουσίες > 50 ΤΟΤΕ
ΓΡΑΨΕ 'Πολλές απουσίες'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Κανονική περίπτωση'
ΤΕΛΟΣ_ΑΝ
Ιδιαίτερη προσοχή: αν ισχύουν και οι δύο συνθήκες, εκτελείται μόνο ο πρώτος κλάδος. Η σειρά αποτελεί μέρος της λογικής του αλγορίθμου.
Άσκηση 20 – Παγίδα: επικαλυπτόμενες συνθήκες
ΑΝ x > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Θετικός αριθμός'
ΑΛΛΙΩΣ_ΑΝ x > 100 ΤΟΤΕ
ΓΡΑΨΕ 'Μεγαλύτερος από 100'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Μη θετικός αριθμός'
ΤΕΛΟΣ_ΑΝ
Ανάλυση
Για x = 150 είναι αληθείς και οι δύο συνθήκες. Επειδή, όμως, πρώτα ελέγχεται η x > 0, εμφανίζεται το μήνυμα 'Θετικός αριθμός'. Ο δεύτερος κλάδος δεν πρόκειται να εκτελεστεί ποτέ.
Επομένως, η δομή δεν πρέπει να μετατραπεί μηχανικά σε δύο περιπτώσεις.
Διόρθωση της λογικής
Αν η πραγματική πρόθεση είναι να ξεχωρίζουμε τους αριθμούς πάνω από 100, πρέπει πρώτα να διορθώσουμε τη σειρά:
ΑΝ x > 100 ΤΟΤΕ
ΓΡΑΨΕ 'Μεγαλύτερος από 100'
ΑΛΛΙΩΣ_ΑΝ x > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Θετικός μέχρι 100'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Μη θετικός αριθμός'
ΤΕΛΟΣ_ΑΝ
Ακόμη και μετά τη διόρθωση, η ΑΝ…ΑΛΛΙΩΣ_ΑΝ είναι η φυσικότερη επιλογή όταν το x είναι πραγματικός αριθμός. Αν το x είναι ακέραιος και γνωρίζουμε συγκεκριμένο πεδίο τιμών, μπορούμε να σχηματίσουμε μη επικαλυπτόμενα ακέραια διαστήματα.
7. Τα συνηθέστερα λάθη
Λάθος 1: Τοποθέτηση ολόκληρης της συνθήκης μετά την ΕΠΙΛΕΞΕ
Λανθασμένο:
ΕΠΙΛΕΞΕ επιλογή = 1
Σωστό:
ΕΠΙΛΕΞΕ επιλογή
ΠΕΡΙΠΤΩΣΗ 1
Λάθος 2: Επανάληψη της μεταβλητής στις περιπτώσεις
Λανθασμένο:
ΠΕΡΙΠΤΩΣΗ επιλογή = 1
Σωστό:
ΠΕΡΙΠΤΩΣΗ 1
Λάθος 3: Χρήση του ΤΕΛΟΣ_ΑΝ
Η δομή ΕΠΙΛΕΞΕ κλείνει πάντοτε με:
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Λάθος 4: Παράλειψη εντολών
Αν ένας κλάδος περιέχει τρεις εντολές, μεταφέρουμε και τις τρεις κάτω από την αντίστοιχη ΠΕΡΙΠΤΩΣΗ.
Λάθος 5: Δημιουργία επικαλυπτόμενων διαστημάτων
Λανθασμένο:
ΠΕΡΙΠΤΩΣΗ 0..10
...
ΠΕΡΙΠΤΩΣΗ 10..20
...
Η τιμή 10 ανήκει και στα δύο διαστήματα. Τα διαστήματα πρέπει να είναι αμοιβαία αποκλειόμενα.
Λάθος 6: Μετατροπή συνθηκών διαφορετικών μεταβλητών
Δεν μπορούμε να τοποθετήσουμε στην ίδια ΕΠΙΛΕΞΕ άλλον κλάδο για το x και άλλον για το y.
Λάθος 7: Αγνόηση του πεδίου τιμών
Η συνθήκη βαθμός < 10 δεν μετατρέπεται αυτόματα σε ΠΕΡΙΠΤΩΣΗ 0..9, αν δεν γνωρίζουμε ότι ο βαθμός είναι ακέραιος και δεν μπορεί να πάρει αρνητικές τιμές.
8. Πρότυπο μετατροπής
Αρχική μορφή
ΑΝ Ε = Τ1 ΤΟΤΕ
Ο1
ΑΛΛΙΩΣ_ΑΝ Ε = Τ2 ΤΟΤΕ
Ο2
ΑΛΛΙΩΣ_ΑΝ Ε = Τ3 ΤΟΤΕ
Ο3
ΑΛΛΙΩΣ
Ο4
ΤΕΛΟΣ_ΑΝ
Τελική μορφή
ΕΠΙΛΕΞΕ Ε
ΠΕΡΙΠΤΩΣΗ Τ1
Ο1
ΠΕΡΙΠΤΩΣΗ Τ2
Ο2
ΠΕΡΙΠΤΩΣΗ Τ3
Ο3
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
Ο4
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
9. Τελικό φύλλο ελέγχου
Πριν θεωρήσουμε ολοκληρωμένη τη μετατροπή, ελέγχουμε:
10. Συμπέρασμα
Η μετατροπή από ΑΝ…ΑΛΛΙΩΣ_ΑΝ σε ΕΠΙΛΕΞΕ δεν είναι απλή αντικατάσταση λέξεων. Χρειάζεται πρώτα να αναγνωρίσουμε τη λογική της αρχικής δομής.
Η ασφαλής διαδικασία είναι:
- εντοπίζουμε την κοινή έκφραση,
- προσδιορίζουμε τις πραγματικές τιμές κάθε κλάδου,
- δημιουργούμε μεμονωμένες περιπτώσεις, λίστες ή μη επικαλυπτόμενα διαστήματα,
- μεταφέρουμε όλες τις εντολές,
- ελέγχουμε την ισοδυναμία με αντιπροσωπευτικές τιμές.
Όταν οι έλεγχοι αφορούν διαφορετικές μεταβλητές, σύνθετες άσχετες συνθήκες ή περιπτώσεις που εξαρτώνται από τη σειρά, η δομή ΑΝ…ΑΛΛΙΩΣ_ΑΝ πρέπει να διατηρηθεί.
Συχνές ερωτήσεις
Είναι πάντοτε δυνατή η μετατροπή από ΑΛΛΙΩΣ_ΑΝ σε ΕΠΙΛΕΞΕ;
Όχι. Χρειάζεται οι κλάδοι να μπορούν να περιγραφούν ως διαφορετικές τιμές ή μη επικαλυπτόμενα διαστήματα της ίδιας έκφρασης.
Είναι υποχρεωτική η ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ;
Όχι. Τη χρησιμοποιούμε όταν υπάρχει αντίστοιχο ΑΛΛΙΩΣ ή όταν θέλουμε να διαχειριστούμε μη αναμενόμενες τιμές.
Μπορούμε να βάλουμε πολλές τιμές σε μία ΠΕΡΙΠΤΩΣΗ;
Ναι, όταν όλες οδηγούν ακριβώς στις ίδιες εντολές, για παράδειγμα:
ΠΕΡΙΠΤΩΣΗ 1, 3, 5
Μπορούμε να χρησιμοποιήσουμε διαστήματα;
Ναι, όταν οι τιμές είναι διαδοχικές, το πεδίο τιμών είναι γνωστό και τα διαστήματα δεν επικαλύπτονται.
Η σειρά των ΠΕΡΙΠΤΩΣΕΩΝ αλλάζει το αποτέλεσμα;
Σε σωστά διατυπωμένες, αμοιβαία αποκλειόμενες περιπτώσεις, όχι. Αν οι περιοχές επικαλύπτονται, η διατύπωση είναι προβληματική και πρέπει να διορθωθεί.
0 Comments