You are on page 1of 12

2.2.7.

4 ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ

Η εντολή επανάληψης Όσο … επανάλαβε επιτρέπει την επανάληψη μιας ομάδας


εντολών όσο μία συνθήκη είναι αληθής. Η γενική μορφή της εντολής είναι:

Όσο Συνθήκη επανάλαβε


Εντολές
Τέλος_επανάληψης

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


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

ΑΣΚΗΣΕΙΣ
2.2.7.4 ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ

Άσκηση 1: Πόσες φορές θα εκτελεστεί ο παρακάτω αλγόριθμος ;

Αλγόριθμος ασκηση1
χ ← 90
Όσο χ ≤ 100 επανάλαβε
Εμφάνισε χ
χ ← χ + 1
Τέλος_επανάληψης
Τέλος ασκηση1

Άσκηση 2: Πόσες φορές θα εκτελεστούν οι εμπεριεχόμενες εντολές της ακόλουθης


εντολής επανάληψης αν διαβαστεί: α) ο αριθμός 20 και β) ο αριθμός 17.

Αλγόριθμος ασκηση2
Διάβασε χ
Όσο χ < 20 επανάλαβε
Εμφάνισε χ
χ ← χ + 1
Τέλος_επανάληψης
Τέλος ασκηση2

Άσκηση 3: Θέλουμε να κάνουμε πρόσθεση 2 αριθμών που θα μας δώσουν 5 άτομα.

Αλγόριθμος ασκηση3
ατομα ← 0
Όσο ατομα < 5 επανάλαβε
Εμφάνισε "Εισάγετε 2 αριθμούς"
Διάβασε α, β
γ ← α + β
Εμφάνισε γ
ατομα ← ατομα + 1
Τέλος_επανάληψης
Τέλος ασκηση3

Άσκηση 4: Τι τιμές παίρνουν οι μεταβλητές σε κάθε βήμα του παρακάτω αλγορίθμου,


όταν εκτελεστεί διαδοχικά δύο φορές, με εισόδους i) 5 ii) -2

Αλγόριθμος ασκηση4
Διάβασε x
y ← x + 1
Όσο x > 0 και y < 9 επανάλαβε
y ← y + x
x ← x - 1
Τέλος_επανάληψης
y ← y + 1
Εμφάνισε y
Τέλος ασκηση4
2.2.7.4 ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ

ΕΝΤΟΛΗ ΕΠΑΝΑΛΗΨΗΣ: Η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ

Η εντολή αυτή όπως και η ΟΣΟ έχει μία συνθήκη μόνο που ο έλεγχος της γίνεται αφού
πρώτα εκτελέσει τις εντολές που έχει (άρα οι επαναλήψεις θα είναι από μία και πάνω). Για
να σταματήσει την επανάληψη θα πρέπει η συνθήκη να γίνει Ψευδής.

Παράδειγμα : Να γραφτεί τμήμα προγράμματος που διαβάζει βαθμούς και τους εμφανίζει
μέχρι να του δοθεί ο αριθμός -1. Θεωρήστε ότι θα διαβάσει τουλάχιστον ένα βαθμό.

ΔΙΑΒΑΣΕ βαθμός

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

ΓΡΑΨΕ βαθμός

ΔΙΑΒΑΣΕ βαθμός

ΜΕΧΡΙΣ_ΟΤΟΥ βαθμός = -1

Παράδειγμα : Να γραφεί αλγόριθμος που να διαβάζει έναν αριθμό, θα τον διαιρεί με το δύο
και θα εμφανίζει το αποτέλεσμα. Αυτό θα επαναλαμβάνεται συνεχώς μέχρι να δοθεί ο
αριθμός 0 που δεν θα συμμετέχει στις πράξεις.

Αλγόριθμος Αριθμός

Αρχή επανάληψης

Διάβασε Χ

Αν Χ<>0 τότε

Υ←Χ/2

Εμφάνισε Υ

Τέλος_αν

Μέχρις_ότου Χ=0

Τέλος Αριθμός
2.2.7.4 ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ

1. Να γραφεί αλγόριθμος που θα εμφανίζει τους ζυγούς αριθμούς από το 2 μέχρι


και το 200.

2. Ένας συλλέκτης γραμματοσήμων έχει στη συλλογή του 4800 γραμματόσημα .


