Μετάβαση στο περιεχόμενο

Δομή επιλογής

Απλή, σύνθετη και εμφωλευμένη απόφαση.

40 λεπτά

Θα μάθεις να

  1. Να γράφεις απλή δομή επιλογής (Αν … τότε … Τέλος_αν) και σύνθετη (Αν … τότε … αλλιώς … Τέλος_αν).
  2. Να γράφεις εμφωλευμένη επιλογή και αλυσίδα αλλιώς_αν για περισσότερες από δύο περιπτώσεις.
  3. Να εκτελείς «με το χέρι» μια δομή επιλογής για διάφορες εισόδους, μαζί με τις οριακές τιμές.
  4. Να αντιστοιχίζεις τη δομή επιλογής στον ρόμβο του διαγράμματος ροής, στο Scratch και στην Python.

Το πρόγραμμα αποφασίζει

Ως τώρα οι αλγόριθμοί μας εκτελούσαν όλες τις εντολές, τη μία μετά την άλλη. Τα πραγματικά προγράμματα όμως αποφασίζουν: αν ο κωδικός είναι σωστός, μπαίνεις· αλλιώς βλέπεις μήνυμα λάθους. Αν το σκορ ξεπέρασε το ρεκόρ, γράφεται νέο ρεκόρ.

Η δομή επιλογής (selection) ελέγχει μια συνθήκη, δηλαδή μια έκφραση που είναι Αληθής ή Ψευδής, και ανάλογα με την τιμή της εκτελεί άλλες εντολές. Στο διάγραμμα ροής είναι ο ρόμβος, με δύο εξόδους: «Ναι» και «Όχι».

Απλή επιλογή

Κάτι γίνεται μόνο αν ισχύει η συνθήκη. Αλλιώς δεν γίνεται τίποτα, και το πρόγραμμα συνεχίζει κανονικά.

Έκπτωση για αγορές πάνω από 50 €
  1. Διάβασε ποσό
  2. Αν ποσό > 50 τότε
  3. ποσό ← ποσό * 0.9
  4. Τέλος_αν
  5. Εμφάνισε ποσό

Με ποσό 80: η συνθήκη 80 > 50 είναι Αληθής, οπότε το ποσό γίνεται 72. Με ποσό 30: η συνθήκη είναι Ψευδής, η γραμμή 3 προσπερνιέται, και εμφανίζεται 30. Η γραμμή 5 εκτελείται πάντα, γιατί είναι έξω από τη δομή.

Σύνθετη επιλογή

Δύο δρόμοι, και ακολουθείται ακριβώς ένας:

Εισιτήριο κινηματογράφου
  1. Διάβασε ηλικία
  2. Αν ηλικία < 12 τότε
  3. τιμή ← 5
  4. αλλιώς
  5. τιμή ← 8
  6. Τέλος_αν
  7. Εμφάνισε τιμή

Στο Scratch και στην Python

Στο Scratch, η απλή επιλογή είναι το μπλοκ «εάν … τότε», και η σύνθετη το «εάν … τότε … αλλιώς». Οι εντολές κάθε κλάδου μπαίνουν μέσα στο στόμιο του μπλοκ.

Στην Python το ίδιο πρόγραμμα γράφεται έτσι:

ilikia = int(input())
if ilikia < 12:
    timi = 5
else:
    timi = 8
print(timi)

Στην Python δεν υπάρχει Τέλος_αν: το τέλος του κλάδου το δείχνει η εσοχή. Γι' αυτό εκεί η εσοχή δεν είναι θέμα εμφάνισης, είναι μέρος του προγράμματος.

Περισσότεροι από δύο δρόμοι

Εμφωλευμένη επιλογή

Μια επιλογή μπορεί να μπει μέσα σε έναν κλάδο μιας άλλης. Αυτή λέγεται εμφωλευμένη (nested) επιλογή:

