Язык процедур 2-REXX для OS-2


DO - часть 2


Простые повторяющиеся циклы:

Если повторитель опущен, но указано условие, или если повторителем является FOREVER, то группа инструкций, вообще говоря, будет выполняться постоянно, т.е. до тех пор, пока не удовлетворится требуемое условие, или не выполнится инструкция REXX, которая осуществит выход из цикла (например, LEAVE).

В простой форме повторяющегося цикла выражение exprr вычисляется немедленно (результат должен быть целым неотрицательным числом), и цикл выполняется указанное число раз.

Пример: /* Выводит "Привет" пять раз */ Do 5 say 'Привет' end

Помните, чем отличается команда от оператора присваивания? Также и в инструкции DO: если первый знак exprr- символ, а второй - знак "=", то будет использоваться, скорее всего, управляемая форма повторителя.

Управляемые повторяющиеся циклы:

При использовании управляемой формы цикла указывается управляющая переменная имя, которой присваивается начальное значение (результат вычисления выражения expri, выполненного таким образом, как если бы был добавлен 0). Затем при каждом выполнении группы инструкций управляющая переменная наращивается (т.е. к ее значению в конце цикла добавляется результат вычисления exprb). Выполнение группы инструкций продолжается до тех пор, пока не встретится конечное условие (определенное как результат вычисления выражения exprt). Если значение exprb - положительное число или нуль, то цикл будет завершен, когда значение имени превысит значение exprt. В противном случае (если значение exprb - отрицательное число), цикл завершится, когда значение имени станет меньше значения exprt.

Результаты вычисления выражений expri, exprt и exprb должны быть числами. Они вычисляются только один раз, перед началом цикла и перед присваиванием управляющей переменной ее начального значения. По умолчанию значение выражения exprb равно 1. Если опущено выражение exprt, то цикл выполняется бесконечно, пока его не завершит какое-либо другое условие.

Пример: Do I=3 to -2 by -1 /* Выведет: */ say i /* 3 */ end /* 2 */ /* 1 */ /* 0 */ /* -1 */ /* -2 */




- Начало -  - Назад -  - Вперед -