Fortran 90 oktatóanyag >> Függvények

8. Függvények

  1. Általános felépítés
  2. Belső függvények
  3. Külső függvények

b) Belső függvények

A belső függvények a főprogramon (vagy egy modulon) belül a CONTAINS parancs után következnek.
A belső függvények a főprogram változóit (azaz a globális változókat) és azok értékeit ismerik és megváltoztathatják. Ez akkor okozhat gondot, ha nem szeretnénk azokat megváltoztatni. Ezért ajánlatos elkerülni a globális változónevek használatát a belső függvényekben.

Belső függvény a főprogramban
Példa: containsfuggveny.f90 Az a változó értékét megnöveli 2-vel, majd kiírja a képernyőre:
program containsfuggveny
 implicit none
 real :: a, eredmeny

 a=2.

 eredmeny = novel(a) ! a novel fuggveny meghivasa
 write(*,*) 'a=',a,' kettovel megnovelve: ',eredmeny


contains

 real function novel(x)
 implicit none
  real, intent(in) :: x
   novel=x+2.0  ! a 2-vel megnovelt erteket kapja meg a fuggveny.
                ! Ez az ertek a fenti meghivaskor az 'eredmeny'
                ! valtozoba kerul.
 end function novel

end program containsfuggveny
Fordítása és futtatása:
gfortran containsfuggveny.f90 -o containsfuggveny.exe
./containsfuggveny.exe
Az eredmény:
 a=   2.00000000      kettovel megnovelve:    4.00000000

Belső függvény modulban
Példa: modulfuggveny.f90
module fuggvenymodul
 implicit none
 contains
  real function novel(x)
  implicit none
   real :: x
    novel=x+2.0 ! a 2-vel megnovelt erteket kapja meg a fuggveny.
                ! Ez az ertek az alabbi meghivaskor az 'eredmeny'
                ! valtozoba kerul.
  end function novel
end module fuggvenymodul


program modulfuggveny
 use fuggvenymodul
 implicit none
 real :: a, eredmeny

 a=2.

 eredmeny = novel(a) ! a novel fuggveny meghivasa
 write(*,*) 'a=',a,' kettovel megnovelve: ',eredmeny

end program modulfuggveny
Fordítása és futtatása:
gfortran modulfuggveny.f90 -o modulfuggveny.exe
./modulfuggveny.exe
Az eredmény hasonló:
 a=   2.00000000      kettovel megnovelve:    4.00000000


Bővebb információ a modulokról (angol nyelven): http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/chap06/mod-syntax.html



<< Előző | Következő >>

Oldal tetejére | Vissza a főoldalra