structures - if fortran
Fortran do bucle con goto interno (1)
Tengo un fragmento de Fortran77 que se ve así:
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
Cuando esto llega a la declaración GOTO 1301, ¿esto salta a la siguiente iteración del ciclo o sale del ciclo? Por lo que yo entiendo, la palabra clave return no hace nada, así que supongo que esto simplemente saldrá del ciclo y continuará la ejecución del código desde la etiqueta 1301, ¿es correcto?
Estoy traduciendo esto a C # y me pregunto si esto es equivalente:
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...
}
o si debería tener "continuar" en lugar de "devolver"?
Sí, la declaración GOTO 1301
hace que el programa salte a la siguiente iteración.
La DO label
, label CONTINUE
es una forma obsoleta de escribir un bloque DO ENDDO
más contemporáneo. En este caso, el ciclo iterará sobre las variables especificadas en la línea DO, y la label CONTINUE
línea label CONTINUE
sirve como un marcador de posición " ENDDO
".