Tengo un fragmento Fortran77 que tiene este aspecto:Fortran hacer lazo con Goto interna
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 golpea la sentencia GOTO 1301, hace este salto a la siguiente iteración del bucle o lo hace salir del bucle ? Por lo que yo entiendo, la palabra clave return no hace nada, así que supongo que esto saldrá del bucle y continuará la ejecución del código desde la etiqueta 1301, ¿es correcto?
estoy traduciendo esto a C# y estoy preguntando 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 "retorno"?
Gracias. Para ser absolutamente claros al respecto, las instrucciones GOTO 1301 continuarán en realidad la ejecución del ciclo hasta que se cumpla la condición para la terminación del ciclo. –
Sí. Su GOTO 1301 lo lleva a 1301 CONTINUAR, que se repetirá hasta la terminación del ciclo. – milancurcic
Excelente. Muchas gracias, fue muy útil. –