"Анри Бертьен. Стандартный набор операторов языка REXX (для OS/2) " - читать интересную книгу автора Say y; /* 0.05 */
End; В принципе, значение управляющей переменной можно произвольно изменять во время выполнения цикла и это, разумеется, может влиять на число повторений данного цикла. Конечно, изменение значения управляющей переменной нельзя назвать хорошим приёмом - этот фокус противоречит 'правилам хорошего тона' в программировании; тем не менее - в некоторых случаях это может оказаться удобным. Заметим, что условие окончания цикла проверяется в начале каждой итерации. Следовательно, возможна такая ситуация, когда группа операторов ни разу не будет выполнена - если условие окончания будет удовлетворено сразу же. Заметим также, что ссылка на управляющую переменную делается по имени. Если, например, в качестве управляющей переменной было использовано составное имя "J.G", то изменение значения переменной "G" внутри цикла в тот же миг приведёт к изменению имени управляющей переменной этого цикла. При известной сноровке можно даже предугадывать с достаточной вероятностью последствия таких действий... Ещё одним ограничителем числа итераций при выполнении управляющего цикла может служить конструкция FOR. В этом случае должно быть указано <выраж. 'FOR'>, результатом вычисления которого должно быть неотрицательное целое число. Эта конструкция действует точно так же, как счётчик итераций в простом повторяющемся цикле - она устанавливает предел для числа итераций цикла, если 'повторения' его не будут прекращены ранее по какому-то другому условию или событию. Подобно выражениям TO и BY, <выражение FOR> вычисляется управляющей переменной будет присвоено её начальное значение. Подобно условию TO, счетчик FOR проверяется в начале каждой итерации. Например: Do z=-9999 to 9999 by 1 for 3; /* Выведет на экран: */ Say z; /* -9999 */ End; /* -9998 */ /* -9997 */ В управляемом цикле имя управляющей переменной может указываться в операторе END, закрывающем DO-группу. Это имя должно совпадать с именем в операторе DO (при этом для составных переменных НЕ ДЕЛАЕТСЯ НИКАКОЙ ПОДСТАНОВКИ); в случае несоответствия произойдёт синтаксическая ошибка. Это даёт возможность заставить интерпретатор автоматически проверять правильность расположения вложенных циклов в сложных структурах при минимальных накладных расходах. Например: Do r=1 to 10 ... End r /* Просим интерпретатор проверить, что этот END закрывает действительно цикл с переменной R */ |
|
|