На этом шаге мы дадим краткую сравнительную характеристику циклических операторов.
Отметим отличия и особенности хорошего стиля работы с рассмотренными циклическими операторами.
| Цикл с предусловием 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 соберем воедино рассмотренные для них примеры.
| Цикл 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.