2012-01-05 2 views
10

와 루프 수행이의 GOTO 1301 문 안타 루프의 다음 반복이 점프를 수행하거나 루프를 종료 않습니다포트란 내가이처럼 보이는 포트란 코드 조각이 내부 고토

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

우수. 고마워요. 매우 도움이되었습니다. –