Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




ПРИМЕР ОФОРМЛЕНИЯ ОТЧЕТА

Лабораторная работа № 7

ПОДПРОГРАММЫ

Выполнил ст. 211 гр. Иванов А.П.  
Проверил доцент каф. 304 Скоб Ю.А.  

 

Цель работы– уяснение общего и основных различий между процедурой и функцией; составление программ с использованием процедур; решение задач, связанных с операциями над массивами.

Постановка задачи:

1. Выполнить задание с использованием процедур.

2. Исходные данные (кроме размерности массивов) ввести из текстового файла, который представить вместе с листингом программы и результатами счета. Ввод данных оформить как процедуру.

3. Решение задачи оформить в виде процедуры.

4. Исходную матрицу и результаты вывести в другой текстовый файл. Вывод данных в файл оформить в виде процедуры.

5. Весь обмен данными между основной программой и процедурами организовать через список формальных/фактических параметров.

Вариант № 1

Найти максимальный и минимальный элементы и разность между ними для массива

Содержание работы

1. Текст программы:

 

! Lab8_V1.f90

! FUNCTIONS:

! Lab8_V1 - Entry point of console application.

!****************************************************************************

! PROGRAM: Lab8_V1

! PURPOSE: Entry point for the console application.

!****************************************************************************

SUBROUTINE ReadFromFile(A1,Mmax,m1)

INTEGER A1(Mmax,Mmax),m1,Mmax

integer i,j ! счетчики по строкам, столбцам

integer:: fi=1 ! Номер устройства ввода

! Файловой переменной fi назначается файл Lab8_V1.txt

open(fi,file='Lab8_V1.txt') ! Текстовый файл открывается

read(fi,*) m1 ! Чтение количества строк и столбцов

do i=1,m1 ! цикл по строкам

read(fi,*) (A1(i,j),j=1,m1) ! чтение массива по строкам

enddo

close(fi) ! Закрывается прочитанный файл fi

END SUBROUTINE ReadFromFile

!-------------------------------------------------

SUBROUTINE MaxMin(a1,m1,min,max,r,Mmax)

INTEGER a1(Mmax,Mmax),m1,min,max,r

integer i,j ! счетчики по строкам, столбцам

! поиск минимального и максимального элементов

min=a1(1,1) ! начальное значение минимального элемента

max=a1(1,1) ! начальное значение максимального элемента

do j=1,m1 ! цикл по столбцам

do i=1,m1 ! цикл по строкам

if (a1(i,j)<min) min=a1(i,j) ! проверка на минимум

if (a1(i,j)>max) max=a1(i,j) ! проверка на максимум

enddo

enddo

r=max-min ! разность между максимальным и минимальным

END SUBROUTINE MaxMin

!-------------------------------------------------

SUBROUTINE SaveToFile(a,m,min,max,r,Mmax)

INTEGER a(Mmax,Mmax),m,min,max,r

integer i,j ! счетчики по строкам, столбцам

integer::fo=2 ! Номера устройства вывода

! Файловой переменной fo назначается файл Lab8_V1.out

open(fo,file='Lab8_V1.out') ! Текстовый файл fo открывается

write(fo,*) '-----------------------------------'

write(fo,*) 'Check elements of array A:'

do i=1,m

write(fo,'(100i5)') (a(i,j),j=1,m) ! чтение массива по строкам

enddo

write(fo,*) '-----------------------------------'

write(fo,'(2(a,i4))') ' Amin=',min,' Amax=',max

write(fo,'(a,i4)') ' Result: R=',r ! вывод результата на экран

close(fo) ! Закрывается файл fo,созданный программой

END SUBROUTINE SaveToFile

!-------------------------------------------------

SUBROUTINE ShowToScreen(a,m,min,max,r,Mmax)

INTEGER a(Mmax,Mmax),m,min,max,r

! Вывод массива на экран - проверка правильности ввода

print *,'-----------------------------------'

print *, 'Check elements of array A:'

do i=1,m

write(*,'(100i5)') (A(i,j),j=1,m) ! вывод по строкам

enddo

print *,'-----------------------------------'

write(*,'(2(a,i4))') ' Amin=',min,' Amax=',max

write(*,'(a,i4)') ' Result: R=',r ! вывод результата на экран

END SUBROUTINE ShowToScreen

!-------------------------------------------------

program Lab8_V1

implicit none

! ----- Объявления переменных -----

integer,parameter:: Mmax=100 ! максимальное количество строк-столбцов

integer m ! количество строк и столбцов

integer A(Mmax,Mmax) ! массив А

integer R ! искомая разность

integer Amax ! максимальный элемент

integer Amin ! минимальный элемент

integer i,j ! счетчики по строкам, столбцам

! ----- Выполняемые операторы -----

CALL ReadFromFile(A,Mmax,m) ! Вводим данные из файла

CALL MaxMin(A,m,Amin,Amax,R,Mmax) ! Расчет результатов

CALL SaveToFile(A,m,Amin,Amax,R,Mmax) ! Выводим информацию в файл

CALL ShowToScreen(A,m,Amin,Amax,R,Mmax) ! Вывод информации на экран

end program Lab8_V1

 

2. Файл исходных данных.

3. Окно консольного приложения с результатами расчета.

4. Файл с результатами расчета.

5. Выводы:

· изучены общие характеристики и основные различия между подпрограммой и функцией;

· составлена программа с использованием подпрограмм;

· решена задача, связанная с операциями над массивами;

· получены навыки передачи массивов в качестве параметров в подпрограммы.

 



<== предыдущая страница | следующая страница ==>
Порядок выполнения работы. 1. Создайте новый проект консольного приложения с именем Lab8_V1 | Нахождение произведения элементов Pr одномерного массива D(N)

Дата добавления: 2015-07-26; просмотров: 205; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.004 сек.