Δομές επανάληψης
Με μετρητή ή με συνθήκη — και πώς τελικά σταματάει ένας βρόχος.
45 λεπτά
Θα μάθεις να
- Να γράφεις επανάληψη με μετρητή (Για i από 1 μέχρι ν) και να βρίσκεις πόσες φορές εκτελείται.
- Να γράφεις επανάληψη με συνθήκη (Όσο … επανάλαβε) και να εξηγείς πότε και πώς σταματάει.
- Να χρησιμοποιείς μετρητή και αθροιστή μέσα σε επανάληψη, με σωστή αρχική τιμή.
- Να εντοπίζεις ατέρμονο βρόχο και να αντιστοιχίζεις τις επαναλήψεις σε Scratch και Python.
Ξανά και ξανά
Θέλεις να εμφανίσεις τους αριθμούς από το 1 ως το 100. Με όσα ξέρεις, θα έγραφες 100
εντολές Εμφάνισε. Ο υπολογιστής όμως είναι φτιαγμένος για να κάνει το ίδιο πράγμα
πολλές φορές, γρήγορα και χωρίς να βαριέται. Αρκεί να του πεις τι να επαναλαμβάνει
και πότε να σταματήσει.
Αυτό είναι η δομή επανάληψης (loop, στα ελληνικά και βρόχος). Υπάρχουν δύο βασικά είδη:
- με μετρητή, όταν ξέρεις από πριν πόσες φορές θα γίνει η επανάληψη·
- με συνθήκη, όταν δεν το ξέρεις, και η επανάληψη σταματά όταν συμβεί κάτι.
Επανάληψη με μετρητή: Για
Για i από 1 μέχρι 10Εμφάνισε iΤέλος_επανάληψης
Η μεταβλητή i λέγεται μετρητής. Ξεκινά από το 1, και μετά από κάθε εκτέλεση του
σώματος της επανάληψης αυξάνεται κατά 1. Όταν ξεπεράσει το 10, η επανάληψη σταματά.
Το σώμα, εδώ το Εμφάνισε i, εκτελείται 10 φορές.
Με με_βήμα αλλάζεις το πόσο προχωράει ο μετρητής κάθε φορά:
Για i από 2 μέχρι 20 με_βήμα 2περνάει από τους ζυγούς 2, 4, …, 20 (10 φορές).Για i από 10 μέχρι 1 με_βήμα -1μετράει αντίστροφα.
| Ψευδοκώδικας | Scratch | Python |
|---|---|---|
Για i από 1 μέχρι 10 | «επανάλαβε 10» | for i in range(1, 11): |
Για i από 2 μέχρι 20 με_βήμα 2 | (με μεταβλητή που αλλάζει κατά 2) | for i in range(2, 21, 2): |
Στην Python το range(1, 11) σταματά πριν από το 11. Γι' αυτό γράφεται 11 για να
φτάσει ως το 10.
Επανάληψη με συνθήκη: Όσο
κουμπαράς ← 0εβδομάδες ← 0Όσο κουμπαράς < 100 επανάλαβεκουμπαράς ← κουμπαράς + 15εβδομάδες ← εβδομάδες + 1Τέλος_επανάληψηςΕμφάνισε εβδομάδες
Η συνθήκη ελέγχεται πριν από κάθε επανάληψη. Όσο είναι Αληθής, εκτελείται το σώμα
και μετά ξαναγυρίζουμε στον έλεγχο. Μόλις γίνει Ψευδής, η εκτέλεση συνεχίζει μετά το
Τέλος_επανάληψης. Αν η συνθήκη είναι Ψευδής από την αρχή, το σώμα δεν εκτελείται
ούτε μία φορά.
Στην Python το ίδιο γράφεται με while:
koumparas = 0
evdomades = 0
while koumparas < 100:
koumparas = koumparas + 15
evdomades = evdomades + 1
print(evdomades)
Αρχή_επανάληψης … Μέχρις_ότου
Υπάρχει και μια τρίτη μορφή, όπου η συνθήκη ελέγχεται στο τέλος:
Αρχή_επανάληψηςΔιάβασε κωδικόςΜέχρις_ότου κωδικός = 1234
Εδώ το σώμα εκτελείται τουλάχιστον μία φορά, που ταιριάζει όταν πρέπει πρώτα να κάνεις κάτι και μετά να ελέγξεις, όπως όταν ζητάς έναν κωδικό. Και η επανάληψη σταματά όταν η συνθήκη γίνει Αληθής, όπως στο «επανάλαβε ώσπου» του Scratch.
Μετρητές και αθροιστές
Δύο «συνταγές» εμφανίζονται σε σχεδόν κάθε πρόγραμμα με επανάληψη:
- Μετρητής: ξεκινά από το 0 και αυξάνεται κατά 1 κάθε φορά που συμβαίνει κάτι.
πλήθος ← πλήθος + 1 - Αθροιστής: ξεκινά από το 0 και κάθε φορά προσθέτει μια τιμή.
άθροισμα ← άθροισμα + τιμή
Και οι δύο παίρνουν αρχική τιμή πριν από την επανάληψη. Αν το άθροισμα ← 0 μπει
μέσα στην επανάληψη, το άθροισμα μηδενίζεται κάθε φορά.
άθροισμα ← 0Για i από 1 μέχρι 5άθροισμα ← άθροισμα + iΤέλος_επανάληψηςΕμφάνισε άθροισμα
Λυμένα παραδείγματα
Παράδειγμα 1
Γράψε αλγόριθμο που υπολογίζει και εμφανίζει το άθροισμα 1 + 2 + … + 100.
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 2
Στο πρόγραμμα «Κουμπαράς» (κάθε εβδομάδα 15 €, ως τα 100 €), πόσες εβδομάδες εμφανίζει, και πόσα χρήματα έχει ο κουμπαράς στο τέλος;
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 3
Ένας μαθητής έγραψε: i ← 1 · Όσο i <= 5 επανάλαβε · Εμφάνισε i · Τέλος_επανάληψης. Τι θα συμβεί, και πώς διορθώνεται;
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 4
Γράψε αλγόριθμο που διαβάζει βαθμούς μέχρι ο χρήστης να δώσει −1, και εμφανίζει τον μέσο όρο τους. Τι εμφανίζει για 15, 18, 12, −1;
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Ασκήσεις
Πρώτα ερωτήσεις με επιλογές: διαλέγεις, πατάς «Έλεγξε» και μαθαίνεις αμέσως αν το βρήκες και γιατί. Στο τέλος, λίγες ασκήσεις χωρίς επιλογές — εκεί κρύβεται μόνο η απάντηση.
Τα κατάφερες;
- Να γράφεις επανάληψη με μετρητή (Για i από 1 μέχρι ν) και να βρίσκεις πόσες φορές εκτελείται.
- Να γράφεις επανάληψη με συνθήκη (Όσο … επανάλαβε) και να εξηγείς πότε και πώς σταματάει.
- Να χρησιμοποιείς μετρητή και αθροιστή μέσα σε επανάληψη, με σωστή αρχική τιμή.
- Να εντοπίζεις ατέρμονο βρόχο και να αντιστοιχίζεις τις επαναλήψεις σε Scratch και Python.
Λύσε τις ασκήσεις πιο πάνω και θα δεις εδώ πού στέκεσαι.