"Анри Бертьен. Стандартный набор операторов языка REXX (для OS/2) " - читать интересную книгу автора


Кстати: на значения, принимаемые управляющей переменной, могут влиять
значения параметров оператора NUMERIC, так как при вычислении пошагового
изменения управляющей переменной используются обычные правила арифметики
языка REXX.

Условные выражения (WHILE и UNTIL)

За любой формой счетчика итераций ('отсутствует', FOREVER, 'простая',
'управляемая') может находиться описание дополнительного условия, которое
должно вызывать прекращение цикла. Выражение, находящееся за ключевым словом
WHILE или UNTIL, будет вычисляться во время каждого выполнения цикла с
использованием текущих значений всех участвующих в этом выражении
переменных. Результатом вычисления этого выражения должно быть логическое
значение (0 или 1). Группа операторов будет повторно выполняться либо до тех
пор, пока результат будет оставаться равным единице (WНILЕ), либо пока
результат не станет равным единице (UNТIL).
При этом в случае с WHILE-циклом условие вычисляется до выполнения
группы операторов, находящихся внутри DO-группы, а в случае с UNTIL-циклом -
после её выполнения, до очередного изменения значения управляющей
переменной.

Например:

/* /* Выведет на экран: */
Do i=1 то 10 by 2 until i>6; /* 1 */
Say i; /* 3 */
End; /* 5 */
/* 7 */

Кроме того, выполнением повторяющихся циклов можно управлять, используя
операторы LEAVE или ITERATE.

Классический алгоритм выполнения цикла DO:

1. Присвоение начального значения управляющей переменной, установка в
'0' значения счётчика итераций.
2. Вычисление значения <выраж. 'TO'>, используемого для проверки
значения управляющей переменной на окончание выполнения цикла.
3. Вычисление значения <выраж. 'BY'>, используемого для приращения
значения управляющей переменной цикла.
4. Вычисление значения <выраж. 'FOR'>, используемого для проверки
предельно допустимого числа итераций цикла.
5. Прекращение выполнения цикла в случае, если значение переменной
цикла превышает значение <выраж. 'TO'>.
6. Прекращение выполнения цикла в случае превышения счётчиком итераций
значения <выраж. 'FOR'> (максимально допустимого числа итераций).
7. Вычисление значения <выраж. 'WHILE'> и прекращение выполнения цикла
в случае, если не удовлетворено условие WHILE (то есть значение <выраж.
'WHILE'> равно 0).