5. Δομή Επανάληψης ΟΣΟ

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

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

ΟΣΟ Συνθήκη ΕΠΑΝΑΛΑΒΕ
Εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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

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

1. Η επανάληψη αυτή θα εκτελεστεί 4 φορές:
Α<--10
ΟΣΟ Α>0 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ ‘ΚΑΛΗΜΕΡΑ’
Α<--Α-3
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

2. Η επανάληψη αυτή δεν θα εκτελεστεί καθόλου:
Α<-- - 1
ΟΣΟ Α>0 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ ‘ΚΑΛΗΜΕΡΑ’
Α<--Α-3
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

3. Η επανάληψη αυτή θα εκτελείται επ’ άπειρον:
Α<--10
ΟΣΟ Α>0 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ ‘ΚΑΛΗΜΕΡΑ’
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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

• Γενικά, όταν η επανάληψη μπορεί και να μην εκτελεστεί και καμία φορά.
• Όταν η επανάληψη τερματίζεται με μη έγκυρη τιμή (τιμή φρουρός). Για παράδειγμα, η επανάληψη τερματίζεται όταν δοθεί σαν ηλικία μαθητή το -1.
• Όταν μία μεταβλητή δεν πρέπει να ξεπεράσει ένα όριο. Για παράδειγμα, σε ένα φορτηγό δεν μπορούμε να φορτώσουμε περισσότερο βάρος από αυτό που μπορεί να μεταφέρει.

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

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

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

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