Sección 5
Subrutinas
Temas tratados:
GO SUB, RETURN
A veces nos encontramos con que diferentes partes del programa tienen que realizar funcio
nes bastante similares, y esto fácilmente puede llevarnos a escribir las mismas instruccio
nes varias veces con diferente número de línea. Afortunadamente, en BASIC disponemos
de un recurso que nos permite evitar este despilfarro: podemos escribir las instrucciones
una sola vez, en lo que denominamos una subrutina, y luego invocar la subrutina siempre
que sea necesario.
El control de las subrutinas se realiza con dos sentencias:
GO SUB y RETURN.
Para in
vocar una subrutina se da una orden del tipo:
,.
GO SUB
xxx
donde
xxx
es el número de la primera línea de la subrutina. El mecan
ismo
es similar al
de
GO TO
xxx,
con la diferencia de que el ordenador recuerda dónde estaba la sentencia
GO SUB y
así sabe a dónde tiene que volver cuando termine de ejecutar la subrutina.
(Por si le interesa saberlo, el +3 «recuerda» en qué punto del programa estaba la sentencia
GO SUB
porque almacena la dirección de retorno en la pila de
GO SUB).
Cuando el ordenador encuentra la orden
RETURN
sabe que ahí termina la subrutina; entonces recuerda dónde estaba la sentencia
GO SU
B
(tomando de la pila la dirección de retorno)
y
continúa a partir de la sentencia siguiente.
Como ejemplo, echemos un vistazo de nuevo al programa de adivinar números. Reescrí
balo de la siguiente forma:
10 REM Programa de adivinar números, reorganizado
20 INPUT "Introduzca un número secreto",a: CLS
30 INPUT "Adivine el número",b
40 IF b=a THEN PRINT "¡Correcto!": STOP
50 IF b-ca THEN GO SUB 100
60 IF b>a THEN GO SUB 100
70 GO TO 30
100 PRINT "Vuelva a intentarlo"
110 RETURN
Sección 5. Subrutinas
73