Оператор цикла с параметром
Синтаксис
FOR <инициализатор1>{,<инициализатор2>} WHILE <выражение> [BY <инкремент1>{,<инкремент2>}] LOOP <тело цикла> ENDLOOP
Описание
<инициализатор1> и <инициализатор2> – операторы присвоения начальных значений параметрам цикла.
<инкремент1> и <инкремент2> – операторы изменения значений <инициализатора1> и <инициализатора2> соответственно.
<выражение> должно быть логического типа.
До начала цикла выполняется присвоение значений <инициализатору1> и, если задан,
<инициализатору2>, после чего проверяется значение <выражение>. Если его
значение TRUE, выполняется <тело цикла>, начиная с LOOP. После чего выполняется
изменение параметров цикла (если задана конструкция BY …) заново вычисляется
<выражение> и принимается решение о продолжении (прекращении) цикла. Если
значение <выражения> FALSE, управление передается на следующий после ENDLOOP
оператор.
Чтобы количество циклов было конечным, в <теле цикла> или в конструкции BY …
обязательно должно выполняться изменение значений параметров или условий, влияющих на <выражение>.
Примеры
1) for i:=1 while i<=10 by i:=i+1 loop x[i]:=0; endloop Данная конструкция аналогична следующим: for i:=1 while i<=10 loop x[i]:=0; i:=i+1; endloop; i:=1; while i<=10 loop x[i]:=0; i:=i+1; endloop; 2) for i:=0, n:=1 while i<8 by i:=i+1, n:=n*2 loop endloop;