Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_peredelannye.docx
Скачиваний:
20
Добавлен:
25.09.2019
Размер:
116.76 Кб
Скачать

16)Виды циклов в языке Фортран: отражение на схеме алгоритма и программирование.

Часто в программе необходимо "циклить", т.е. многократно повторять блок одних и тех же операторов. Использование повторяющегося блока можно организовать с помощью операторов управления. Однако во всех современных языках программирования для организации подобных циклических процедур используются специальные конструкции, называемые циклами.

Операторы цикла предназначены для многократного выполнения операто­ров (тело цикла), находящихся между заголовком оператора DOи оператором CONTINUEс меткой или оператором ENDDO.

Оператор CONTINUEне порождает каких-либо команд и используется для завершения оператора цикла или для ссылок в программе. В качестве операто­ра, завершающего тело цикла, можно использовать оператор ENDDO. В этом случае в заголовке цикла не указывается метка, а вместо оператора CONTINUEзаписывается ENDDO.

Конструкция цикла DOс шагом имеет вид:

DОn i=ml,m2,m3 DОi=ml,m2,m3

Тело цикла Тело цикла

nCONTINUE ENDDO

Здесь n- метка последнего оператора тела цикла (оператора CONTINUE); i- переменная целого, вещественного или вещественного двойной точности типа, которая называется параметром цикла, ml, m2, m3 - константы, переменные или арифметические выражения целого, вещественного или вещественного двойной точности типов. После метки nможет стоять необязательная запятая. Величина mlопределяет начальное значение параметра цикла, m2 — конечное

значение параметра цикла, а m3 — шаг или приращение.

Правило выполнения: Оператор DOавтоматически исполняет все операторы до оператора CONTINUEс меткой nдля значений iот mlдо m2 с шагом m3. Таким образом, вначале параметр iустанавливается равным ml, и с этим значе­нием выполняются все операторы тела цикла; затем iизменяется до величины m1+m3, и с этим значением также выполняются все операторы тела цикла. Этот процесс продолжается до тех пор, пока параметр цикла не перейдет границу значения m2, т.е. при положительном шаге m3 цикл повторяется при всех зна­чениях i<m2, а при отрицательном шаге m3 цикл повторяется при всех значе­ниях i>m2. Если в записи цикла значение шага m3 отсутствует, то оно прини­мается равным единице. После окончания цикла выполняется оператор, сле­дующий за оператором CONTINUE. Примеры заголовка цикла: D0 10 I=1,N-1 DO5, A=K,X*Y+5,H

При записи заголовка цикла необходимо следить за тем, чтобы шаг не оказался равным нулю (иначе цикл будет бесконечным).

Пример использования оператора цикла. Пусть задана функцияf(x)в виде ряда по степеням х

f(x)=x+ X2/2+ X3/3+..+Xn/N

где N - параметр.

Программа, которая для любых Х и N вычисляет соответствующее значение функции F, может иметь следующий вид READ(*,*)X,NF=0

D0 5 I=1,N! илиDO 1=1,N F=F+(X**I)/I 5 CONTINUE !илиEND DO WRITE (*,*)F STOP END

Конструкция цикла с условием DOWHILEимеет вид

DO n WHILE(L)DOWHILE(L)

Телоцикла Телоцикла

nCONTINUE ENDDO

Здесь n- метка последнего оператора тела цикла (оператора CONTINUE); L- логическое выражение. После метки nможет стоять необязательная запятая. Правило выполнения: Вычисляется логическое выражение L. Если оно прини­мает значение .TRUE., то выполняются все операторы тела цикла до оператора CONTINUEс меткой n. Этот процесс продолжается до тех пор, пока логическое выражение не примет значение .FALSE. Тогда ни один оператор тела цикла не исполняется и выполняется оператор следующий за CONTINUE.

Примеры заголовка цикла

DO25 WHILE(X**2+Y**2.LE.R**2) DO 10,WHILE(Y.GE.A.OR.X.GE.B) Пример использования оператора DOWHILE. Пусть задана функцияf(x)в ви­де ряда по степеням х.

f(x)=1-x+ X2/2-X3/3+...+(-1)nN/N)...

Суммирование членов ряда в программе будем производить до тех пор, пока модуль члена ряда не станет меньше заданной величины Е. Программа, реали­зующая данный алгоритм, может иметь следующий вид READ(*,*)X,EF=1.0 А=-Х

DO 10 WHILE(ABS(A).GE.E) F=F+A

I=I+1

A=-X*A/I

10 CONTINUE

WRITE(*,*)F

STOP

END

В приведенной программе присутствует обращение к библиотечной функ­ции Фортрана ABS, которая вычисляет абсолютное значение вещественной ве­личины.

Правила использования операторов цикла:

При использовании операторов цикла необходимо придерживаться сле­дующих правил:

  • Если оператор цикла указан внутри другого DO-цикла, его тело должно пол­ностью содержаться внутри тела внешнего DO-цикла (вложенность циклов).

  • Если оператор DOуказан внутри блоков IFTHENили IFTHENELSE, то те­ло цикла должно полностью содержаться внутри блока.

  • Если блочный оператор IFуказывается внутри цикла, то связанный с ним оператор ENDIFдолжен находится внутри тела цикла.

  • Переход в тело DO-цикла извне цикла не разрешен.

  • Два или более циклов DOили DOWHILEмогут оканчиваться одним терми­нальным оператором CONTINUE. Однако оператор ENDDOможет быть кон­цом только одного цикла.

  • При выходе из цикла сохраняется текущее значение параметра цикла iдля DO-цикла или значение логического выражения Lдля DOWHILEцикла. Для выхода из цикла может быть использован оператор безусловного перехода GOTOи специальный оператор Exit(в Фортране 90).

Примечание. Цикл DOWHILEсчитается устаревшей конструкцией; пла­нируется замена его "глухим" циклом do

If<логическое выражение>exitenddo

с возможной перестановкой условного оператора и блока [Рыжиков].

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]