На этом шаге мы рассмотрим еще один цикл с предусловием.
Оператор цикла с постусловием состоит из ключевого слова repeat, за которым следуют операторы тела цикла, и замыкающего ключевого слова until, после которого указывается условие окончания цикла.
Упрощенно общую структуру оператора repeat можно представить так:
repeat <Оператор1>; <Оператор2>; . . . <ОператорN>; until <Условие>;
Заметим, что в отличие от while, оператор repeat не требует пользования составного оператора, когда в его теле необходимо записать более одного оператора.
Кроме того, оператор repeat является не столь универсальным как оператор while, поскольку его Условие располагается в конце тела цикла и операторы его тела будут, в отличие от цикла while, всегда выполняться, как минимум, один раз. Это означает, что оператор repeat не годится для записи циклов, в которых может возникать ситуация, когда тело цикла не должно выполняться ни разу. Выражение, используемое в качестве Условия окончания цикла, должно давать результат булевского типа. Общий принцип работы цикла repeat такой же, как у цикла предусловием, но в отличие от while, Условие проверяется не перед выполнением тела цикла, а после него, и управление циклом repeat прямо противоположно управлению циклом while. To есть цикл продолжается, пока Условие равно False и заканчивается, когда Условие становится равным True. Пример:
const n = 20; begin . . . . Summa := 0 ; i := 1; { Должны быть начальные установки } { переменных, стоящих в условии цикла. } repeat Summa := Summa + A[i]; i := i + 1; { Как минимум в одном операторе тела } { цикла должно быть изменение пере- } { менных условия цикла, приводящее } { в итоге к истинности условия. } until i > n; . . . . end.
На следующем шаге мы рассмотрим цикл for.