Κανόνες μετατροπής της δομής ΓΙΑ ... ΑΠΟ ... ΜΕΧΡΙ
ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ
Στη δομή επανάληψης ΓΙΑ γίνονται ενέργειες που δεν αποτυπώνονται με τη μορφή ξεχωριστών εντολών όπως γίνεται στην ΟΣΟ και την ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ. Είναι απαραίτητο να τις συμπεριλάβουμε κατά την μετατροπή της ΓΙΑ στις άλλες δύο δομές. Οι εντολές αυτές είναι:
- Εντολή για την αρχικοποίηση της μεταβλητής
- Σύνθεση της συνθήκης τερματισμού
- Εντολή αλλαγής τους βήματος
ΓΙΑ μ ΑΠΟ αρχ_τιμή ΜΕΧΡΙ τελ_τιμή με_βήμα β
Εντολες
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
|
ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ σε ΟΣΟ...ΕΠΑΝΑΛΑΒΕ όταν : |
β > 0
μ <- αρχ_τιμή
ΌΣΟ μ <= τελ_τιμή επανάλαβε
Εντολές
μ <- μ + β
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
|
β < 0
μ <- αρχ_τιμή
ΌΣΟ μ >= τελ_τιμή επανάλαβε
Εντολές
μ <- μ + β
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
|
ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ σε ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Μετατρέπουμε την ΓΙΑ σε ΌΣΟ και μετά την ΟΣΟ σε ΜΕΧΡΙΣ_ΟΤΟΥ. Υπάρχουν επιπλέον έλεγχοι λόγω του ότι η ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται τουλάχιστον μια φορά
|
β > 0, αρχ_τιμή <= τελ_τιμή
μ <- αρχ_τιμή
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Εντολές
μ <- μ + β
ΜΕΧΡΙΣ_ΟΤΟΥ μ > τελ_τιμή
|
β > 0, αρχ_τιμή >= τελ_τιμή
μ <- αρχ_τιμή
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Εντολές
μ <- μ + β
ΜΕΧΡΙΣ_ΟΤΟΥ μ < τελ_τιμή
|
ΜΕΤΑΤΡΟΠΗ ΣΕ ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ
Οι μετατροπές αυτές είναι δυνατές μόνο όταν μπορεί να καθοριστεί με ακρίβεια ο αριθμός των επαναλήψεων. Αν ο συγκριτικός τελεστής στην Όσο περιλαμβάνει την ισότητα έχουμε:
β > 0, αρχ_τιμή < τελ_τιμή
μ <- αρχ_τιμή
ΌΣΟ μ <= τελ_τιμή επανάλαβε
Εντολές
μ <- μ + β
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
|
β < 0, αρχ_τιμή > τελ_τιμή
μ <- αρχ_τιμή
ΌΣΟ μ >= τελ_τιμή επανάλαβε
Εντολές
μ ß μ + β
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
|
ΓΙΑ μ ΑΠΟ αρχ_τιμή ΜΕΧΡΙ τελ_τιμή με_βήμα β
Εντολες
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
|
Αν ο συγκριτικός τελεστής στην Όσο δεν περιλαμβάνει την ισότητα, η προηγούμενη μετατροπή μπορεί να είναι λάθος. Πρέπει να είμαστε προσεκτικοί στον καθορισμό του αριθμού των επαναλήψεων, που θα μας δώσει την τελική τιμή που θα χρησιμοποιηθεί στην Για. Σε κάθε περίπτωση είναι χρήσιμο να γίνεται επαλήθευση ελέγχοντας
- το πλήθος των επαναλήψεων,
- τη συμπεριφορά του αλγόριθμου την πρώτη και την τελευταία φορά της επανάληψης
- το περιεχόμενων των εμπλεκόμενων μεταβλητών μετα τη λήξη της επανάληψης.
για παράδειγμα :
Χ <- 0
ΌΣΟ Χ < 10 ΕΠΑΝΑΛΑΒΕ
Χ <- Χ+3
ΓΡΑΨΕ Χ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
|
ΓΙΑ Χ ΑΠΟ 3 ΜΕΧΡΙ 12 ΜΕ_ΒΗΜΑ 3
ΓΡΑΨΕ Χ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
|