Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Farionova_Fortran

.pdf
Скачиваний:
21
Добавлен:
15.02.2015
Размер:
2.71 Mб
Скачать

Номерварианта

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

1x

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

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