fortran当型和直到型循环在互相转换时要注意什么问题?如果有一个当型循环,其判断结果为“一次 也不执行循环体”,那么应如何转换为直到型循环?
时间: 2024-10-19 08:16:32 浏览: 14
在Fortran语言中,当型循环(do...while...)和直到型循环(do...until...)都是用于控制程序反复执行一段代码直到满足某个条件为止的结构。在相互转换时需要注意以下几点:
1. 当型循环(do...while...)先执行一次循环体,然后检查条件是否满足。如果首次判断条件为假,则不会执行循环体。这与直到型循环正好相反,直到型循环先检查条件再执行。
2. 转换时,如果你有一个do...while...循环,且希望在不执行任何迭代的情况下达到同样的效果(即不执行循环体),你需要找到对应的直到型循环条件。在直到型循环中,你需要设置一个总是为真的条件(如`.true.`),并在循环体内添加一个跳过循环体的语句,比如`exit do`(退出当前循环)。
示例转换:
```fortran
! 当型循环 (不执行)
do i = 1, 10 ! 这里假设i初始值未赋值,因此不执行循环体
if (.false.) exit ! 直到型循环条件,这里永远为真,但实际上跳过了循环体
end do
! 直到型等效版本
do i = 1, 10 ! 因为条件始终为真,所以会执行10次
exit unless (.true.) ! 相当于if (.false.) exit,但在直到型循环内更合适
end do
```
阅读全文