На этом шаге мы рассмотрим цикл с известным числом повторений.
Оператор цикла со счетчиком подходит для программирования только таких циклических фрагментов, в которых до выполнения цикла известны начальное и конечное значения счетчика повторений цикла. Это обусловливает его менее широкую сферу применения, чем более универсальных операторов while и repeat. Однако в тех случаях, когда его использование возможно, оператор for, благодаря своей высокой наглядности, имеет несомненное преимущество перед операторами цикла с условиями.
Упрощенно общую структуру оператора цикла со счетчиком можно представить одним из следующих способов.
for <Переменная>:=<НачальноеЗначениеСчетчика> to <КонечноеЗначениеСчетчика> do <Оператор>;
for <Переменная>: = <НачальноеЗначениеСчетчика> downto <КонечноеЗначениеСчетчика> do <Оператор>;
begin . . . . Summa := 0; for i := 1 to n do Summa := Summa + A[i]; . . . . end.
Заметим, что для оператора for, в отличие от while и repeat, установка начального значения счетчика циклов (i:=l) выполняется не перед заголовком цикла, а прямо в заголовке. Кроме того, после окончания тела цикла наращивание/уменьшение значения счетчика происходит автоматически. Таким образом, специальный оператор для увеличения значения счетчика (i:=i+l) не требуется. Более того, такой оператор привел к неправильной работе цикла.
begin . . . . Summa := 0; for i:= 1 to n do begin Summa :=Summa + A[i]; i : = i + 1; { Ошибка! } end; . . . . end.
В большинстве реализаций языка Pascal изменение значений переменных, используемых в заголовке цикла for, запрещено и приводит выдаче сообщения об ошибке на этапе компиляции. В реализации Вorland (Turbo) и Object Pascal этот запрет снят, однако такие действия рамках цикла for, как правило, приводят к его непредсказуемому поведению и считаются плохим стилем программирования.
В Object Pascal, также как и во всех других реализациях языка Pascal, оператор for имеет два существенных ограничения:
На следующем шаге мы проведем небольшое сравнение результатов работы операторов цикла.