para probar con el siguiente valor de x. Si el programa ha examinado sin éxito todos los
elementos de la lista, continúa en la línea 190, donde informa de lo que ha ocurrido. En cambio,
si encuentra el nombre, INSTR produce un valor mayor que O, lo que permite que el programa
pase de la línea 150 a la 160 para escribir el nombre y el número de teléfono y luego terminar
con la instrucción END de la línea 170.
Como ve, nuestro programa avanza muy deprisa, pero todavía nos queda mucho por hacer.
Meditemos un poco sobre los inconvenientes de este programa, empezando por el orden en
que funciona: primero capta la información, después la escribe completa en la pantalla, luego
busca un nombre concreto.
¿Qué ocurre si ... ?
Precisamente. ¿Qué ocurre si no queremos que los acontecimientos se produzcan en ese orden?
Podríamos querer consultar un teléfono que introdujimos ayer. O podríamos querer ampliar la
lista con otros nombres. Esto nos plantea nuevos problemas, para los que tenemos que
encontrar solución. Después de todo, en esto es en lo que consiste la programación. Ya hemos
dicho que BASIC es muy amable y nos permite rectificar e incluir nuevas instrucciones con gran
facilidad; pero un buen programador habría pensado en todo esto de antemano.
Otro grave inconveniente del programa consiste en que las listas quedan almacenadas solamente
en la memoria del ordenador, la cual se borra cada vez que se apaga el ordenador. De poco nos
serviría este programa si tuviéramos que escribir todos los datos cada vez que lo ejecutásemos;
así pues, necesitamos que el programa pueda grabar los valores de los elementos de NOMBRE$
y TEL$ antes de que apaguemos el ordenador, y también que pueda cargar los datos cada vez
que lo ejecutemos.
Soluciones
El primero de los problemas mencionados (el del orden de ejecución) se resuelve haciendo que
el programa dé la posibilidad de elegir entre las funciones que sabe realizar. De un programa de
este tipo se dice que está 'controlado por menú' pues, en efecto, ofrece un menú de opciones
de entre las cuales se elige la deseada. Si alguna vez ha sacado dinero de un cajero automático,
ya ha utilizado un programa de ordenador controlado por menú. Añadamos un menú a nuestro
programa:
32
PRINT
"1. Introd. datos"
33
PRINT
"2. Listado"
34
PRINT
"3. Busqueda"
35
PRINT
"4. Grabar datos"
36
PRINT
"5. Cargar datos"
37
INPUT
"Elija una opcion (1-5)
38
ON el GOSUB
85
RETURN
125
RETURN
170
RETURN
200
RETURN
Hemos hecho que el programa escriba la lista de opciones y que capte la elección del usuario
mediante una instrucción INPUT para asignarla a la variable el. La instrucción ON el GOSUB de
la línea 38 funciona de la siguiente forma: si el=1, invoca la subrutina de la línea 40; si el=2,
invoca la subrutina de la línea 90, etc.
40,90,130
Manual de Amstrad CPC 6128 (revisión 2008) - Página 101
";el