REPEAT..UNTIL loop is very similar to a
The only difference is where you specify the loop check, and when and how the check is performed.
To illustrate this, here's the program from the previous two sections rewritten using a
REPEAT..UNTIL loop (try to spot the subtle differences):
PROC main() DEF x x:=1 REPEAT WriteF('\d ', x) x:=x+1 UNTIL x>100 WriteF('\n') ENDPROC
Just as in the
WHILE loop version we've got an initialisation of
x and an extra statement in the loop to increment
However, this time the loop check is specified at the end of the loop (in the
UNTIL part), and the check is only performed at the end of each loop.
This difference means that the code in a
REPEAT..UNTIL loop will be executed at least once, whereas the code in a
WHILE loop may never be executed.
Also, the logical sense of the check follows the English: a
REPEAT..UNTIL loop executes until the check is true, whereas the
WHILE loop executes while the check is true.
REPEAT..UNTIL loop executes while the check is false!
This may seem confusing at first, but just remember to read the code as if it were English and you'll get the correct interpretation.
Go to the Next or Previous section, the Detailed Contents, or the Amiga E Encyclopedia.