Όσο Επανάλαβε Μέχρις ότου

 

Όσο <συνθήκη>  Επανάλαβε

            Εντολές

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

Συνήθως γίνεται

Αν  <συνθήκη> τότε

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

                        Εντολές

            Μέχρις_ότου ΟΧΙ  <συνθήκη>

Τέλος_αν

Αν ωστόσο είμαστε σίγουροι ότι η Όσο..επανέλαβε εκτελείται τουλάχιστον μία φορά η εντολή αν..τότε μπορεί να παραληφθεί.

Παράδειγμα

Όσο Χ > 50 επανάλαβε

            Γράψε Χ ^ 2

            Διάβασε Χ

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

 

Αν Χ> 50 τότε

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

Γράψε Χ^2

Διάβασε Χ

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

Τέλος_αν

 

 

Μέχρις_ότου Όσο Επανάλαβε

 

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

            Εντολές

Μέχρις_ότου < συνθήκη >

Συνήθως γίνεται:

Εντολές

Όσο ΟΧΙ < συνθήκη > Επανάλαβε

            Εντολές

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

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

Παράδειγμα

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

            Γράψε ’Δώσε αριθμό’

            Διάβασε Χ

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

 

Γράψε ’Δώσε αριθμό’

Διάβασε Χ

Όσο Χ<=0 Επανάλαβε

Γράψε ’Δώσε αριθμό’

            Διάβασε Χ

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

 

 

Για..από..μέχρι Όσο..επανέλαβε

 

Για μεταβλητή Από τιμή1 Μέχρι τιμή2 Με_βήμα β

            Εντολές

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

Συνήθως γίνεται:

Μεταβλητή τιμη1

Όσο <συνθήκη> Επανάλαβε

            Εντολές

            Μεταβλητή Μεταβλητή + β

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

Όπου συνθήκη είναι:

·       Μεταβλητή <= τιμή2, αν τιμή1<=τιμή2 και β>0

·       Μεταβλητή >= τιμή2, αν τιμή1>=τιμή2 και β<0

Παράδειγμα

Για Κ από 15 μέχρι 2 με_βήμα -3

Διάβασε Χ

Γράψε Κ*Χ

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

 

Κ15

Όσο Κ >= 2 επανάλαβε

Διάβασε Χ

Γράψε Κ*Χ

ΚΚ-3

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

 

 

 

 

 

Όσο..επανέλαβε σε Για..από..μέχρι

 

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

Έτσι αν τιμή1 <=  τιμή2 και β >0  η ακόλουθη σειρά εντολών

Μεταβλητή τιμή1

Όσο μεταβλητή <= τιμή2 Επανάλαβε

            Εντολές

            Μεταβλητή Μεταβλητή + β

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

Μπορεί να αντικατασταθεί από

Για μεταβλητή από τιμή1 μέχρι τιμή2 με_βήμα β

            Εντολές

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

Επίσης  αν τιμή1 >= τιμή2 και β <0  η ακόλουθη σειρά εντολών

Μεταβλητή τιμή1

Όσο μεταβλητή <= τιμή2 Επανάλαβε

            Εντολές

            Μεταβλητή Μεταβλητή + β

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

Μπορεί να αντικατασταθεί από

Για μεταβλητή από τιμή1 μέχρι τιμή2 με_βήμα β

            Εντολές

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

Κ5

Όσο Κ<=55 επανάλαβε

Γράψε Κ

ΚΚ +2

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

 

Για Κ από 5 μέχρι 55 με_βήμα 2

Γράψε Κ

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

 

 

 

Πρέπει να προσέξουμε ιδιαίτερα όταν η μεταβολή του μετρητή δεν βρίσκεται πριν από το Τέλος_επανάληψης.

Για παράδειγμα

Κ5

Όσο Κ<=15 επανάλαβε

Κ Κ +2

Γράψε κ

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

 

Οι τιμές που θα εμφανιστούν είναι οι:

7,9,11,13,15,17

 

 

Για Κ από 5 μέχρι 15 με_βήμα 2

Γράψε Κ

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

 

Αν το μετατρέψω κανονικά οι τιμές που θα πάρω είναι οι:

5,7,9,11,13,15

 

Αν θέλω να πάρω τις σωστές πρέπει να αυξήσω κατά το βήμα 2 το 5 και το 15 άρα:

 

Για Κ από 5+2=7  μέχρι 15+2=17  με_βήμα 2

Γράψε Κ

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

 

 

7,9,11,13,15,17

 

 

 

Για..από..μέχρι σε Μέχρις_ότου

 

Η μετατροπή πραγματοποιείται σε δύο φάσεις:

·       Μετατρέπουμε την για..από..μέχρι σε όσο..επανέλαβε

·       Μετατρέπουμε την όσο..επανέλαβε σε μέχρις..ότου

Διάβασε Μ

Για Κ από 4 μέχρι Μ με_βήμα 3

Γράψε Κ

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

Διάβασε Μ

Κ4

Όσο Κ<=Μ επανάλαβε

Γράψε Κ

ΚΚ +3

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

 

Διάβασε Μ

Αν Μ>=4 τότε

Κ4

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

Γράψε Κ

ΚΚ+3

Μέχρις_ότου Κ>Μ

Τέλος_αν

 

 

Μέχρις_ότου σε Για..από..μέχρι

 

Για να είναι δυνατή η μετατροπή αυτή θα πρέπει να γνωρίζουμε τον ακριβή αριθμό των επαναλήψεων της Μέχρις_ότου πράγμα που σημαίνει ότι δεν μετατρέπεται κάθε Μέχρις_ότου σε Για..από..μέχρι. Αν είναι εφικτή η μετατροπή τότε κι αυτή πραγματοποιείται σε δύο φάσεις:

 

·       Μετατρέπουμε την Μέχρις_ότου σε Όσο..επανέλαβε

·       Μετατρέπουμε την Όσο..επανέλαβε σε Για..από..μέχρι

Κ1

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

ΑΑ + Κ

ΚΚ +7

Μέχρις_ότου Κ >120

Κ1

Όσο Κ<=120 επανάλαβε

ΑΑ+Κ

ΚΚ +7

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

 

Για Κ από 1 μέχρι 120 με_βήμα 7

ΑΑ+Κ

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

 

Εμφωλευμένες επαναλήψεις

 

Για Κ από 1 μέχρι 10

Για Λ από 1 μέχρι 5

Γράψε Κ,Λ

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

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

 

Κ1

Όσο Κ<=10 επανάλαβε

Λ1

Όσο Λ<=5 επανάλαβε

Γράψε Κ,Λ

ΛΛ+1

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

ΚΚ+1

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

Κ1

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

Λ1

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

Γράψε Κ,Λ

ΛΛ+1

Μέχρις_ότου Λ>5

ΚΚ+1

Μέχρις_ότου Κ>10