logo
lab_rab5_6

1.1.8 Операторы цикла

Оператор цикла со счетчиком (с параметром) for подходит для таких вычислений, когда известны начальное и конечное значения счетчика.

При увеличении значения используется следующая форма:

for i:=i1 to i2 do Оператор;

где i1 – начальное значение, i2 – конечное значение, причем, для выполнения цикла хотя бы один раз, обязательно должно быть i1<=i2. Оператор может быть как простым, так и составным. После выполнения Оператора (тела цикла) увеличение значения счетчика происходит автоматически. Т.е. специальный оператор (например, i:=i+1) не нужен.

При уменьшении значения используется следующая форма:

for i:=i2 downto i1 do Оператор;

где i2 – начальное значение, i1 – конечное значение, причем, i2>=i1. Аналогично, не требуется специальный оператор для уменьшения значения счетчика.

Ограничения: шаг изменения счетчика может быть только +1 или –1, переменная, используемая в роли счетчика, должна быть только порядкового типа и должна быть локальной для того блока, в котором используется оператор for.

Порядок работы:

Переменной-счетчику присваивается первое значение, затем вычисляется тело цикла, значение счетчика увеличивается (или уменьшается) на 1. Это выполняется до тех пор, пока значение счетчика не превысит конечного значения. После выхода из цикла значения переменной счетчика имеет значение, на 1 больше/меньше конечного.

Оператор цикла с предусловием while позволяет многократно выполнять некоторые действия в зависимости от условия. На языке Паскаль этот цикл реализуется следующим образом:

while Условие do Оператор;

Оператор (или тело цикла), как и в предыдущем случае, может быть как простым, так и составным. Он выполняется до тех пор, пока Условие истинно. Дословно: пока (while) Условие верно, выполнять (do) тело цикла.

Порядок работы:

Сначала вычисляется Условие – выражение или переменная булевского типа. Если оно равно FALSE, то цикл не выполняется и управление передается следующему оператору. Если выражение TRUE, то цикл выполняется один раз и снова вычисляется Условие. Когда значение Условия примет значение FALSE, работа цикла завершается.

Оператор цикла с постусловием repeat позволяет многократно выполнять некоторые действия в зависимости от условия. На языке Паскаль этот цикл реализуется следующим образом:

repeat

Оператор 1;

Оператор 2;

until Условие;

Дословно: повторять (repeat) выполнение операторов, до тех пор, пока (until) Условие не станет верным.

Порядок работы:

Сначала выполняются все операторы, при этом не требуется использование составного оператора. Затем вычисляется Условие – выражение или переменная булевского типа. Цикл продолжается до тех пор, пока Условие принимает значение FALSE, и заканчивается, если Условие становится равным TRUE.

Таблица 1.7 Отличия и особенности работы различных операторов цикла

цикл со счетчиком for

цикл с предусловием while

цикл с постусловием repeat

Начальная установка переменной счетчика

Не требуется

Необходимы начальные установки переменных, управляющих условием

Изменение переменной

Не допускается в теле цикла, происходит автоматически

Необходимо присутствие операторов, изменяющих переменные условия, чтобы цикл мог завершиться

Условия работы

Количество выполнений цикла неизменно, выполняется для значений переменной от начальной до конечной. Может не выполняться ни разу.

Работает, пока Условие истинно, завершается, когда Условие становится ложным.

Может не выполняться ни разу.

Работает, пока Условие ложно, завершается, когда условие становится истинным.

Обязательно выполняется минимум 1 раз.

Использование более одного оператора

Необходимо использовать составной оператор.

Использование составного оператора не требуется.

Пример – вычисление суммы элементов массива

S:=0;

for i:=1 to n do

S:=S+a[i];

S:=0;

i:=1;

while i<=n do

begin

S:=S+a[i];

i:=i+1;

end;

S:=0;

i:=1;

repeat

S:=S+a[i];

i:=i+1;

until i>n;

Ход работы цикла может быть нарушен оператором безусловного перехода goto (см. п.1.1.9) или операторами Break и Continue.

Оператор Break прерывает действие текущего цикла и передает управление тому оператору, который выполняется после окончания цикла.

Оператор Continue прерывает выполнения тела цикла, но из цикла не выходит. Т.е. после оператора Continue не выполняется следующий оператор в цикле, а проверяется условие окончания цикла и, если условие выполняется, то тело цикла будет продолжать выполняться. Примеры использования этих операторов можно найти в разделе 1.1.10.