如何将以下代码转换为matlab?我对goto声明感到困惑。
do 57 i=1,10
statement 1
if(k .eq. nx) then
statement 2
go to 58
end if
57 continue
statement 3
58 continue
答案 0 :(得分:0)
这个Fortran Snippet的代码味道非常糟糕。
但这里有一些事情:
true
这里似乎是一个变量。 Fortran中true的正确值是.TRUE.
(或.true.
)。假设该变量始终为.TRUE.
,则可以非常轻松地重写代码:
statement 1
statement 2
就是这样。您的代码会立即跳出循环并超过statement 3
,因此每个语句只会执行一次。
但假设true
是一个必须在循环的每次迭代中重新计算的变量或表达式,这是一种更好的方法:
do i = 1, 10
statement 1
if (true) exit
end do
if (true) then
statement 2
else
statement 3
end if
现在,这仍假设true
是一个静态表达式,即它不会在调用之间改变它的值。
答案 1 :(得分:0)
使用GOTO命令不被认为是一个很好的程序编程。 请改用以下程序:
i=1;
t=true;
while (i<=10)&&t
statement1;
t=k~=nx;
i=i+1;
end
if t
statement2;
else
statement3;
end