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