2012-01-05 5 views
10

でループを実行します。これは、GOTO 1301ステートメントが当たるループの次の繰り返しに、このジャンプをしたり、それがループを抜けるんFortranは、私はこのようになりますFORTRAN77スニペットを持っている内部のgoto

DO 1301 N=NMLK-2,2,-1              
     Some code... 
     IF(NB1(N).EQ.50) GOTO 1300                
     Some code... 
     IF(BS(N).EQ.0.0) GOTO 1301             
     some code...                
     GOTO 1301                 
    1300 NW(M)=NB1(N)                
     Some code...                
    1301 CONTINUE 

? returnキーワードが何もしていない限り、ループを終了してラベル1301からコードを実行し続けると仮定します。

私はC#にこれを翻訳していますし、これが同等であれば疑問に思って:

for (N = NMLK; N >= 2; N--) 
{ 
    Some code... 
    if (NB1[N] == 50) 
     goto l1300; 
    Some code... 
    if (BS[N] == 0) 
     return; 
    Some code... 
    return; 
l1300: 
    NW[M] = NB1[N]; 
    Some code... 
} 

または私が代わりに「復帰」の「継続」を持っている必要がある場合は?

答えて

10

はい、GOTO 1301ステートメントは、プログラムを次の繰り返しにジャンプさせます。

DO label,label CONTINUEは、より現代的なDO ENDDOブロックを書き留めています。この場合、ループはDO線で指定された変数を反復処理し、label CONTINUE行は "ENDDO"プレースホルダとして機能します。

+0

ありがとうございました。これを絶対に明確にするために、ループの終了条件が満たされるまで、GOTO 1301ステートメントは実際にループの実行を続けますか? –

+0

はい。あなたのGOTO 1301は1301 CONTINUEに進みます。これはループが終了するまで繰り返されます。 – milancurcic

+0

優れています。ありがとう、とても助かりました。 –

関連する問題