ΓΛΩΣΣΑ: εντολές επιλογής
Κεφ. 8 §8.1 · Βιβλίο 2 §3.1 · ΑΝ, ΑΛΛΙΩΣ_ΑΝ, εμφωλευμένα ΑΝ, ΕΠΙΛΕΞΕ
Το σύστημα μηχανογραφικού ελέγχει αν ο βαθμός σου περνά τη βάση, αν ανήκεις σε ειδική κατηγορία, σε ποιο πεδίο ανήκει κάθε τμήμα. Κάθε τέτοιος έλεγχος είναι μια εντολή επιλογής.
Στις εξετάσεις θα γράψεις δεκάδες ΑΝ. Εδώ μαθαίνεις να τα γράφεις σωστά και οικονομικά — και γνωρίζεις το ΕΠΙΛΕΞΕ, που κάνει κάποιους ελέγχους πολύ πιο καθαρούς.
Η εντολή ΑΝ
Η ΓΛΩΣΣΑ έχει τρεις μορφές της ΑΝ:
Απλή:
ΑΝ συνθήκη ΤΟΤΕ εντολές ΤΕΛΟΣ_ΑΝ
Σύνθετη (ΑΝ … ΑΛΛΙΩΣ):
ΑΝ συνθήκη ΤΟΤΕ εντολές_1 ΑΛΛΙΩΣ εντολές_2 ΤΕΛΟΣ_ΑΝ
Πολλαπλή (ΑΝ … ΑΛΛΙΩΣ_ΑΝ):
ΑΝ συνθήκη_1 ΤΟΤΕ εντολές_1 ΑΛΛΙΩΣ_ΑΝ συνθήκη_2 ΤΟΤΕ εντολές_2 ΑΛΛΙΩΣ εντολές_3 ΤΕΛΟΣ_ΑΝ
Στην πολλαπλή εκτελείται μόνο η ομάδα της πρώτης αληθούς συνθήκης· το ΑΛΛΙΩΣ είναι προαιρετικό. Εμφωλευμένες λέγονται οι εντολές ΑΝ που βρίσκονται μέσα σε άλλες ΑΝ — κάθε μία κλείνει με το δικό της ΤΕΛΟΣ_ΑΝ.
Οι συνθήκες χρησιμοποιούν τους συγκριτικούς τελεστές =, <>, <, >, <=, >= και τους λογικούς ΟΧΙ, ΚΑΙ, Η. Συγκρίνονται και χαρακτήρες, με αλφαβητική σειρά ('Α' < 'Β').
Τι εμφανίζεται για α = 5 και β = 5;
ΑΝ α > β ΤΟΤΕ ΓΡΑΨΕ 'Μεγαλύτερο' ΑΛΛΙΩΣ_ΑΝ α < β ΤΟΤΕ ΓΡΑΨΕ 'Μικρότερο' ΤΕΛΟΣ_ΑΝ
Πίνακας αληθείας
- Α = ΑΛΗΘΗΣ, Β = ΑΛΗΘΗΣ → Α ΚΑΙ Β: ΑΛΗΘΗΣ · Α Η Β: ΑΛΗΘΗΣ
- Α = ΑΛΗΘΗΣ, Β = ΨΕΥΔΗΣ → Α ΚΑΙ Β: ΨΕΥΔΗΣ · Α Η Β: ΑΛΗΘΗΣ
- Α = ΨΕΥΔΗΣ, Β = ΑΛΗΘΗΣ → Α ΚΑΙ Β: ΨΕΥΔΗΣ · Α Η Β: ΑΛΗΘΗΣ
- Α = ΨΕΥΔΗΣ, Β = ΨΕΥΔΗΣ → Α ΚΑΙ Β: ΨΕΥΔΗΣ · Α Η Β: ΨΕΥΔΗΣ
Και ΟΧΙ ΑΛΗΘΗΣ = ΨΕΥΔΗΣ, ΟΧΙ ΨΕΥΔΗΣ = ΑΛΗΘΗΣ. Σειρά εκτέλεσης: αριθμητικοί → συγκριτικοί → ΟΧΙ → ΚΑΙ → Η.
Η εντολή ΕΠΙΛΕΞΕ
Όταν η επιλογή εξαρτάται από την τιμή μιας έκφρασης (π.χ. ενός κωδικού ή ενός αριθμού μήνα), η ΕΠΙΛΕΞΕ είναι πιο καθαρή από μια μακριά σειρά ΑΛΛΙΩΣ_ΑΝ:
ΕΠΙΛΕΞΕ έκφραση ΠΕΡΙΠΤΩΣΗ λίστα_τιμών_1 εντολές_1 ΠΕΡΙΠΤΩΣΗ λίστα_τιμών_2 εντολές_2 ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ εντολές_αλλιώς ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Υπολογίζεται η έκφραση και εκτελούνται οι εντολές της πρώτης ΠΕΡΙΠΤΩΣΗΣ στη λίστα της οποίας ανήκει η τιμή· αν δεν ανήκει σε καμία, εκτελούνται οι εντολές της ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ (αν υπάρχει). Η λίστα τιμών μπορεί να περιέχει πολλές τιμές χωρισμένες με κόμμα.
Κάθε ΕΠΙΛΕΞΕ μπορεί να γραφτεί ως ΑΝ … ΑΛΛΙΩΣ_ΑΝ· το αντίστροφο δεν είναι πάντα βολικό, γιατί η ΕΠΙΛΕΞΕ ελέγχει μία έκφραση.
Παράδειγμα 1: Εποχή του χρόνου από τον αριθμό μήνα.
ΔΙΑΒΑΣΕ μ ΕΠΙΛΕΞΕ μ ΠΕΡΙΠΤΩΣΗ 12, 1, 2 ΓΡΑΨΕ 'Χειμώνας' ΠΕΡΙΠΤΩΣΗ 3, 4, 5 ΓΡΑΨΕ 'Άνοιξη' ΠΕΡΙΠΤΩΣΗ 6, 7, 8 ΓΡΑΨΕ 'Καλοκαίρι' ΠΕΡΙΠΤΩΣΗ 9, 10, 11 ΓΡΑΨΕ 'Φθινόπωρο' ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ ΓΡΑΨΕ 'Λάθος μήνας' ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Με ΑΝ θα χρειαζόταν: ΑΝ μ = 12 Η μ = 1 Η μ = 2 ΤΟΤΕ … ΑΛΛΙΩΣ_ΑΝ μ = 3 Η μ = 4 Η μ = 5 ΤΟΤΕ … κ.ο.κ. — ορθό, αλλά πιο φλύαρο.
Τι εμφανίζεται για κ = 7;
ΕΠΙΛΕΞΕ κ MOD 3 ΠΕΡΙΠΤΩΣΗ 0 ΓΡΑΨΕ 'Α' ΠΕΡΙΠΤΩΣΗ 1 ΓΡΑΨΕ 'Β' ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ ΓΡΑΨΕ 'Γ' ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
Μέθοδος: κλιμακωτός υπολογισμός (φόροι, εκπτώσεις, τιμολόγια)
- Γράψε τα κλιμάκια με τα όριά τους και τη χρέωση ανά κλιμάκιο.
- Διάκρινε: η χρέωση εφαρμόζεται σε όλο το ποσό (αναλογικό, «όλο το ποσό με x%») ή μόνο στο τμήμα μέσα σε κάθε κλιμάκιο (κλιμακωτό);
- Στο κλιμακωτό, για κάθε κλάδο πρόσθεσε τη συνολική χρέωση των πλήρων προηγούμενων κλιμακίων + το υπόλοιπο στο τρέχον.
- Χρησιμοποίησε ΑΝ … ΑΛΛΙΩΣ_ΑΝ με όρια σε αύξουσα σειρά, ώστε κάθε συνθήκη να χρειάζεται μόνο το άνω όριο.
- Έλεγξε με μια τιμή σε κάθε κλιμάκιο και με τις οριακές τιμές.
Θέμα τύπου Πανελλαδικών: Εταιρεία κινητής χρεώνει μηνιαία πάγιο 10 € που περιλαμβάνει 100 λεπτά ομιλίας. Τα λεπτά από 101 έως 300 χρεώνονται 0.05 € το λεπτό και όσα είναι πάνω από 300 χρεώνονται 0.08 € το λεπτό. Να γραφεί πρόγραμμα που διαβάζει τα λεπτά (ακέραιος, μη αρνητικός) και εμφανίζει τον λογαριασμό.
ΠΡΟΓΡΑΜΜΑ Λογαριασμος ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: λεπτα ΠΡΑΓΜΑΤΙΚΕΣ: ποσο ΑΡΧΗ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ λεπτα ΜΕΧΡΙΣ_ΟΤΟΥ λεπτα >= 0 ΑΝ λεπτα <= 100 ΤΟΤΕ ποσο ← 10 ΑΛΛΙΩΣ_ΑΝ λεπτα <= 300 ΤΟΤΕ ποσο ← 10 + (λεπτα - 100) * 0.05 ΑΛΛΙΩΣ ποσο ← 10 + 200 * 0.05 + (λεπτα - 300) * 0.08 ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ 'Λογαριασμός: ', ποσο ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Έλεγχος: 80 λεπτά → 10 € · 250 λεπτά → € · 400 λεπτά → €. Ο έλεγχος εγκυρότητας με ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ξαναζητά τα λεπτά αν δοθεί αρνητική τιμή.
Ποια συνθήκη είναι ισοδύναμη με την ΟΧΙ (x > 0 ΚΑΙ y > 0);
Παράδειγμα 2: Πρόγραμμα που διαβάζει τρεις διαφορετικούς αριθμούς και εμφανίζει τον μεγαλύτερο, με εμφωλευμένες ΑΝ.
ΠΡΟΓΡΑΜΜΑ Μεγιστος_Τριων ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: α, β, γ ΑΡΧΗ ΔΙΑΒΑΣΕ α, β, γ ΑΝ α > β ΤΟΤΕ ΑΝ α > γ ΤΟΤΕ ΓΡΑΨΕ α ΑΛΛΙΩΣ ΓΡΑΨΕ γ ΤΕΛΟΣ_ΑΝ ΑΛΛΙΩΣ ΑΝ β > γ ΤΟΤΕ ΓΡΑΨΕ β ΑΛΛΙΩΣ ΓΡΑΨΕ γ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Για 4, 9, 7: α > β ψευδές → ΑΛΛΙΩΣ → β > γ αληθές → εμφανίζεται 9. Κάθε διαδρομή κάνει ακριβώς δύο συγκρίσεις. Ισοδύναμα, με μία πολλαπλή ΑΝ: ΑΝ α > β ΚΑΙ α > γ ΤΟΤΕ … ΑΛΛΙΩΣ_ΑΝ β > γ ΤΟΤΕ … ΑΛΛΙΩΣ … ΤΕΛΟΣ_ΑΝ.
Οι κανόνες «ΟΧΙ (Α ΚΑΙ Β) = ΟΧΙ Α Η ΟΧΙ Β» και «ΟΧΙ (Α Η Β) = ΟΧΙ Α ΚΑΙ ΟΧΙ Β» ονομάζονται νόμοι του De Morgan, από τον Βρετανό μαθηματικό Augustus De Morgan (1806–1871), σύγχρονο και φίλο του George Boole. Χρησιμοποιούνται ακόμη στον σχεδιασμό κυκλωμάτων, για να φτιάχνονται όλες οι πύλες από έναν μόνο τύπο πύλης.
De Morgan = «σπάσε τη γραμμή, άλλαξε το σημάδι»: βάζεις το ΟΧΙ μέσα σε κάθε όρο και αλλάζεις το ΚΑΙ σε Η (ή το αντίστροφο). Και οι αρνήσεις συγκρίσεων: > ↔ <=, < ↔ >=, = ↔ <>.
Ένα έτος είναι δίσεκτο αν διαιρείται με το 4 και όχι με το 100, ή αν διαιρείται με το 400. Γράψε τη συνθήκη σε μία ΑΝ και έλεγξε τα έτη 2024, 1900, 2000, 2026.
Δοκίμασε πρώτα μόνος σου — μετά δες τη λύση
ΑΝ (ετος MOD 4 = 0 ΚΑΙ ετος MOD 100 <> 0) Η ετος MOD 400 = 0 ΤΟΤΕ ΓΡΑΨΕ 'Δίσεκτο' ΑΛΛΙΩΣ ΓΡΑΨΕ 'Όχι δίσεκτο' ΤΕΛΟΣ_ΑΝ
- 2024: διαιρείται με 4, όχι με 100 → Δίσεκτο
- 1900: διαιρείται με 4 και με 100, όχι με 400 → Όχι δίσεκτο
- 2000: διαιρείται με 400 → Δίσεκτο
- 2026: δεν διαιρείται με 4 ούτε με 400 → Όχι δίσεκτο
Η παρένθεση δεν είναι υποχρεωτική (το ΚΑΙ εκτελείται πριν από το Η), αλλά κάνει την πρόθεση σαφή.
- Σε ΑΛΛΙΩΣ_ΑΝ ξαναγράφεις τις αρνήσεις των προηγούμενων συνθηκών (π.χ. ΑΛΛΙΩΣ_ΑΝ λεπτα > 100 ΚΑΙ λεπτα <= 300): δεν είναι λάθος, αλλά είναι περιττό και αυξάνει τις πιθανότητες λάθους.
- Όρια που αφήνουν «κενά» ή επικαλύπτονται (π.χ. < 100 και > 100: ποιος παίρνει το 100;).
- Γράφεις ΤΕΛΟΣ_ΑΝ στο τέλος της ΕΠΙΛΕΞΕ: κλείνει με ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ.
- Άρνηση του > ως <: η σωστή άρνηση είναι <=.
- ΑΝ: απλή, σύνθετη (ΑΛΛΙΩΣ), πολλαπλή (ΑΛΛΙΩΣ_ΑΝ)· εκτελείται μόνο ο πρώτος αληθής κλάδος.
- Εμφωλευμένες ΑΝ: κάθε μία με το δικό της ΤΕΛΟΣ_ΑΝ.
- ΕΠΙΛΕΞΕ έκφραση – ΠΕΡΙΠΤΩΣΗ λίστα – ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ – ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ.
- Σειρά: αριθμητικοί → συγκριτικοί → ΟΧΙ → ΚΑΙ → Η.
- De Morgan: ΟΧΙ (Α ΚΑΙ Β) = ΟΧΙ Α Η ΟΧΙ Β.