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

Δομές επανάληψης

Με μετρητή ή με συνθήκη — και πώς τελικά σταματάει ένας βρόχος.

45 λεπτά

Θα μάθεις να

  1. Να γράφεις επανάληψη με μετρητή (Για i από 1 μέχρι ν) και να βρίσκεις πόσες φορές εκτελείται.
  2. Να γράφεις επανάληψη με συνθήκη (Όσο … επανάλαβε) και να εξηγείς πότε και πώς σταματάει.
  3. Να χρησιμοποιείς μετρητή και αθροιστή μέσα σε επανάληψη, με σωστή αρχική τιμή.
  4. Να εντοπίζεις ατέρμονο βρόχο και να αντιστοιχίζεις τις επαναλήψεις σε Scratch και Python.

Ξανά και ξανά

Θέλεις να εμφανίσεις τους αριθμούς από το 1 ως το 100. Με όσα ξέρεις, θα έγραφες 100 εντολές Εμφάνισε. Ο υπολογιστής όμως είναι φτιαγμένος για να κάνει το ίδιο πράγμα πολλές φορές, γρήγορα και χωρίς να βαριέται. Αρκεί να του πεις τι να επαναλαμβάνει και πότε να σταματήσει.

Αυτό είναι η δομή επανάληψης (loop, στα ελληνικά και βρόχος). Υπάρχουν δύο βασικά είδη:

  • με μετρητή, όταν ξέρεις από πριν πόσες φορές θα γίνει η επανάληψη·
  • με συνθήκη, όταν δεν το ξέρεις, και η επανάληψη σταματά όταν συμβεί κάτι.

Επανάληψη με μετρητή: Για

Οι αριθμοί από 1 ως 10
  1. Για i από 1 μέχρι 10
  2. Εμφάνισε i
  3. Τέλος_επανάληψης

Η μεταβλητή i λέγεται μετρητής. Ξεκινά από το 1, και μετά από κάθε εκτέλεση του σώματος της επανάληψης αυξάνεται κατά 1. Όταν ξεπεράσει το 10, η επανάληψη σταματά. Το σώμα, εδώ το Εμφάνισε i, εκτελείται 10 φορές.

Με με_βήμα αλλάζεις το πόσο προχωράει ο μετρητής κάθε φορά:

  • Για i από 2 μέχρι 20 με_βήμα 2 περνάει από τους ζυγούς 2, 4, …, 20 (10 φορές).
  • Για i από 10 μέχρι 1 με_βήμα -1 μετράει αντίστροφα.
ΨευδοκώδικαςScratchPython
Για 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.

Επανάληψη με συνθήκη: Όσο

Κουμπαράς
  1. κουμπαράς ← 0
  2. εβδομάδες ← 0
  3. Όσο κουμπαράς < 100 επανάλαβε
  4. κουμπαράς ← κουμπαράς + 15
  5. εβδομάδες ← εβδομάδες + 1
  6. Τέλος_επανάληψης
  7. Εμφάνισε εβδομάδες

Η συνθήκη ελέγχεται πριν από κάθε επανάληψη. Όσο είναι Αληθής, εκτελείται το σώμα και μετά ξαναγυρίζουμε στον έλεγχο. Μόλις γίνει Ψευδής, η εκτέλεση συνεχίζει μετά το Τέλος_επανάληψης. Αν η συνθήκη είναι Ψευδής από την αρχή, το σώμα δεν εκτελείται ούτε μία φορά.

Στην Python το ίδιο γράφεται με while:

koumparas = 0
evdomades = 0
while koumparas < 100:
    koumparas = koumparas + 15
    evdomades = evdomades + 1
print(evdomades)

Αρχή_επανάληψης … Μέχρις_ότου

Υπάρχει και μια τρίτη μορφή, όπου η συνθήκη ελέγχεται στο τέλος:

  1. Αρχή_επανάληψης
  2. Διάβασε κωδικός
  3. Μέχρις_ότου κωδικός = 1234

Εδώ το σώμα εκτελείται τουλάχιστον μία φορά, που ταιριάζει όταν πρέπει πρώτα να κάνεις κάτι και μετά να ελέγξεις, όπως όταν ζητάς έναν κωδικό. Και η επανάληψη σταματά όταν η συνθήκη γίνει Αληθής, όπως στο «επανάλαβε ώσπου» του Scratch.

Μετρητές και αθροιστές

Δύο «συνταγές» εμφανίζονται σε σχεδόν κάθε πρόγραμμα με επανάληψη:

  • Μετρητής: ξεκινά από το 0 και αυξάνεται κατά 1 κάθε φορά που συμβαίνει κάτι. πλήθος ← πλήθος + 1
  • Αθροιστής: ξεκινά από το 0 και κάθε φορά προσθέτει μια τιμή. άθροισμα ← άθροισμα + τιμή

Και οι δύο παίρνουν αρχική τιμή πριν από την επανάληψη. Αν το άθροισμα ← 0 μπει μέσα στην επανάληψη, το άθροισμα μηδενίζεται κάθε φορά.

Άθροισμα από 1 ως 5
  1. άθροισμα ← 0
  2. Για i από 1 μέχρι 5
  3. άθροισμα ← άθροισμα + i
  4. Τέλος_επανάληψης
  5. Εμφάνισε άθροισμα

Ο αθροιστής, βήμα βήμα

Πριν πατήσεις, πες ποια θα είναι η νέα τιμή του αθροίσματος.

Βήμαiάθροισμα πρινάθροισμα μετά
Ζωντανή ενημέρωση

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

Παράδειγμα 1

Γράψε αλγόριθμο που υπολογίζει και εμφανίζει το άθροισμα 1 + 2 + … + 100.

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

Παράδειγμα 2

Στο πρόγραμμα «Κουμπαράς» (κάθε εβδομάδα 15 €, ως τα 100 €), πόσες εβδομάδες εμφανίζει, και πόσα χρήματα έχει ο κουμπαράς στο τέλος;

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

Παράδειγμα 3

Ένας μαθητής έγραψε: i ← 1 · Όσο i <= 5 επανάλαβε · Εμφάνισε i · Τέλος_επανάληψης. Τι θα συμβεί, και πώς διορθώνεται;

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

Παράδειγμα 4

Γράψε αλγόριθμο που διαβάζει βαθμούς μέχρι ο χρήστης να δώσει −1, και εμφανίζει τον μέσο όρο τους. Τι εμφανίζει για 15, 18, 12, −1;

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

Ασκήσεις

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

Πολλαπλή επιλογήΆσκηση 1 από 14
Πόσες φορές εκτελείται το σώμα της επανάληψης «Για i από 3 μέχρι 12»;

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

  • Να γράφεις επανάληψη με μετρητή (Για i από 1 μέχρι ν) και να βρίσκεις πόσες φορές εκτελείται.
  • Να γράφεις επανάληψη με συνθήκη (Όσο … επανάλαβε) και να εξηγείς πότε και πώς σταματάει.
  • Να χρησιμοποιείς μετρητή και αθροιστή μέσα σε επανάληψη, με σωστή αρχική τιμή.
  • Να εντοπίζεις ατέρμονο βρόχο και να αντιστοιχίζεις τις επαναλήψεις σε Scratch και Python.

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