Оператор цикла с последующим условием или с постусловием repeat имеет такую структуру:
repeat<оператор> until<условие>;
где <оператор> – произвольный оператор Object Pascal, в том числе и составной. Исполняемый в цикле оператор также как и в других циклах называют телом цикла.
<условие> – условие выхода из цикла – выражение логического типа, при значении которого равном False выполняется <оператор>.
Оператор repeatвыполняется следующим образом:
1. Выполняется находящийся между repeat и until <оператор> тела цикла.
2. Вычисляется значение выражения <условие>.
3. Если значение выражения <условие> равно True (условие выполняется), то на этом выполнение цикла repeat..until завершается.
4. Если значение выражения <условие> равно False (условие не выполняется), то выполняется переход на шаг 1.
Оператор тела цикла, находящийся между repeat и until, выполняется до тех пор, пока условие ложно.
Таким образом, в цикле repeat..until <оператор> тела цикла выполняется хотя бы один раз.
Как и в цикле while, для правильного выхода из цикла repeat..until необходимо, чтобы операторы в теле цикла влияли на значение выражения <условие> (изменяли значения переменных, входящих в выражение <условие>).
Оператор цикла repeat, также как и оператор while, как правило, используется в программе в том случае, если необходимо выполнить повторные вычисления (организовать цикл), но число повторений во время разработки программы неизвестно и может быть определено только во время работы программы, т.е. определяется ходом вычислений.
Алгоритм, соответствующий оператору цикла repeat..until, представлен на рис. 3.7.
Рис. 3.7.Алгоритм оператора цикла repeat
Рассмотрим такой же пример, как и для цикла while – программу, которая запрашивает число и выводит его квадрат, до тех пор, пока не будет введено число 0:
Var
n:integer;
{n – число, квадрат которого рассчитывает программа}