Процедуру следует оформлять в виде функции, если ее результат можно записать в одну переменную, т.е. в основную программу передается только одно значение, как в последнем случае.
Структура функции имеет следующий вид:
FUNCTION < имя функции>([< форм.арг >])
< объявление форм.арг >
< объявление локальных объектов >
...
< вычисляемые операторы, присваивание результата >
END [ FUNCTION [ < имя функции > ] ]
Пример:
function Sum_(a,b)
real a,b,Sum_
Sum_=a+b
return
end
…
s=Sum_(1.,3.)
Функции бывают внешние и внутренние.
При задании внешней функции следует объявлять ее тип в разделе объявлений вызывающей программной единицы так же, как это делается для других объектов данных.
Внутренние процедуры обладают явно заданным интерфейсом, поэтому тип внутренней функции не должен объявляться в ее носителе
Внутренние процедуры-функции не могут содержать других внутренних процедур.
Вызов функции осуществляется путем указания ее имени в вызывающей ее программной компоненте.
Пусть требуется вычислить выражение , где , , .
|
|
Без применения собственных функций программа будет иметь вид:
Program bezfunc
Real, parameter:: pi=3.1415926
Real x, dx, s, fp, fm, f0
X=pi/8
Dx=0.01
F0=(sin(x)+cos(x))/(x+exp(x))! вычисление f(x)
Fp=(sin(x+dx)+cos(x+dx))/(x+dx+exp(x+dx))! вычисление f(x+dx)
Fm=(sin(x-dx)+cos(x-dx))/(x-dx+exp(x-dx))! вычисление f(x-dx)
S=fp/fm+f0
Write(*,’(a, f5.2)’), ‘s=’, s
end