Skip to content

循环

目录

DO 循环

DO 循环和 C/C++ 语言中的 for 循环是相近的

Fortran
do counter=2, 3, 2
  statement
end do

代码解释:与 do 同一行中的 counter 为循环的内层变量,第二个数字代表边界条件,第三个数字代表步长。对应的 C/C++ 语言代码如下:

cpp
for (counter = 2; counter >= 3; counter += 2) {
  statement
}

Fortran 会根据 step 的正负来判断循环的方向——step 为正时,循环方向为从小到大,边界条件为上界;step 为负时,循环方向为从大到小,边界条件为下界。同时,不允许 step 为 0,不写 step 时,默认为 +1。循环体中不能有修改循环计数器的值。在循环体中修改边界条件时,新的边界条件不会生效,原因在于在运行时,边界条件只会被计算一次,即读到内存之后就以数的类型存在,而非变量的形式存在。

Fortran
do counter=2, 3, -2
  loop statement
end do

此时对应的 C/C++ 语言代码如下

cpp
for (counter = 2; counter <= 3; counter -= 2) {
  statement
}

do 后仅有一个数字时,表示标签,而非循环的边界条件

Fortran
100 counter=2, 3, 2

do 100
  statement
end do

DO WHILE 循环

DO WHILE 循环和 C/C++ 语言中的 while 循环是相近的

Fortran
do while (logical expression)
  loop statement
end do

当逻辑判断结果为 .true. 时,循环继续,当逻辑判断结果为 .false. 时,循环结束。此时,可以通过控制循环来实现无限循环:

Fortran
do while (.true.)
  loop statement
end do

当然,可以直接使用 do 循环来实现无限循环:

Fortran
do
  loop statement
end do

循环相关命令

CYCLE 命令

CYCLE 命令用于跳过当前循环的剩余部分,继续执行下一次循环,与 C/C++ 语言中的 continue 语句相似,通常与逻辑判断连用

Fortran
do counter=2, 3, 2
  loop statement1
  if (counter == 2) cycle
  loop statement2
end do

在此例中,当 counter == 2 时,会跳过 loop statement2,继续执行下一次循环,但 loop statement1 仍然会被执行。

EXIT 命令

EXIT 命令用于退出当前当层循环,与 C/C++ 语言中的 break 语句相似,通常与逻辑判断连用

Fortran
do counter=2, 3, 2
  loop statement1
  if (counter == 2) exit
  loop statement2
end do

在此例中,当 counter == 2 时,会退出当前循环,但 loop statement1 仍然会被执行。

基于 CC BY-NC-SA 4.0 许可发布