codecamp

Fortran 多重循环下的 exit 与 goto 语句

一般来说在复杂的行列式计算中经常会遇到多重循环,这与以上 goto 和 exit 语句的场景稍显不同。goto 语句的跳转行因为可以指定任何一行,所以不会被多重循环影响,可以直接跳转到多重循环之外或者某一重循环之中的某一行,如示例 17 所示。而 exit 语句如果还是按照上面的用法每次只能退出一重循环,碰到需要同时退出多重循环时就比较麻烦。所以 Fortran 语言为了尽量避免这一问题,就给 exit 语句添加一种类似于 goto 语句指示跳转行的方法 exit out,如示例 18 所示。

!!! 示例 17
    sum = 0
do i = 1, 10
do j = 1, 10
sum = sum + i + j
if (sum > 10) go 10
enddo
enddo
10 print *, i, j, sum ! 输出 i 的值为 1,j 的值为 4,sum 的值为 11

!!! 示例 18
sum = 0
out: do i = 1, 10
do j = 1, 10
sum = sum + i + j
if (sum > 10) exit out
enddo
enddo out
print *, i, j, sum ! 输出 i 的值为 1,j 的值为 4,sum 的值为 11

这里需要注意的是,当使用 ​exit out​ 方法时,out 是对应于循环的一个别名,需要同时在 do 前和 enddo 后添加 out 的声明。当然,这里的别名也可以使用其他符合规则的字符串,只要不与同一个代码文件中的其他别名或变量名等相同即可。


Fortran cycle 语句
Fortran 定义和调用
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }