- 第一章 Fortran 语言程序设计初步
- 第二章 改变程序流程
- 第三章 循环结构
- 第四章 数据结构
- 第五章 数组
- 第六章 过程和模块
- 第七章 输入输出和文件
3.2.1 无循环变量的 DO 构造
a) 一般形式
这种 DO 构造形式非常简单,一般形式为:
[构造名:] DO
块
END DO
不带循环控制变量的 DO 构造控制机制为:进入 DO 构造体后,从 DO 语句下面第一句执行起顺次执行到 END DO 前的最后一句,再返上来从 DO 语句下面第一句执行起,重复执行整个 DO 块。如此反复执行 DO 块,其间如遇到 EXIT 语句,就停止执行 DO 块,退出循环,转向执行 END DO 下面的语句。对于不带控制变量的 DO 构造,DO 块中必须有 EXIT 语句,使它停止循环,否则循环将无休无止地一直进行下去,形成死循环。
DO 构造也可在自身中再嵌 DO 构造,例如:
FIRST: DO
块 1 的第一部分
SECOND: DO
块 2
END DO SECOND
块 1 的第二部分
END DO FIRST
b) EXIT 语句
许多实际问题中无法预先给定循环次数,而是只给出一个条件,满足此条件时就继续执行循环体,否则退出循环,故有条件循环时循环次数不是固定的。除了可以用 GOTO 语句跳出循环外(非结构化方法),F90 还给出了其它用于条件循环方式的语句。
EXIT 语句的作用是停止循环,使控制退出循环结构,因此又称出口语句。它的一般形式是:EXIT [DO 构造名]。执行 EXIT 语句,其功能是导致循环终止。如果语句引用了 DO 构造名,则它属于该构造,否则属于它所出现的最内层 DO 构造。对于多层嵌套的 DO 构造,尤为需要指明是从哪一个构造名的 DO 构造中退出。如当 EXIT 指明从第三层结构退出,则第三层与第三层内各层嵌套的 DO 构造都将被停止执行。
单独使用将导致无条件地终止循环,没有实用意义。为了控制 DO 结构在满足某种条件时停止循环,通常将 EXIT 语句与 IF 语句结合使用,即在 DO 构造内使用:IF(逻辑表达式) EXIT。当逻辑表达式为真时,EXIT 语句被执行,循环终止,否则循环将继续进行。
例:do;if((input.eq.'n').or.(input.eq.'y')) exit
write(*,'(a)') 'Enter y or n:';read(*,'(a)') input
end do
例:一个猜数游戏。用随机数产生器产生 1-10 之间的一个整数,你猜它,如果猜得太大或太小都会提示,猜对了结束。 [e_321_01.f90]
例:求级数的前 n 项和,但当某项绝对值≤10-5时,虽未满 n 项,也因满足精度而不再加入下一项。 [e_321_02.f90]
a) CYCLE 语句
CYCLE 语句的一般形式为:CYCLE [DO 构造名]。CYCLE 语句的功能是在循环中跳过它下面那部分的 DO 块,重新返回到块的第一个语句开始执行。运用 CYCLE 语句,可以在执行循环中某一次迭代时不执行下面的部分语句,使 DO 结构更为灵活。
CYCLE 语句与 EXIT 语句一样属于特定的 DO 构造。如果语句引用了 DO 构造名,则它属于该构造,否则属于它所出现的最内层 DO 构造。 [e_321_03.f90]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论