Farionova_Fortran
.pdf
Номерварианта
1, 20
2, 19
3, 18
4, 17
5, 16
Функция
ЛАБОРАТОРНАЯ РАБОТА № 2
Номер варианта |
Функция |
|
|
|
|
6, 15 |
|
7, 14
8, 13
9, 12
10, 11
72
Разработка и реализация программ с разветвленной структурой
Образец выполнения работы
Задание 2.1. Записать логическое выражение, которое принимает значениеtrue, еслиточкаАскоординатами х, у принадлежит заштрихо-
ванной области (рис. Л2.1). |
|
|
|
|
у |
||||
Данная часть плоскости состоит из двух непере- |
|
2 |
|
|
|||||
секающихся областей. Таким образом, если точка |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
попадет в одну область или в другую, она будет при- |
–2 |
0 |
|
|
|
|
|
|
|
надлежать заданной плоскости. |
|
|
|
|
|
|
2 х |
||
|
|
|
|
|
|
|
|
||
Область, находящаяся в первой четверти, огра- |
|
|
|
–2 |
|||||
ничена тремя линиями: x = 0, y = 0, x2 + y2 = 22, при- |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
чем область находится выше y = 0, т. е. y > 0; справа |
Рис. Л2.1. Заданная |
||||||||
от x = 0, т. е. x > 0, и внутри окружности x2 + y2 = 22, |
частьплоскости |
||||||||
т. е. x2 + y2 < 22. |
|
|
|
|
|
|
|
|
|
Таким образом, логическое выражение для этой области: x > 0 y > 0 x2 + y2 < 22.
Область, находящаясявовторойчетверти, ограниченалиниями: x = 0, y = 0, x = –2, y = –2, причем область находится ниже y = 0, т. е. y < 0; слева от x = 0, т. е. x < 0; выше y = –2, т. е. y > –2; справа от x = –2, т. е. x > –2.
Таким образом, логическое выражение для второй области: x > (–2) y > (–2) x < 0 y < 0.
НаязыкеФортранокончательнологическоевыражениебудетиметь
вид
x>0.and.y>0.and.x**2+y**2<=4.or.x>(-2)&
.y>(-2).and.x<0.and.y<0
Задание 2.2. Составить программу вычисления значения функции, заданной графически (значение аргумента Х вводится произвольно с клавиатуры), – рис. Л2.2.
Математическая модель:
X <= –2, y = –2;– 2 < x <= 4, y = x;
x > 4, y = 4.
|
у |
|
|
|
|
4 |
|
|
|
|
|
4 |
|
||||
–2 |
|
||||
|
0 |
|
|
|
х |
–2
Рис. Л2.2. Заданнаяфункция
73
ЛАБОРАТОРНАЯ РАБОТА № 2
Схема алгоритма решения задачи представлена на рис. Л2.3.
|
|
Начало |
|
Текст программы: |
|
|
|
Program lr2 |
|
|
|
Ввод х |
|
|
|
|
|
Real x,y |
|
|
– |
x<=–2 |
+ |
Print '(a,$)', 'Enter x |
|
' |
|||
|
|
|
||
– |
x>4 |
+ |
у=–2 |
Read(*,*), x |
|
|
|
If (x<-2) then |
|
у=х |
|
у=4 |
|
Y=-2 |
|
|
|
|
else |
|
|
|
|
If (x>4) then |
|
|
|
|
Y=4 |
|
|
Вывод у |
|
else |
|
|
Конец |
|
Y=x |
|
|
|
End if |
|
Рис. Л2.3. Блок-схемарешения |
End if |
|||
|
задания2.2 |
|
Print '(a,f5.2)', 'y=', y |
|
|
|
|
|
End |
Результаты работы программы: |
||||
Enter x |
0 |
|
|
|
y= 0.00 |
|
|
|
|
74
Лабораторная работа № 3
Тема: Разработка и реализация программ с циклической струк-
турой.
Цельработы: получитьнавыкисоставленияиреализациипрограмм сциклическойструктурой, используяоператорыциклаязыкаФортран.
Задания к лабораторной работе
Задание 3.1. Представить математическую запись фрагмента программы и вычислить значение переменной X после его выполнения. Обозначение: N – номер варианта (см. таблицу).
Номер |
Фрагмент программы |
варианта |
|
1, 2 |
X=1 |
|
do J=7, N,(-1) |
|
X=X J |
|
enddo |
|
X=2 X |
3, 4 |
X=0 |
|
do J=1, N |
|
X=X+2 |
|
enddo |
|
X=2 X |
5, 6 |
X=1; J=1; |
|
X1=int(N/5) |
|
do while(J.LE.5) |
|
X=X X1 |
|
J=J+1 |
|
enddo |
7, 8 |
X=N |
|
do K=1, 6 |
|
X=X+1 |
|
enddo |
|
|
9, 10 |
X=5 |
|
do J=1, N |
|
X=X+2 |
|
enddo |
|
X=2 X |
Номер |
Фрагмент программы |
|
варианта |
||
11, 12 |
X=0; J=1 |
|
|
do while(J.LE.N) |
|
|
X=X+J |
|
|
J=J+2 |
|
|
enddo |
|
|
|
|
13, 14 |
X=1 |
|
|
do while(X<=N) |
|
|
X=X+1 |
|
|
enddo |
|
|
X=2 X |
|
15, 16 |
X=N |
|
|
do K=1, 8 |
|
|
X=X+5 |
|
|
enddo |
|
|
|
|
17, 18 |
X=1 |
|
|
do J=7, N |
|
|
X=X J |
|
|
enddo |
|
|
X=2 X |
|
19, 20 |
Х=1; J=1; X1=2 |
|
|
do while(J.LE.10) |
|
|
X=X X1 |
|
|
J=J+2 |
|
|
enddo |
|
|
75 |
|
ЛАБОРАТОРНАЯ РАБОТА № 3
Задание 3.2. Составить две программы табулирования функции y = f(x) на отрезке [–2; 2] с шагом h = 0,1 (см. таблицу). В первой программе должен использоваться цикл с параметром, во второй – цикл с предусловием.
Номерварианта
1
2
3
4
5
Функция
y = tg x ln x
y = 3 x
y = tg(ln x)
y = ln x
1− x
y = tg2 (ln x)
Номерварианта
6
7
8
9
10
Функция
y = ctg(ln x)
y = (ln x)2 x2 − 1
y = 2ln x x − 1
y = ln x x2
y = 5 x
Номерварианта
11
12
13
14
15
Функция
y = |
ln x |
1 − tg x |
y= ln 2x
соs x
y = ln x − tg x
y = ex
x
y = ln 2x
x
Номерварианта
16
17
18
19
20
Функция
y = 2tg x
2x
y = (ln x)2 x
y = 2sin x x − 1
y = gx x2
y = 5 x
2x
Образец выполнения работы
Задание 3.1. Представить математическую запись фрагмента программы и вычислить значение переменной X после его выполнения. Обозначение: N – номер варианта. Пусть N = 4.
|
|
X=0 |
|
|
J=1 |
|
|
do while (j<=N) |
х = 0, j = 1 |
|
X=X+J |
|
|
J=J+1 |
|
|
end |
J < =N |
Нет |
Cхема алгоритма фрагмента программы приве- |
|
|
дена на рис. Л3.1. |
Да |
|
Начальные данные: X = 0; J = 1. |
X = x + j, |
|
Тело цикла: X = X + J; J = J + 1. |
j = j + 1 |
|
Рис. Л3.1. Cхемаалгоритмафрагментапрограммы |
|
|
|
|
|
задания3.1 |
76
Разработка и реализация программ с циклической структурой
Условие выхода из цикла: J > N. Присваиваем начальные значения X = 0, j = 1. j = 1 < 4, Входим в цикл
1)x = 1, j = 2; 2 < 4, идем на следующий шаг цикла;
2)x = 3, j = 3; 3 < 4, идем на следующий шаг цикла;
3)x = 7, j = 4; 4 ≤ 4, идем на следующий шаг цикла;
4)x = 11, j = 5; 5 > 4, выходим из цикла.
После выполнения фрагмента программы x = 11.
Задание 3.2. Составить две программы табулирования функции y = f(x) на отрезке [–2; 2] с шагом h = 0,1. В первой программе должен использоваться цикл с параметром, во второй – цикл с предусловием.
Рассмотрим решение задачи на примере табулирования функции
у =
x.
Областьопределенияфункции: x ≥ 0.
1.Блок-схема решения задачи с использованием оператора цикла
спредусловием приведена на рис. Л3.2.
Приведем текст программы, реализующей алгоритм решения задачи(циклспредусловием):
Program Lr3_while real x, y, h, a, b
Write(*,'(a,$)'),'Введите начало промежутка a=' Read(*,*),a
Write(*,'(a,$)'),'Введите конец промежутка b=' Read(*,*),b
Write(*,'(a,$)'),'Введите шаг h=' Read(*,*),h
X=a
Do While (x<=b) If (x>=0) then Y=sqrt(x)
Write(*,'(a,f7.3, a,f7.3)'),'x=',x,' y=',y Else
Write(*,'(a,f7.3,a)'), 'x=',x, 'Y не существует' Endif
X=x+h Enddo End
2.Блок-схема решения задачи с использованием оператора цикла
спараметром предсталена на рис. Л3.3.
77
|
|
|
|
ЛАБОРАТОРНАЯ РАБОТА № 3 |
|||
|
Начало |
|
|
|
|
|
|
Ввод a, b, h |
|
|
|
|
|
||
|
X = a |
|
|
|
|
|
|
|
X<=b |
Нет |
|
|
|
|
|
Нет |
Да |
Да |
|
Рис. Л3.2. Блок-схемарешения |
|||
X>=0 |
|
||||||
|
|
|
|
задачисиспользованием |
|||
Вывод х, у – |
Y = |
x |
|
операторацикла |
|||
не существует |
|
|
|
спредусловием |
|||
|
|
Вывод х, у |
|
|
|
|
|
|
х = x + h |
|
|
|
|
|
|
|
|
|
|
|
Начало |
|
|
|
Конец |
|
|
Ввод a, b, h |
|
||
|
|
|
|
|
|||
|
|
|
|
X = a; n = b −a +1 |
|
||
|
|
|
|
|
h |
|
|
|
|
|
|
|
I = 1, n |
|
|
|
|
|
|
Нет |
Да |
Да |
|
Рис. Л3.3. Блок-схемарешения |
|
X>=0 |
|
||||
задачисиспользованием |
|
Вывод х, у – |
|
|
|||
операторацикла |
|
|
Y = |
x |
|||
с параметром |
|
|
не существует |
|
|
||
|
|
|
|
|
|
||
|
|
|
|
|
|
Вывод х, у |
|
|
|
|
|
|
х = x + h |
|
|
|
|
|
|
|
Конец |
|
|
78
Разработка и реализация программ с циклической структурой
Приведем текст программы, реализующий алгоритм решения задачи (цикл с параметром):
Program Lr3_do real x, y, h, a, b integer i,n
Write(*,'(a,$)'),' начало промежутка a=' Read(*,*),a
Write(*,'(a,$)'),' конец промежутка b=' Read(*,*),b
Write(*,'(a,$)'),'Введите шаг h=' Read(*,*),h
X=a n=nint((b-a)/h)+1 do i=1, n
If (x>=0) then Y=sqrt(x)
Write(*,'(a,f5.2, a,f4.2)'),'x=',x,' y=',y Else
Write(*,'(a,f5.2,a)'), 'x=',x, 'Y не существует' X=x+h
End
End
Результат работы программы:
Введите начало промежутка a=-2 Введите начало промежутка b=2 Введите шаг h=0.5
X=-2.00 Y не существует
X=-1.50 Y не существует
X=-1.00 Y не существует
X=-0.50 Y не существует
X= 0.00 y=0.00 X= 0.50 y=0.71 X= 1.00 y=1.00 X= 1.50 y=1.22 X= 2.00 y=1.41
79
Лабораторная работа № 4
Тема: Разработка и реализация программ с использованием мас-
сивов.
Цельработы: получитьнавыкисоставленияиреализациипрограмм с одномерными и двумерными массивами, используя средства языка Фортран.
Задания к лабораторной работе
Задание 4.1. Представить математическую запись фрагмента программыивычислитьзначениепеременнойХпослееговыполнения, еслиэлементы массива определяются по формуле a(i)=mod(37*a(i-1)+3, 64), где a(1) равно номеру варианта (см. таблицу).
Номер |
Фрагмент программы |
варианта |
|
1, 2 |
T=2 |
|
N=3 |
|
X=a(1) |
|
Do j=1,N |
|
X=X*T+a(j+1) |
|
End do |
3, 4 |
N=4 |
|
X=a(1) |
|
Do j=2,N |
|
If (a(j)<x) then |
|
X=a(j) |
|
End if |
|
End do |
5, 6 |
N=4 |
|
M=int(N/2) |
|
K=N |
|
Do j=2,M |
|
Y=a(j) |
|
a(j)=a(K) |
|
a(K)=Y |
|
K=K-1 |
|
End do |
|
|
Номер |
Фрагмент программы |
|
варианта |
||
|
||
7, 8 |
N=4 |
|
|
X=a(N) |
|
|
Do j=N-1,1,(-1) |
|
|
X=a(j)+1/x |
|
|
End do |
|
|
|
|
9, 10 |
T=3 |
|
|
N=3 |
|
|
X=a(N+1) |
|
|
Do j=1,N |
|
|
X=X+a(j)*exp((N-j- |
|
|
1)*log((T)) |
|
|
End do |
|
11, 12 |
N=4 |
|
|
X=0 |
|
|
K=0 |
|
|
Do j=1,N |
|
|
If (a(j)>0) then |
|
|
X=X+a(j) |
|
|
K=K+1 |
|
|
End if |
|
|
End do |
|
|
If (k/=0) then |
|
|
X=X/K |
|
|
End if |
80
Разработка и реализация программ с использованием массивов.
Задание 4.2. Составить программу вычисления следующих величин (см. таблицу) при условии, что элементы массива определяются по формуле a(i)=mod(37*a(i-1)+3,64), где a(1) равно номеру ва-
рианта. Количество элементов массива 20. Исходный массив и результаты вычислений вывести на экран.
Номер |
|
вари- |
Вычисляемые величины |
анта |
|
1, 20 |
Наибольший элемент массива А и его порядковый номер; количество |
|
элементов с нечетными номерами, меньших D (где D – произвольное |
|
целое число [1, 63]) |
2, 19 |
Сумма элементов массива А, значения которых кратны N (номеру |
|
варианта); произведение элементов с нечетными номерами |
3, 18 |
Сумма элементов массива А, значения которых – четные числа; |
|
произведение элементов со значениями из интервала [т, п] (т, п – |
|
целые числа из интервала [1, 63]) |
4, 17 |
Среднее арифметическое положительных элементов массива А; значе- |
|
ние максимального элемента с четным номером и его порядковый но- |
|
мер |
5, 16 |
Сумма элементов массива А, значения которых – нечетные числа; |
|
максимальный по модулю элемент и его порядковый номер |
6, 15 |
Среднее геометрическое положительных элементов массива А; ми- |
|
нимальный по модулю элемент и его порядковый номер |
7, 14 |
Сумма элементов массива а, значения которых – двузначные четные |
|
числа; максимальный элемент среди элементов массива а, значения |
|
которых – двузначные четные числа |
8, 13 |
Произведение наибольшего и наименьшего элементов массива А; |
|
среднее арифметическое элементов массива А |
9, 12 |
Сумма элементов массива а, значения которых – двузначные нечет- |
|
ные числа. Сформировать из таких элементов новый массив В |
10, 11 |
Модуль вектора а/3. Сформировать из элементов массива, больших, |
|
чем модуль вектора а/3, новый массив В |
Задание 4.3. Ввести исходный массив с клавиатуры, выполнить с элементами массива действия согласно варианту (см. таблицу). Вывести на экран исходный и преобразованный массивы.
81
