-
Операторы цикла
В Фортране 90/95 существуют два вида циклов, организуемых с помощью соответствующих операторов:
- оператор цикла с параметром do … end do;
- оператор цикла с предусловием do while … еnd do.
-
Оператор цикла do … end do
В общем виде оператор do … end do имеет следующий вид:
[имя:] do x = хн , хк [, х]
тело цикла
end do[имя], где
имя- имя оператора; если оно присутствует, то должно появляться в операторах do и end do;
x - переменная цикла целого или вещественного типа;
хн, хк, х - начальное, конечное значения и шаг изменения переменной цикла, в качестве которых могут использоваться константы, переменные, арифметические выражения целого или вещественного типа.
Количество повторений цикла N вычисляется по формуле:
Например, при хн=5, хк=7, х=0,15 N=14
Обратите внимание:
- шаг х не может равняться нулю;
- если шаг х отсутствует, то его значение принимается равным единице;
- в цикле "с параметром" запрещено в теле цикла изменять значение переменной цикла.
-
Оператор цикла do while … end do
В общем виде оператор do while … end do имеет следующий вид:
[имя:] do while (<условие>)
тело цикла
end do[имя], где
имя- имя оператора; если оно присутствует, то должно появляться в операторах do while и end do;
<условие> - логическое выражение – условие выполнения цикла.
Цикл с предусловием выполняется до тех пор пока <условие> принимает значение ИСТИНА. Если при первой же проверке <условие> примет значение ЛОЖЬ, то тело цикла ни разу не выполнится.
-
Программирование задач циклической структуры
Рассмотрим на примере основные этапы решения задач циклической структуры.
Пример 1. При течении идеального газа отношение плотности газа к плотности торможения 0 выражается следующим уравнением
,
где - показатель адиабаты, М - число Маха.
Вывести в файл пары значений М и (М) с шагом М=0,1 в диапазоне изменения М: 0М5, для показателя адиабаты =1,4.
Примечание: числом Маха называется отношение скорости тела относительно газа или скорости газа относительно неподвижного наблюдателя к скорости звука в газе; отношение теплоемкости газа при постоянном объеме к теплоемкости при постоянном давлении называется показателем адиабаты.
Введем обозначения: Mн – начальное значение, Mк – конечное значение, M – шаг изменения для числа Маха M.
I Математическое описание задачи
Дано: Mн=0, Mк=5, M=0,1.
Основные зависимости, необходимые для решения задачи:
(1)
Ограничения: Зависимость (1) выполняются для значений M[Mн, Mк] c шагом M.
Найти: для всех значений M из заданного интервала.
II Схема алгоритма приведена на рис. 3.
|
III. Таблица идентификации переменных и их типов
Математическая
переменная Машинная
переменная
Тип M M
real Mн Mn
Mк Mk
M dM
ЕM
γ G
|
Рис. 3. Пример схемы алгоритма
IV Текст программы на языке Фортран 90/95
! Пример программы
! циклической структуры
! Выполнил ст. 219 гр. Иванченко А. Е.
Program Primer_1
implicit none
real :: M, EM
real :: Mn=0., Mk=5., dM=0.1, G=1.4
open (1,file='out_rez.txt')
do M=Mn, Mk+0.001, dM
EM=(1+(G-1)*0.5*M**2)**(-1/(G-1))
! Форматный вывод в файл 'out_rez.txt'
write(1, 10) M, EM
10 format (4x,'M=', F4.2, 3x, 'E(M)=', F7.5)
end do
close (1)
end Program Primer_1
В процессе выполнения задачи результаты вычислений будут записаны в файл 'out_rez.txt' с использование форматного вывода (см. оператор format с меткой 10)
М=. E(M)=.
Вид результатов, записанных в файл 'out_rez.txt'
M=0.00 E(M)=1.00000
M=0.25 E(M)=0.96942
M=0.50 E(M)=0.88517
M=0.75 E(M)=0.76604
. . .
M=3.50 E(M)=0.04523
M=3.75 E(M)=0.03524
M=4.00 E(M)=0.02766
M=4.25 E(M)=0.02189
M=4.50 E(M)=0.01745
M=4.75 E(M)=0.01402
M=5.00 E(M)=0.01134
Пример 2. Вычислить длину окружности и площадь круга для всех значений радиуса R из заданного интервала [Rn, Rк] с постоянным шагом изменения R.
Введем обозначения: L –длина окружности; S – площадь круга; R – радиус окружности, Rн – начальное значение радиуса; Rк – конечное значение; R – шаг изменения.
I Математическое описание задачи
Дано: Rн, Rк, R.
Основные зависимости, необходимые для решения задачи:
L=2π R; (1)
S=π R2; (2)
Ограничения: Зависимости (1) и (2) выполняются для значений R[Rн, Rк] c шагом R.
Найти: длину окружности L и площадь круга S для всех значений R из заданного интервала.
II Схема алгоритма приведена на рис. 4.
III. Таблица идентификации переменных и их типов
Математическая переменная |
R |
Rн |
Rк |
R |
L |
S |
|
||
Машинная переменная |
R |
Rn |
Rk |
dR |
L |
S |
|
||
Тип |
real |
|
|||||||
|
|
|
|||||||
Рис. 4. Пример схемы алгоритма
|
IV Текст программы на языке Фортран 90/95
Program Primer_2 implicit none
real :: R, Rn, Rk, dR, L, S real, parameter :: Pi=3.1415
open(3, file='Data.txt')
print *,'Rn, Rk, dR ?' read *, Rn, Rk, dR write(3,10) Rn, Rk, dR R=Rn do while (R<=Rk) L=2*Pi*R S=Pi*R**2 write(3,20) R, L,S R=R+dR end do 10 format(2x,'Rn=',F5.1,3x,'Rk=',F5.1,3x, & 'dR=',F4.1//) 20 format(2x,'R=',F5.1,3x,'L=',F7.3,3x, & 'S=',F7.3) close(3) end Program Primer_2
|
Ниже приведен протокол решения задачи со следующими исходными данными: Rn= 10.5 Rk= 15.0 dR= 0.5.
Rn, Rk, dR ? ! подсказка о вводе данных.
10.5, 15.0, 0.5
В процессе выполнения задачи результаты вычислений будут записаны в файл 'Data.txt' с использование форматного вывода
Rn= . Rk= . dR=. (см. оператор format с меткой 10)
R=. L=. S=. (см. оператор format с меткой 20)
Rn= 10.5 Rk= 13.0 dR= 0.5
(пропуск одной строки перед выводом результатов в теле цикла)
R= 10.5 L= 65.971 S=346.350
R= 11.0 L= 69.113 S=380.121
R= 11.5 L= 72.255 S=415.463
R= 12.0 L= 75.396 S=452.376
R= 12.5 L= 78.537 S=490.859
R= 13.0 L= 81.679 S=530.914
Содержание отчета по лабораторной работе
-
Тема и цель лабораторной работы.
-
Краткие сведения из теории:
- понятие циклического вычислительного процесса;
- циклические базовые структуры;
- операторы цикла: do …end do, do while … .end do.
-
Условия заданий выданных преподавателем.
-
Математическое описание задач.
-
Схемы алгоритмов.
-
Тексты программ.
-
Листинги с текстом программ и результатами выполнения.
-
Анализ результатов.
Контрольные вопросы.
-
Какой вычислительный процесс называется циклическим?
-
Какая переменная называется переменной цикла?
-
Что такое тело цикла?
-
Назовите базовые циклические структуры.
-
От чего зависит количество выполнений арифметического цикла?
-
В чем отличие итерационного цикла от арифметического?
-
В чем отличие базовой структуры цикла "до" от структуры цикл "пока"?
-
Назовите четыре шага циклического вычислительного процесса.
-
Назначение и выполнение оператора do …end do.
-
Способы задания переменной цикла для оператора do …end do.
-
Назначение и выполнение оператора do while … end do.
-
Может ли цикл do while … end do ни разу не выполниться?
-
Назначение оператора format.
-
Поясните назначение дескрипторов в операторах format в приведенных примерах программ.
ст. преп. каф. ЭВМ Скабалланович Т.И.