While и repeat-until
Если заранее неизвестно, сколько раз необходимо выполнить тело цикла, то удобнее всего пользоваться циклом с предусловием (while) или циклом с постусловием (repeat-until).
Общий вид этих операторов таков:
while <условие_1> do <оператор>; repeat <операторы> until <условие_2>;
Условие окончания цикла может быть выражено переменной, константой или выражением, имеющим логический тип.
Замечание: Обратите внимание, что на каждой итерации циклы for и while выполняют только по одному оператору (либо группу операторов, заключенную в операторные скобки begin-end и потому воспринимаемую как единый составной оператор). В отличие от них, цикл repeat-until позволяет выполнить сразу несколько операторов: ключевые слова repeat и until сами служат операторными скобками.
Так же, как циклы for-to и for-downto, циклы while и repeat-until можно назвать в некотором смысле противоположными друг другу.
Последовательности действий при выполнении этих циклов таковы:
1. Проверяется истино ли <условие_1>. | 1. Выполняются <операторы>. |
2. Если это так, то выполняется <оператор>. | 2. Проверяется, ложно ли <условие_2> |
3. Пункты 1 и 2 выполняются до тех пор, пока <условие_1> не станет ложным. | 3. Пункты 1 и 2 выполняются до тех пор, пока <условие_2> не станет истинным. |
Таким образом, если <условие_1> изначально ложно, то цикл while не выполнится ни разу. Если же <условие_2> изначально истинно, то цикл repeat-until выполнится один раз.