2012-01-05 24 views
10

ile döngü yapın: Bu, GOTO 1301 ifadeyi vurur döngünün sonraki yineleme bu sıçramayı yapar yoksa döngü çıkmak yokFortran ben şöyle bir Fortran77 pasajı var iç 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 

? Geri dönüş anahtar kelimesinin hiçbir şey yapmadığını anladığım kadarıyla, bunun yalnızca döngüden çıkacağını ve 1301 etiketinden kod yürütmeye devam edeceğini varsayıyorum, doğru mu?

C# için bu çeviri yapıyorum ve bu eşdeğer olup olmadığını merak ediyorum:

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... 
} 

veya gerekenden eğer yerine "dönüş" "devam"?

cevap

10

Evet, GOTO 1301 yönergesi, programın sonraki yinelemeye atlamasını sağlar. DO label, label CONTINUE, daha güncel bir DO ENDDO blok yazmanın eski bir yoludur. Bu durumda döngü, DO satırında belirtilen değişkenler üzerinde yinelemeli ve label CONTINUE hattı "ENDDO" yer tutucusu olarak işlev görür.

+0

Teşekkürler. Sadece bu konuda kesinlikle açık olmak gerekirse, GOTO 1301 ifadeleri, döngünün sona ermesi koşulu karşılanana kadar döngü yürütmeyi sürdürecek? –

+0

Evet. GOTO 1301'iniz, döngünün sonlandırılmasına kadar tekrarlanacak olan 1301 CONTINUE'a götürür. – milancurcic

+0

Mükemmel. Çok teşekkürler, bu çok yardımcı oldu. –