Шаг 73.
Сравнение работы операторов while, repeat и for

    На этом шаге мы дадим краткую сравнительную характеристику циклических операторов.

    Отметим отличия и особенности хорошего стиля работы с рассмотренными циклическими операторами.

Таблица 1. Сравнение операторов цикла
Цикл с предусловием while (пока условие истинно) Цикл с постусловием repeat (до истинности условия)
1. До начала цикла должны быть сделаны начальные установки переменнных, управляющих условием цикла, для корректного входа в цикл.
2. В теле цикла должны присутствовать операторы, изменяющие переменые условия так, чтобы цикл через некоторое число итераций завершился.
3. Цикл работает пока условие истинно (пока True). 3. Цикл работает пока условие ложно (пока False).
4. Цикл завершается, когда условие становится ложным (до False). 4. Цикл завершается, когда условие становится истинным (до True).
5. Цикл может не выполниться ни разу, если исходное значение условия при входе в цикл равно False. 5. Цикл обязательно выполняется как минимум один раз.
6. Если в теле цикла требуется выполнить более одного оператора, то необходимо использовать составной оператор. 6. Независимо от количества операторов в теле цикла использование составного оператора не требуется.
Цикл со счетчиком for
1. Начальная установка переменной счетчика циклов до заголовка не требуется.
2. Изменение в теле цикла значений переменных, стоящих в заголовке цикла, не допускается.
3. Количество итераций цикла неизменно и точно определяется значениями нижней и верхней границ и шага цикла.
4. Нормальный ход работы цикла может быть нарушен оператором goto или процедурами Break и Continue.
5. Цикл может не выполниться ни разу, если шаг цикла будет изменять значение счетчика от нижней границы в направлении, противоположном верхней границе.

    Для наглядности сравнения записи циклов while, repeat и for соберем воедино рассмотренные для них примеры.

Таблица 2. Примеры использования циклов
Цикл while Цикл repeat Цикл for
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;
S:=0;
for i:=1 to n do
  S:=S+A[i];

    На следующем шаге мы рассмотрим оператор with.




Предыдущий шаг Содержание Следующий шаг