function liefert einen Wert, subroutine erledigt etwas ohne Rückgabewert. Beide gehören ins Modul (module ... contains), damit der Compiler Aufrufe prüft. Die Parameter bekommen Absicht mit intent(in), intent(out) oder intent(inout); das fängt Fehler früh ab.
Ein Modul lädst du mit use modulname. Rekursion braucht recursive vor dem Namen.
module mathe
implicit none
contains
function quadrat(x) result(y)
real, intent(in) :: x
real :: y
y = x * x
end function quadrat
subroutine begruesse(name)
character(len=*), intent(in) :: name
print *, "Hallo, ", name
end subroutine begruesse
end module mathe
program haupt
use mathe
implicit none
call begruesse("Mia")
print *, quadrat(7.0)
end program hauptMerke
functionliefert einen Wert,subroutinenichtintent(in/out/inout)dokumentiert und prüft- Module sammeln Unterprogramme,
uselädt sie
Aufgabe
Schreibe eine Funktion, die die Fakultät berechnet (mit recursive).