在f90代码中,代码的以下部分
dowhile: do while <conditions>
....
end do dowhile
我从未遇到过这样的循环,如果我省略“dowhile ... end dowhile”并简单地使用正常的“do while”循环,我无法理解会有什么区别。
这里有人可以帮我澄清这一点吗?
如果我必须将此循环转换为matlab,那么简单的matlab while循环是否足够?
非常感谢
答案 0 :(得分:3)
好的,现在我想我得到了你的问题:
dowhile:
语句为循环提供标签或名称,因此使用dowhile
语句终止名为enddo
的循环。您也可以为循环使用不同的名称:
mainloop: do while <conditions>
! ...
enddo mainloop
此标签是可选的,您可以将其保留。
评论提出了一个很好的观点:exit
或cycle
使用标签。如果循环有标签,您可以提前exit
或cycle
循环。这对嵌套循环特别有用:
outer: do while <condition>
do i=1,10
if <some condition> then
cycle ! cycles the inner loop
elseif <some other condition> then
cycle outer ! cycles the outer loop
endif
enddo ! i
enddo outer
如果使用此类构造,则无法轻松删除循环名称。
我不认为Matlab允许标记循环,但我不是Matlab的专家。
原始答案:
好吧,do while
构造本质上是一个无限循环,如果<conditions>
为真则终止。
conv = .false.
do while ( conv .eqv. .true. )
! ... do stuff
enddo
对应
conv = .false.
do
if ( conv .eqv. .true. ) exit
! ... do stuff
enddo
这也应该在Matlab中可行。 Matlab语法为(taken from here):
while expression
statements
end
作为旁注:我会将简单 do
- 循环定义为有限循环,但是......
do i=1,10
! ... do stuff
enddo ! i
此构造不等同于do while
- 循环。