Процедуры
Вы можете скачать презентацию к данной лекции здесь.
Назначение процедур
- Разбиение исходной задачи на подзадачи
- Устранение дублирования кода
- Повторное использование написанного кода
- Библиотеки готовых подпрограмм и функций
- Раздельное написание программ
Виды процедур
Модульные процедуры
Описываются в модулях после оператора contains.
Обладают явным интерфейсом.
Имеют доступ ко всем объектам модуля (типы данных, переменные, внутренние процедуры) при несовпадении имён
Могут содержать другие внутренние процедуры.
Внутренние процедуры
Описываются в головной программе после оператора contains.
Обладают явным интерфейсом.
Имеют доступ ко всем объектам головной программы (типы данных, переменные, внутренние процедуры) при несовпадении имён
Не могут содержать другие внутренние процедуры.
Внешние процедуры
Описываются отдельно от головной программы или в других файлах.
Обладают неявным интерфейсом.
Обмен данными с головной программы происходит посредством формальных параметров.
Могут содержать другие внутренние процедуры.
Функции
тип function имя_функции (формальные параметры) типы формальных параметров типы внутренних переменных исполняемые операторы имя_функции = вычисленное значение end function имя_функции
Результатом может выступать также переменная описанная в операторе result после объявления функции.
Пример.
Функция представлена тригонометрическим рядом
Тип функции – вещественный;
формальные параметры – -вещественный, -целый;
внутренние переменные – сумма (вещественный), индекс суммирования (целый).
!************************************************** ! Функция f(x) !************************************************** real function f(x,N) !------------- формальные параметры --------------- real x integer N !------------- внутренние переменные -------------- real sum integer k !-------------------------------------------------- sum = 0.0d0 do k = 1,N sum = sum + sin(k*x)/k end do f = sum ! результат присвоили имени функции end function f
Вызов функции
Вызов созданной функции аналогичен вызову стандартной функции
program func2 write(*,*) pi() end !************************************************** ! Функция возвращает число Пи !************************************************** real function pi() pi = 2.0*acos(0.0) end function pi
При вызове должны соответствовать:
- тип функции и тип переменной, которой присваивается результат функции
- тип формальных и фактических параметров
Подпрограммы
subroutine имя_подпрограммы ( формальные параметры ) типы формальных параметров типы внутренних переменных операторы описания исполняемые операторы end subroutine имя_подпрограммы
Подпрограмма печати прямоугольной таблицы символов
формальные параметры – (целый), (символьный);
внутренние переменные – индексы таблицы (целый).
!************************************************** ! Подпрограмма печати таблицы символов !************************************************** subroutine table(M,N,CH) !------------- формальные параметры --------------- integer M,N character CH !------------- внутренние переменные -------------- integer i,j !-------------------------------------------------- do k = 1,M do j = 1,N write(*,"(A,\)") CH end do write(*,*) end do end subroutine table
Вызов подпрограммы
Оператор call вызывает подпрограмму