Θερμοκρασία νερού
  1. Διάβασε θερμοκρασία
  2. Αν θερμοκρασία <= 0 τότε
  3. Εμφάνισε "Πάγος"
  4. αλλιώς
  5. Αν θερμοκρασία < 100 τότε
  6. Εμφάνισε "Υγρό"
  7. αλλιώς
  8. Εμφάνισε "Ατμός"
  9. Τέλος_αν
  10. Τέλος_αν

Η εσωτερική επιλογή (γραμμές 5 ως 9) ελέγχεται μόνο όταν η πρώτη συνθήκη είναι Ψευδής, δηλαδή μόνο για θερμοκρασίες πάνω από 0. Κάθε Αν κλείνει με το δικό του Τέλος_αν.

Η αλυσίδα αλλιώς_αν

Το ίδιο πρόγραμμα γράφεται πιο καθαρά με αλλιώς_αν, ένα Αν κολλημένο στο αλλιώς:

Θερμοκρασία νερού, με αλλιώς_αν
  1. Διάβασε θερμοκρασία
  2. Αν θερμοκρασία <= 0 τότε
  3. Εμφάνισε "Πάγος"
  4. αλλιώς_αν θερμοκρασία < 100 τότε
  5. Εμφάνισε "Υγρό"
  6. αλλιώς
  7. Εμφάνισε "Ατμός"
  8. Τέλος_αν

Οι συνθήκες ελέγχονται με τη σειρά, και η πρώτη που αληθεύει κερδίζει. Οι υπόλοιπες δεν ελέγχονται καν. Στην Python το αλλιώς_αν γράφεται elif.

Τέσσερις θερμοκρασίες στην αλυσίδα

Για κάθε θερμοκρασία, πρόβλεψε ποια συνθήκη αληθεύει πρώτη και τι εμφανίζεται.

ΒήμαΘερμοκρασίαθερμοκρασία <= 0θερμοκρασία < 100Εμφανίζει
Ζωντανή ενημέρωση

Λυμένα παραδείγματα

Παράδειγμα 1

Γράψε αλγόριθμο που διαβάζει έναν ακέραιο και εμφανίζει «Ζυγός» ή «Μονός». Τι εμφανίζει για 14 και για 7;

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Παράδειγμα 2

Ένα πρόγραμμα χαρακτηρίζει βαθμούς από 0 έως 20. Γράψε αλγόριθμο που εμφανίζει «Άριστα» για βαθμό από 18.5 και πάνω, «Επιτυχία» για βαθμό από 10 έως κάτω από 18.5, και «Χρειάζεται στήριξη» κάτω από 10. Τι εμφανίζει για 18.5, για 12 και για 9.5;

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Παράδειγμα 3

Τι εμφανίζει το παρακάτω για α = 7 και β = 7; Αν α > β τότε Εμφάνισε α · αλλιώς Εμφάνισε β · Τέλος_αν. Βρίσκει πάντα τον μεγαλύτερο;

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Ασκήσεις

Πρώτα ερωτήσεις με επιλογές: διαλέγεις, πατάς «Έλεγξε» και μαθαίνεις αμέσως αν το βρήκες και γιατί. Στο τέλος, λίγες ασκήσεις χωρίς επιλογές — εκεί κρύβεται μόνο η απάντηση.

Πολλαπλή επιλογήΆσκηση 1 από 14
Σε απλή επιλογή (Αν … τότε … Τέλος_αν) η συνθήκη είναι Ψευδής. Τι γίνεται;

Τα κατάφερες;

  • Να γράφεις απλή δομή επιλογής (Αν … τότε … Τέλος_αν) και σύνθετη (Αν … τότε … αλλιώς … Τέλος_αν).
  • Να γράφεις εμφωλευμένη επιλογή και αλυσίδα αλλιώς_αν για περισσότερες από δύο περιπτώσεις.
  • Να εκτελείς «με το χέρι» μια δομή επιλογής για διάφορες εισόδους, μαζί με τις οριακές τιμές.
  • Να αντιστοιχίζεις τη δομή επιλογής στον ρόμβο του διαγράμματος ροής, στο Scratch και στην Python.

Λύσε τις ασκήσεις πιο πάνω και θα δεις εδώ πού στέκεσαι.