Αν κάθε χρόνο αυξάνει τη συλλογή του κατά 5 % να πραγματοποιηθεί
πρόγραμμα το οποίο θα υπολογίζει σε πόσα χρόνια η συλλογή θα ξεπεράσει
τα 10.000 γραμματόσημα.
2.2.7.4 ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ

Εντολή Επανάληψης ΓΙΑ

Η εντολή αυτή χρησιμοποιείται μόνο όταν γνωρίζουμε (ή μπορούμε να


υπολογίσουμε) από την εκφώνηση του προβλήματος τον αριθμό των επαναλήψεων
που χρειάζεται να πραγματοποιηθούν.

Επομένως η χρήση της είναι περιορισμένη και δεν μπορεί να χρησιμοποιηθεί για να
την αντιμετώπιση όλων των προβλημάτων που χρειάζονται την επαναληπτική δομή.

Άσκηση 1: Να πραγματοποιηθεί αλγόριθμος ο οποίος θα υπολογίζει το άθροισμα:

Σ = 10 + 20 + 30+…+ 200

Άσκηση 2: Να πραγματοποιηθεί αλγόριθμος ο οποίος θα διαβάζει 50 αριθμούς και


θα υπολογίζει και θα εμφανίζει το άθροισμά τους.
2.2.7.4 ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ

ΘΕΜΑ Α

Να γραφεί αλγόριθμος ο οποίος: α)Να διαβάζει τους βαθμούς 12 μαθημάτων ενός


μαθητή, β) να υπολογίζει και να εμφανίζει τον μέσο όρο και γ)να εμφανίζει το
μήνυμα «ΑΡΙΣΤΟΣ», αν ο μέσος όρος είναι μεγαλύτερος του 18.

ΘΕΜΑ Β

Στο μαραθώνιο της Αθήνας τρέχουν 15000 δρομείς από διάφορες χώρες του κόσμου.
Να γραφεί αλγόριθμος ο οποίος: Για κάθε αθλητή θα διαβάζει τη χώρα προέλευσης,
εμφανίζει πόσοι Έλληνες δρομείς αγωνίστηκαν.

ΘΕΜΑ Γ

Σε κάποιο σημείο της Εθνικής οδού είναι εγκατεστημένο ένα ειδικό σύστημα το
οποίο μετράει την ταχύτητα των οχημάτων με μεγάλη ακρίβεια. Το όριο ταχύτητας
στο συγκεκριμένο σημείο είναι 100 Km/h. Να γράψετε αλγόριθμο ο οποίος για 5
οχήματα: α)Να διαβάζει τον αριθμό πινακίδας και την ταχύτητα κάθε οχήματος.
β)Να εμφανίζει το πλήθος των οχημάτων που ξεπέρασαν το όριο ταχύτητας. γ)Να
εμφανίζει την υψηλότερη ταχύτητα που πέρασε κάποιος.

ΘΕΜΑ Δ

Σε ένα διαγωνισμό δήλωσαν συμμετοχή 1000 άτομα. Οι διαγωνιζόμενοι πέρασαν από


μία επιτροπή, βαθμολογήθηκαν με ακέραιους αριθμούς από το 1 μέχρι το 100. Να
γραφτεί αλγόριθμος, ο οποίος: α)Να διαβάζει το όνομα και την βαθμολογία κάθε
διαγωνιζόμενου. Β) Να εμφανίζει το όνομα για κάθε διαγωνιζόμενο και δίπλα το
μήνυμα «ΕΠΙΛΕΧΘΗΚΕ», στην περίπτωση που η βαθμολογία του, είναι
μεγαλύτερη του 90. Τέλος γ) να εμφανίζει το πλήθος των διαγωνιζόμενων που δεν
επιλέχθηκαν.
2.2.7.4 ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ
2.2.7.4 ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ

ΠΡΟΓΡΑΜΜΑ ΑΣΚ_9
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Σ,Ι
ΑΡΧΗ
Σ<--0
ΓΙΑ Ι ΑΠΟ 10 ΜΕΧΡΙ 200 ΜΕ_ΒΗΜΑ 10
Σ<--Σ+Ι
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'ΤΟ ΑΘΡΟΙΣΜΑ ΕΙΝΑΙ:',Σ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
2.2.7.4 ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ

Αλγόριθμος Α60

διάβασε x

y ←x+1

όσο x>0 και y < 9 επανάλαβε

y ← y+x

x ← x-1

