next up previous contents
След.: Упражнения Выше: Операторы цикла Пред.: Операторы цикла   Содержание

Классические циклы DO

Циклы различного рода задаются оператором (точнее, конструкцией) DO ... END DO. В простейшей форме конструкция выглядит так:

DO

Тело цикла

END DO

Это так называемый вечный цикл, выход из которого возможен либо при помощи оператора безусловного перехода (пользоваться которым настоятельно не рекомендуется и потому в этом пособии он не обсуждается), либо с помощью оператора прерывания цикла EXIT. Этот оператор является одним из двух операторов управления циклом и вне тела цикла смысла не имеет. Вторым является оператор CYCLE, обрывающий вычисление текущей итерации цикла и переходящий к началу следующей итерации. Разумеется, операторы управления циклом применимы не только в вечном цикле. Более того, оператор EXIT может использоваться для прерывания любой конструкции, помимо цикла. При этом он завершает все циклы, запущенные в пределах конструкции, и ее саму. Если конструкция имеет имя, оно должно быть указано после оператора EXIT. Оператор EXIT без имени относится к ближайшему объемлющему циклу.

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

DO WHILE выражение логического типа

а во втором

DO I = I0,I1[,dI]

где I -- переменная счетчика (разумеется, годится любой идентификатор; переменная должна быть целого типа -- явно объявлена либо соответствовать целому типу при неявной типизации), а I0 и I1dI, если присутствует) -- выражения целого типа, задающие нижнее и верхнее значения диапазона, который пробегает счетчик (и шаг счетчика; dI не может равняться нулю; по умолчанию единица). Если верхнее значение меньше нижнего при положительном dI или наоборот при отрицательном, цикл не выполняется ни разу.

Пример конструкции цикла с именем:

MAIN_LOOP: DO WHILE END_OF_PROG !Основной цикл

..... !Какие-то вычисления большого объема.

..... !Когда они завершены, END_OF_PROG становится истиной

END DO MAIN_LOOP

Еще пример:

F = 1.0

FAC: DO I=1,N !Вычисление факториала; корректно и при N==0.

F = F * I

END DO FAC



Ilya A. Chernov 2012-12-19
X