如何將以下代碼轉換爲matlab?我對goto聲明感到困惑。將fortran代碼轉換爲matlab
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
如何將以下代碼轉換爲matlab?我對goto聲明感到困惑。將fortran代碼轉換爲matlab
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
使用GOTO命令不被視爲一種很好的過程編程。 使用下列程序來代替:
i=1;
t=true;
while (i<=10)&&t
statement1;
t=k~=nx;
i=i+1;
end
if t
statement2;
else
statement3;
end
這個Fortran代碼片段有一個非常糟糕的代碼味道。
但這裏有幾件事情:
true
在這裏似乎是一個變量。 Fortran中的正確值爲.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
是一個靜態表達,那就是它不會改變它在呼叫之間的價值。
break'謝謝你的解決方案..其實'true'是返回bool值的邏輯表達式。 –
看看他之前的版本,他在'if'中有一個有效的邏輯語句。他將其編輯爲「true」可能僅僅是他缺乏Fortran知識的人爲因素,沒有意識到這不是我們如何說「真」。 – casey
MATLAB沒有'goto',但有一個小moficitation和使用'你應該能夠達到類似的效果 – gregswiss