1.14. ПОДПРОГРАММЫ-ФУНКЦИИ

До сих пор мы рассматривали возможности Фортрана при наличии одной программной единицы (программного модуля). Программной единицей называется последовательность операторов, заканчивающаяся оператором END. Программные единицы – это головная программа и подпрограммы. Подпрограммы широко используются в Фортране и оказываются весьма полезными при написании сложных программ, при наличии одинаковых последовательностей операторов в алгоритме и т.д. Подпрограммы делятся на подпрограммы-функции и подпрограммы-процедуры. Фрагмент алгоритма оформляется в виде функции, если в результате выполненных в нем действий возвращается единственное скалярное значение или массив. Общая форма записи подпрограммы-функции имеет вид

<тип> FUNCTION < имя > (<список формальных параметров S>)
<операторы Фортрана>


[RETURN]
END

Здесь <тип> определяет тип результата (INTEGER, REAL и т.д.) подпрограммы, <имя> – имя подпрограммы, подчиняющееся обычным правилам образования имен в Фортране. Список формальных параметров состоит из имен переменных, массивов, имен подпрограмм и др., разделенных запятыми.

Подпрограмма-функция может состоять из любого количества операторов Фортрана, но последним выполняемым оператором должен быть оператор RETURN, обеспечивающий возврат в вызывающий программный модуль. Оператор RETURN имеет смысл, аналогичный оператору STOP в головной программе. Последним оператором подпрограммы должен быть оператор END.

Результатом выполнения подпрограммы-функции является значение, присваиваемое переменной с именем подпрограммы. Результирующую переменную можно задавать в заголовке с помощью служебного слова RESULT. Если имя подпрограммы соответствует типу результата (по умолчанию REAL или INTEGER), то указание типа в заголовке подпрограммы может быть опущено Выполнение подпрограммы-функции происходит после указания имени подпрограммы в арифметическом или логическом выражении вызывающей программной единицы. Вместе с именем указывается список фактических параметров. Между формальными и фактическими параметрами должно соблюдаться соответствие по порядку следования и типу. Более подробно подпрограммы описаны ниже в 1.17.