do循環(huán)結(jié)構(gòu)使得一個(gè)語句或一系列語句,以進(jìn)行迭代,當(dāng)一個(gè)給定的條件為真。
do循環(huán)的一般形式是:
do var = start, stop [,step] ! statement(s) … end do
這里,
例如:
! compute factorials do n = 1, 10 nfact = nfact * n ! printing the value of n and its factorial print*, n, " ", nfact end do
這里是控制 do 循環(huán)結(jié)構(gòu)的流程:
初始步驟首先被執(zhí)行,并且僅一次。這一步可以聲明和初始化任何循環(huán)控制變量。在我們的例子中,變量var被初始化開始的值。
接下來,計(jì)算條件。如果為true,則執(zhí)行循環(huán)體。如果是假,則循環(huán)體不執(zhí)行,只是在循環(huán)之后流量控制跳轉(zhuǎn)到下一個(gè)語句。在我們的情況下,該條件就是在變量var達(dá)到其最終值stop。
所述循環(huán)體執(zhí)行后,控制流跳轉(zhuǎn)回至increment 語句。這個(gè)語句可以更新循環(huán)控制變量var。
條件現(xiàn)在重新評(píng)估。如果為true,循環(huán)執(zhí)行的過程重復(fù)(循環(huán)體,再遞增一步,然后再條件)。直到條件為假,循環(huán)終止。
示例 1
這個(gè)例子將輸出數(shù)字11到20:
program printNum implicit none ! define variables integer :: n do n = 11, 20 ! printing the value of n print*, n end do end program printNum
讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:
11 12 13 14 15 16 17 18 19 20
實(shí)例 2
這個(gè)程序計(jì)算數(shù)字1到10的階乘:
program factorial implicit none ! define variables integer :: nfact = 1 integer :: n ! compute factorials do n = 1, 10 nfact = nfact * n ! print values print*, n, " ", nfact end do end program factorial
讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:
1 1 2 2 3 6 4 24 5 120 6 720 7 5040 8 40320 9 362880 10 3628800