在fortran 90之间做的同时和做的区别

时间:2014-06-11 14:19:45

标签: matlab fortran conventions do-while

在f90代码中,代码的以下部分

dowhile: do while <conditions>


 ....

end do dowhile 

我从未遇到过这样的循环,如果我省略“dowhile ... end dowhile”并简单地使用正常的“do while”循环,我无法理解会有什么区别。

这里有人可以帮我澄清这一点吗?

如果我必须将此循环转换为matlab,那么简单的matlab while循环是否足够?

非常感谢

1 个答案:

答案 0 :(得分:3)

好的,现在我想我得到了你的问题:

dowhile:语句为循环提供标签或名称,因此使用dowhile语句终止名为enddo的循环。您也可以为循环使用不同的名称:

mainloop: do while <conditions>
  ! ...
enddo mainloop

此标签是可选的,您可以将其保留。

评论提出了一个很好的观点:exitcycle使用标签。如果循环有标签,您可以提前exitcycle循环。这对嵌套循环特别有用:

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 - 循环。