Solución:
GOTO
simplemente salta a otra línea, GOSUB
realiza un seguimiento de su procedencia (en una pila, presumiblemente), por lo que cuando el intérprete encuentra un RETURN
, vuelve al último lugar GOSUB
fue llamado.
Las otras respuestas proporcionadas dan una buena explicación sobre cómo usar GOTO y GOSUB, pero hay una diferencia importante en cómo se procesan. Cuando se ejecuta un GOTO, comienza en la parte superior de la pila y recorre todas las líneas de código hasta que encuentra la línea que se supone que debe GOTO. Luego, si usa otra instrucción GOTO para regresar, nuevamente va a la parte superior de la pila y lo hojea todo hasta que llega a la siguiente ubicación.
GOSUB hace casi lo mismo que GOTO, pero recuerda dónde estaba. Cuando usa la instrucción RETURN, simplemente salta hacia atrás sin ir primero a la parte superior de la pila y hojear todo nuevamente, por lo que es mucho más rápido. Si desea que su código se ejecute rápidamente, debe colocar sus subrutinas más llamadas en la parte superior de la pila y usar GOSUB / RETURN en lugar de GOTO.