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


Условные циклы


Условные циклы выполняются до тех пор, пока удовлетворяется условие истинности или ложности некоторого выражения. Рассмотрим несколько инструкций, которые используются для условных циклов:

DO WHILE и DO UNTIL - Инструкции DO WHILE и DO UNTIL выполняются, пока удовлетворяется некоторое условие или до тех пор, пока оно не удовлетворится. Инструкция DO WHILE имеет следующую структуру:

DO WHILE выражение инструкция1 инструкция2 инструкция3 END

Инструкция DO WHILE проверяет истинность или ложность некоторого выражения в начале цикла; т.е. перед выполнением последующих инструкций. Если выражение является истинным, то инструкции выполняются. Если выражение является ложным, то цикл завершается и управление передается инструкции, следующей за END.

На диаграмме, приведенной ниже, представлена наглядная структура инструкции DO WHILE:

Чтобы просмотреть примеры использования инструкции DO WHILE в процедурах, выберите =>.

DO UNTIL - Инструкция DO UNTIL отличается от DO WHILE тем, что она сначала выполняет инструкции, образующие тело цикла, а затем проверяет значение выражения. Если выражение ложно, то инструкции повторяются (в цикле). Если выражение истинно, то цикл завершается и управление передается инструкции, следующей за END.

Так как инструкция DO UNTIL проверяет значение выражения в конце цикла, инструкции внутри цикла DO выполняются по крайней мере один раз.

Инструкция DO UNTIL имеет следующую структуру:

DO UNTIL выражение инструкция1 инструкция2 инструкция3

END

На диаграмме, приведенной ниже, представлена наглядная структура инструкции DO UNTIL:

Чтобы просмотреть примеры использования инструкции DO UNTIL в процедурах, выберите =>.

LEAVE - Вам может понадобиться выйти из цикла до того, как он завершится естественным образом по удовлетворении некоторого условия. Вы можете сделать это с помощью инструкции LEAVE. Эта инструкция завершает цикл, и управление передается инструкции, следующей за END. Проиллюстрируем на примере процедуры LEAVE.CMD использование инструкции LEAVE.




/* Использование инструкции LEAVE в цикле */ SAY ' введите сумму наличных денег' PULL salary spent = 0 /* Присваивает spent значение 0 */ DO UNTIL spent > salary SAY 'Введите стоимость товара или END для завершения' PULL cost IF cost = 'END' THEN LEAVE spent = spent + cost END SAY 'Пустые карманы.' EXIT


DO FOREVER - Иногда Вы не можете определить, сколько раз нужно повторить цикл. Например, может потребоваться, чтобы пользователь вводил цифровые данные (числа, которые должны складываться), а процедура выполняла вычисления до тех пор, пока сложены), а процедура выполняла вычисления до тех пор, пока пользователь не прикажет остановиться. Для процедур подобного типа Вы можете использовать инструкцию DO FOREVER вместе с инструкцией LEAVE.

Проиллюстрируем на следующем примере использование инструкции DO FOREVER.

/* Использование цикла DO FOREVER для сложения чисел */ sum = 0 DO FOREVER SAY 'Введите число или END для завершения' PULL value IF value = 'END' THEN LEAVE /* процедура завершается при получении "end" */ sum = sum + value END SAY 'Сумма равна ' sum EXIT




Содержание раздела