Лабораторная работа №6
Тема: Разработка и реализация программ с использованием подпрограмм и функций.
Цель работы:
-
получить навыки составления и реализации программ с использованием программных компонентов: подпрограмм и функций
Задание к лабораторной работе.
Задание 6.1 Составить программу табулирования функции по варианту задания 3.2 с использованием программного компонента function.
Задание 6.2 Составить программу обработки одномерного массива согласно варианту по заданию 4.2 с использованием программного компонента subroutine.
Образец выполнения лабораторной.
Задание 6.1. Составить программу табулирования функции y=-1 с использованием программного компонента function.
Схема алгоритма реализации задания 6.1 приведена на рис. Л6.1
Рис. Л6.1 Блок-схемы реализации задания 6.1
Блок-схема функции f(x)=-1 представлена на рис. Л6.2
Рис. Л6.2 Блок-схема function f(x)
Текст программы:
Program Lr61
real h, a, b
integer i,n
real X(50),y(50)
Write(*,'(a,$)'),'Введите начало промежутка a='
Read(*,*),a
Write(*,'(a,$)'),'Введите конец промежутка b='
Read(*,*),b
Write(*,'(a,$)'),'Введите шаг табулирования h='
Read(*,*),h
open(5,file='1.txt')
X(1)=a
n=int((int(b)-int(a))/h)+1
do i=1, n
If (x(i)>=0) then
Y(i)=f(x(i))
Write(5,'(a,i2,a,f5.2,a,i2,a,f5.2)'),'x(',I,')=',x(i),' y(',I,')=',y(i)
Else
Write(5,'(a,i2,a,f5.2,a)'),'x(',I,')=',x(i), ' Y не существует'
endif
x(i+1)=x(i)+h
Enddo
close(5)
Contains
Function f(x)
Real x
F=sqrt(x)-1
End function f
End
Результаты работы программы:
Введите начало промежутка a=-2
Введите конец промежутка b=2
Введите шаг табулирования h=0.5
x( 1)=-2.00 Y не существует
x( 2)=-1.50 Y не существует
x( 3)=-1.00 Y не существует
x( 4)=-0.50 Y не существует
x( 5)= 0.00 y( 5)=-1.00
x( 6)= 0.50 y( 6)=-0.29
x( 7)= 1.00 y( 7)= 0.00
x( 8)= 1.50 y( 8)= 0.22
x( 9)= 2.00 y( 9)= 0.41
Задание 2.2. Разработать программу для нахождения произведения положительных элементов одномерного массива размером n с использованием подпрограммы subroutine. Элементы массива считываются из файла. Исходный массив и результат вывести на экран.
Алгоритм основной программы приведен на рис. Л6.3
Рис. Л6.3 Блок-схема основной программы задания 6.2
Алгоритм подпрограммы mult для поиска произведения положительных чисел массива приведен на рис. 6.4.
Рис. 6.4 Блок-схема подпрограммы mult
Текст программы:
Program lr62;
Integer, parameter :: n=10
integer a(1:n)
integer I,p
do i=1, n
print ‘(a,i2,a,$)’, ‘a(’,I,’)=’
read(*,*), a(i)
enddo
call Mult(a,p)
Write(*,’(a,i5)’)(‘p=’,p)
contains
subroutine mult(a, p)
integer a(1:n)
integer I,p
P=1
do i=1, n
If (a(i)>0) then
P=p*a(i)
Endif
enddo
end subroutine mult
End
Результаты работы программы:
a( 1)= 4
a( 2)= -7
a( 3)= 5
a( 4)= 7
a( 5)= -2
a( 6)= 1
a( 7)= 0
a( 8)= 4
a( 9)= -9
a(10)= 6
p= 3360