Τέλος_επανάληψης

y ← y+1

Εμφάνισε y

Τέλος Α6
2.2.7.4 ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ
2.2.7.4 ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ

Η ΟΣΟ, είναι η ισχυρότερη δομή επανάληψης. Θα μπορούσε να υπάρχει μόνο αυτή


στον προγραμματισμό και να αντικαταστήσει σε κάθε περίπτωση τις άλλες δύο
δομές, τη ΓΙΑ και τη ΜΕΧΡΙΣ_ΟΤΟΥ. Μόνο για λόγους ευκολίας χρησιμοποιούνται
οι άλλες δύο, επειδή η ΟΣΟ, είναι λίγο δύσκολη στη χρήση της.

Η σύνταξη της ΟΣΟ είναι η παρακάτω:

ΟΣΟ Συνθήκη ΕΠΑΝΑΛΑΒΕ


Εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Πριν ξεκινήσει να εκτελεί τις εντολές της η ΟΣΟ, ελέγχει αν ικανοποιείται η συνθήκη
της. Αν ικανοποιείται, τότε τις εκτελεί και ελέγχει ξανά τη συνθήκη της.
Αν η συνθήκη της είναι από την αρχή Ψευδής, τότε η ΟΣΟ δεν θα εκτελεστεί
καθόλου!
Αν η συνθήκη της είναι συνεχώς Αληθής, τότε η ΟΣΟ δεν θα σταματήσει ποτέ!
(Ατέρμονας βρόχος). Επομένως, για να σταματήσει κάποτε η ΟΣΟ να εκτελείται, θα
πρέπει μέσα στο σώμα της να υπάρχουν εντολές που επηρεάζουν τη συνθήκη της. Αν
δεν υπάρχουν τέτοιες εντολές, τότε θα εκτελείται επ’ άπειρον.

Παραδείγματα:

1. Η επανάληψη αυτή θα εκτελεστεί 4 φορές:


Α<--10
ΟΣΟ Α>0 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ ‘ΚΑΛΗΜΕΡΑ’
Α<--Α-3
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

2. Η επανάληψη αυτή δεν θα εκτελεστεί καθόλου:


Α<-- - 1
ΟΣΟ Α>0 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ ‘ΚΑΛΗΜΕΡΑ’
Α<--Α-3
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

3. Η επανάληψη αυτή θα εκτελείται επ’ άπειρον:


Α<--10
ΟΣΟ Α>0 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ ‘ΚΑΛΗΜΕΡΑ’
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Πότε πρέπει να χρησιμοποιούμε την ΟΣΟ:

• Γενικά, όταν η επανάληψη μπορεί και να μην εκτελεστεί και καμία φορά.
• Όταν η επανάληψη τερματίζεται με μη έγκυρη τιμή (τιμή φρουρός). Για
παράδειγμα, η επανάληψη τερματίζεται όταν δοθεί σαν ηλικία μαθητή το -1.
• Όταν μία μεταβλητή δεν πρέπει να ξεπεράσει ένα όριο. Για παράδειγμα, σε ένα
2.2.7.4 ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ

φορτηγό δεν μπορούμε να φορτώσουμε περισσότερο βάρος από αυτό που μπορεί να
μεταφέρει.

1. Η ΣΥΝΘΗΚΗ ΤΗΣ ΟΣΟ.

Επειδή πριν αρχίσει να εκτελείται η ΟΣΟ ελέγχει τη συνθήκη της, θα πρέπει οι


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

ΓΡΑΨΕ ‘ΔΩΣΕ ΘΕΤΙΚΟ’


ΔΙΑΒΑΣΕ Α
ΟΣΟ Α>0 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ Τ_Ρ(Α)
ΓΡΑΨΕ ‘ΔΩΣΕ ΘΕΤΙΚΟ’
ΔΙΑΒΑΣΕ Α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Αν πρέπει να διαβάσουμε πολλές τιμές εκτός από τις τιμές που ελέγχουν την
επανάληψη, τότε:
• Διαβάζουμε τις τιμές που ελέγχουν την ΟΣΟ, πριν ξεκινήσει η επανάληψη.
• Μόλις μπαίνουμε στην ΟΣΟ διαβάζουμε τα υπόλοιπα δεδομένα.
• Πριν κλείσει η ΟΣΟ, ξαναδιαβάζουμε τις τιμές που την ελέγχουν

You might also like