С помощью оператора while можно записать любое циклическое действие. Упрощенно общую структуру оператора цикла с предусловием можно изобразить одним из двух следующих способов.
Если тело цикла состоит из одного оператора
Если тело цикла включает более одного оператора
While <Условие> do
<Оператор>;
while <Условие> do
begin
<Оператор 1>;
<Оператор 2>;
. . .
<Оператор N>
End;
Здесь while, do – зарезервированные слова (пока [выполняется условие], делать).
Оператор while позволяет многократно выполнять одни и те же действия в зависимости от некоторого Условия, которое записывается между ключевыми словами while и do и должно быть выражением булевского типа, т.е. принимать значения True или False.
Опишем работу цикла while. Сначала, при входе в цикл вычисляется Условие. Если оно равно False, то вход в цикл не выполняется. В противном случае (значение True) происходит вход в цикл и однократное выполнение операторов его тела. Как только достигнут конец тела цикла, управление снова передается на его заголовок, где снова вычисляется Условие. Если значение Условия все еще равно True, то тело цикла выполняется еще один раз и так далее.
Значения переменных, входящих в условие, должны изменяться в теле цикла.
Как только очередное вычисление Условия цикла дает значение False, работа цикла завершается.
Рассмотрим программу, вычисляющую сумму (n задано).
Program primer;
Var
i, n, summa: integer;
begin
writeln(‘Введите n’);
readln(n);
Summa:=0;
Как минимум в одном операторе цикла должно быть изменение переменных условия цикла, приводящее к ложности условия
i:=1; {Должны быть заданы начальные значения переменных в условии цикла}
while i<=n do
begin
Summa:=Summa+i;
i:=i+1
end;
writeln(‘Сумма равна ’, Summa)
end.
Упрощенно общую структуру оператора repeat можно представить так:
<Оператор 1>;
<Оператор 2>;
<Оператор N>
until <Условие>;
Здесь repeat, until – зарезервированные слова (повторять, до тех пор [пока не будет выполнено условие]), <Условие> – выражение логического типа.
Оператор repeat не требует использования составного оператора, когда в его теле необходимо записать более одного оператора. Проверка условия осуществляется в конце оператора, поэтому операторы в теле цикла repeat выполняются как минимум один раз. Цикл продолжается пока Условие равно False и заканчивается, когда Условие становится равным True.
Пример вычисления той же суммы, как в п. 5.5.1.
Program primer2;
Var
i, n, summa: integer;
begin
writeln(‘Введите n’);
readln(n);
Summa:=0;
i:=1;
repeat
Summa:=Summa+i;
i:=i+1;
until i>n;
writeln(‘Сумма равна’, Summa)
end.
Оператор цикла for применяется для организации цикла с известным числом повторений.
Общий вид записи с увеличением и уменьшением значения параметра цикла соответственно:
For i:=m1 to m2 do <тело цикла>;
или
For i:=m1 downto m2 do <тело цикла>;
где i – параметр цикла (переменная типа Integer); m1 – начальное значение параметра цикла; m2 – конечное значение параметра цикла; тело цикла может состоять из простого или составного оператора. Значения m1 и m2 могут быть записаны константами ли выражениями целого типа. Чтобы цикл проработал хотя бы 1 раз должно выполняться соотношение . Шаг изменения параметра цикла равен 1 или -1 соответственно (увеличение или уменьшение значения переменной i на 1 происходит автоматически).
Например, для вывода значений 1, 2, …, 10 операторы цикла имеют вид: