W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
子程序的一般結(jié)構(gòu)如下所示:
!!! 不帶初始化變量的子程序
subroutine subr1
implicit none
real a, b
integer i
......
......
end subroutine subr1
!!! 帶初始化變量的子程序
subroutine subr2(x, m, y, n)
implicit none
real x, y, a, b, z(10)
integer m, n, i, k
......
......
end subroutine subr2
!!! 調(diào)用子程序
real z
integer m
call subr1
m = 21
call subr2(10.0, 100, z, m*5+1)
子程序是以 subroutine
開頭、以 end subroutine
結(jié)尾,其中第一行與一般主程序一樣需要添加一行 implicit none
的聲明。
值得注意的是,子程序可以在主程序中被任意調(diào)用若干次,但同時(shí)也是依賴主程序存在的,即只有子程序的代碼無法被執(zhí)行。
從上面的例子可以看出,無論是初始化還是沒初始化變量,子程序都可以在主程序中被調(diào)用執(zhí)行。只不過帶初始化變量的子程序應(yīng)該在被調(diào)用時(shí)給定相應(yīng)的變量,否則無法正常被調(diào)用。
如下所示是一個(gè)完整包含主程序和子程序的代碼示例。主程序是以 program 開頭、以 end program 結(jié)尾的代碼片段。子程序代碼不被包含在主程序代碼片段中,但與主程序在同一文件中。
子程序可以位于主程序代碼片段之前或之后,不會影響在主程序中的正常調(diào)用。
program stest1
implicit none
real x, y
x = 5.0
y = 100.0
call subr(x, y, 10)
print *, x, y
end program stest1
subroutine subr(x, y, n)
implicit none
real x, y
integer n
x = n
y = y*x
end subroutine subr
子程序的調(diào)用和主程序的執(zhí)行順序是:主程序 → 子程序 → 主程序。
由于子程序被調(diào)用時(shí)實(shí)際上不會與其他正在被執(zhí)行的子程序相互干擾,所以可以在一個(gè)主程序中重復(fù)調(diào)用同一子程序。如果在子程序中需要根據(jù)某個(gè)條件判斷中斷退出,可以如下所示利用 ?if
? 語句和 ?return
? 關(guān)鍵字來返回主程序。
subroutine subr(x, y, m, n)
implicit none
real x, y
integer m, n
......
if (m < n) return
......
end subroutine subr
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: