do循环结构使得一个语句或一系列语句,以进行迭代,当一个给定的条件为真。
语法
do循环的一般形式是:
do var = start, stop [,step] ! statement(s) … end do
这里,
- 循环变量var应该是一个整数
- start 是初始值
- stop 是最终值
- 步骤step是递增,如果此被省略,则变量var以单位增加
例如:
! 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