Практически во всех серьезных программах используют подпрограммы. В Фортране существуют подпрограммы двух типов: function (функция) и subroutine (подпрограмма общего вида).
Подпрограммы взаимодействуют с вызывающими их программными единицами (которые могут быть основными программами или, в свою очередь, являться подпрограммами) посредством обмена параметрами (аргументами). Подпрограммы-функции, в отличие от подпрограмм общего вида, возвращают также в своем имени некоторое значение.
Объявляется подпрограмма-функция так: 
function <имя функции>(<список аргументов>)
<тело подпрограммы-функции>
return 
end

А подпрограмма subroutine так:
subroutine <имя подпрограммы>(<список аргументов>)
<тело подпрограммы>
return 
end

Отметим, что оператор return служит для возврата управления в вызывающую программную единицу. В случае его отсутствия выполнение программы просто будет завершено в подпрограмме. 
Рекурсия- прием программирования, когда в подпрограмме встречается вызов этой же подпрограммы, в Фортране запрещена.

Приведем пример подпрограммы-функции, вычисляющей n-факториал(n!): 

          ! основная программа
write(*,*)' n=' 
read(*,*) n                 
!считываем вводимое пользователем значение n
write(*,*) n,'!=',fu(n)  !пишем возвращаемое функцией fu(n) значение n-факториала
end    !конец основной программы
function fu(n)              !подпрограмма- функция fu 
f=1
do i=1, n 
f=f*i
                            !в цикле вычисляем факториал, f
end do
fu=f                             !функция возвращает значение факториала
return                         !передача управления в основную программу
end                             !конец подпрограммы-функции fu

Приведем пример подпрограммы subroutine, вычисляющей n-факториал(n!). 
Подпрограммы типа subroutine не возвращают в себе никаких значений: они взаимодействуют с вызывающей программой только через передаваемые аргументы. В подпрограмме fu - два аргумента (параметра): n и f

write(*,*)' n='
read(*,*) n
call fu(n,fuctorial)
     !!!обращение к подпрограмме fu оператором call 
write(*,*) n,'!=',fuctorial 
end
subroutine fu(n, f)     
!заголовок подпрограммы fu
f=1
do i=1, n 
f=f*i
end do
return
end  
                            !конец подпрограммы fu

                    <<ранее             к оглавлению        далее>>

                      то же на С                        то же на Basic                 то же на Pascal

                аналог на JavaScript
Используются технологии uCoz