Fortran do 循环

2023-12-29 14:55 更新

Fortran 的最简单的循环语句称为 do 语句,其形式如下所示:

!!! 不设置步长,默认为 1
do 整数型变量 = 起始值, 结束值
......
......
enddo

!!! 示例 1
integer a(10)
do n = 1, 10 ! 计算 1,2,3,4,5,6,7,8,9,10
a(n) = n
enddo

!!! 设置步长,可以设置正整数和负整数,不能为 0
do 整数型变量 = 初始值, 结束值, 步长
......
......
enddo

!!! 示例 2
integer a(5)
do n = 1, 10, 2 ! 计算 1,3,5,7,9
a(nint(n/2)) = n
enddo

!!! 示例 3
integer a(5)
do n = 10, 1, -2 ! 计算 10,8,6,4,2
a(n/2) = n
enddo

 在使用 do 循环语句的时候,我们需要注意在结束循环语句后循环条件变量 n 仍然存在。如果后续计算中还使用到了相同变量,务必要进行重新初始化赋值,否则可能造成数据上的污染。我们可以拿示例 3 举个例子,当循环结束后,n 的值其实为 0 (不是 2)。虽然此时的 n 值并不满足循环继续的条件,但是已经完成了对步长的迭代计算,所以如果后续还是使用相同的变量 n,我们期待的 n 初始值与循环结束后的 n 值就可能不一样。建议在将某个变量设置为循环条件变量之后,循环外尽量不要使用同一个变量,从而避免这一可能存在的干扰。

do 循环语句实际上也可以存在嵌套,即一个 do 循环语句包含了其他的 do 循环语句,如下示例 4 所示。其中需要注意的是,在多重 do 循环语句中,循环语句的条件变量不要使用相同的,否则很可能出现了我们意料之外的问题。建议同一个 do 循环嵌套语句中使用不同的条件变量。如果不在同一个 do 循环嵌套语句中,使用相同的条件变量产生问题的可能性比较小。

!!! 示例 4
integer a(10)
integer b(10, 5)
do n = 1, 10
a(n) = n
do m = 1, 10, 2
b(n, nint(m/2)) = a(n) + m
enddo
enddo

其实在 do 循环中所指定的条件变量的初始值、结束值及步长也可以用已有值的变量来代替,如下所示。

integer m, sum
m = 10
sum = 0
do n = 1, m
sum = sum + n
enddo
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号