do迴圈結構使得一個語句或一系列語句,以進行疊代,當一個給定的條件為真。
do迴圈的一般形式是:
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 迴圈結構的流程:
初始步驟首先被執行,並且僅一次。這一步可以宣告和初始化任何迴圈控制變數。在我們的例子中,變數var被初始化開始的值。
接下來,計算條件。如果為true,則執行迴圈體。如果是假,則迴圈體不執行,只是在迴圈之後流量控制跳轉到下一個語句。在我們的情況下,該條件就是在變數var達到其最終值stop。
所述回圈體執行後,控制流跳轉回至increment 語句。這個語句可以更新迴圈控制變數var。
條件現在重新評估。如果為true,迴圈執行的過程重複(迴圈體,再遞增一步,然後再條件)。直到條件為假,迴圈終止。
範例 1
這個例子將輸出數位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
讓我們編譯和執行上面的程式,這將產生以下結果:
11 12 13 14 15 16 17 18 19 20
範例 2
這個程式計算數位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
讓我們編譯和執行上面的程式,這將產生以下結果:
1 1 2 2 3 6 4 24 5 120 6 720 7 5040 8 40320 9 362880 10 3628800