1. 程式人生 > >Fortran中function,subroutine, interface和module的簡單使用

Fortran中function,subroutine, interface和module的簡單使用

程式碼執行在simply fortran2下,複製,貼上可直接執行看效果

!!!!!-------------------
!    Fortran中函式分兩類:子程式(subroutine)和自定義函式(function)。
!    自定義函式本質上就是一般數學上的函式,一般要傳遞自變數給自定義函式,返回函式值。
!    子程式不一定是這樣,可以沒有返值也可以多個返回值。
!    func能做到的事,sub一定能做到。
!    傳遞引數要注意型別的對應,這跟C是一樣的。
!!!!!-------------------

!!!!!!!!!
!    Module不是函式。它用於封裝程式模組,一般是把具有相關功能的函式及變數封裝在一起
!
。用法很單,但能提供很多方便,使程式變得簡潔,比如使用全域性變數不必每次都宣告一長串, ! 寫在odule裡呼叫就行了。Module一般寫在主程式開始之前。 !!!!!!!!! program helloworld use opModule ! 在主程式或函式中使用時,需要在宣告之前先寫上一行: ! use module_name. implicit none real(kind = 4):: a = 2.0, b = 3.0, add_result = 0.0 interface ! 宣告函式呼叫介面,sub無需宣告可直接呼叫 real(kind=4) function
add_func(a, b) implicit none real(kind=4) :: a, b end function add_func end interface ! 注意sub的呼叫方式 call subname(╬aram1, ...) call add_sub(a, b, add_result) Print *, "Hello World!", add_result, add_func(a, b) call prtHi() print*, M_add_func(2.3, 4.3), M_result
end program helloworld subroutine add_sub(a, b, add_result) implicit none real(kind=4) :: a, b, add_result add_result = a + b; end subroutine add_sub real(kind=4) function add_func(a, b) implicit none real(kind=4) :: a, b add_func = a + b end function add_func !!!!!! ! Module中有函式時必須在contains命令之後(即在某一行寫上contains然後下 ! 面開始寫函式)。並且module中定義過的變數在module裡的 ! 函式中可直接使用,函式之間也可以直接相互呼叫(包括主程式或其他包含module的子函式中), !module中的自定義函式在被呼叫時也不用先宣告。 !!!!!! module opModule real(kind = 4) :: M_result contains subroutine prtHi() implicit none print *, 'hello fortran, hello 2016.11.16 10:55' end subroutine prtHi real(kind=4) function M_add_func(a, b) implicit none real(kind=4) :: a, b M_result = a + b M_add_func = M_result end function M_add_func end module opModule