70
NEXT
run
Pero no es probable que vayamos a introducir los 100 nombres de una vez, y además la forma
de presentación en la pantalla es muy desordenada. Tenemos que organizarnos mejor. En
primer lugar, antes de captar un nombre, vamos a librarnos de todo el texto superfluo que
tenemos en la pantalla:
45
CLS
¿Qué podemos hacer para decirle al ordenador que de momento ya no queremos introducir
más datos? Podemos detener el programa pulsando [ESC] dos veces, pero cuando volvamos a
teclear run perderemos todos los datos introducidos anteriormente.
Ésta es la solución. Cada vez que el programa capte un nuevo nombre, haremos que examine el
dato introducido para ver si consta de al menos un carácter o si, por el contrario, es la 'cadena
vacía'. Si lo es, haremos que suspenda la captación de datos. Añada lo siguiente:
55
IF
NOMBRE$(x)=""
80
PRINT
"Fin de la entrada de datos"
También necesitamos que el ordenador indique al usuario qué debe hacer para suspender la
introducción de datos. Añada, pues, la siguiente línea:
47
PRINT"Pulse [RETURN] para terminar"
Ahora vamos a escribir las instrucciones que exhiban en la pantalla la información almacenada.
Primero la lista completa:
90
FOR
x=1
TO
100
PRINT
NOMBRE$(x);"
110
NEXT
Otra vez nos ocurre que el programa no sabe dónde pararse y continúa hasta el centésimo
elemento. Esto tiene fácil arreglo:
95
IF
NOMBRE$(x)=""
120
PRINT
"Fin de la lista"
La línea 95 comprueba si NOMBRES(x) es la cadena vacía; si lo es, concluye la escritura de la
lista saltando a la línea 120.
Atendamos a los otros requisitos que habíamos formulado al idear el programa. Necesitamos
unas instrucciones que busquen en la lista un nombre introducido por el usuario. Escriba lo
siguiente:
130
INPUT
"Buscar
140
FOR
x=1
150
IF
INSTR(NOMBRE$(x),BUSCA$)=0
160
PRINT
NOMBRE$(x);"
170
END
180
NEXT
190
PRINT"No lo encuentro"
En la línea 150 hay una instrucción nueva: INSTR. Esta instrucción determina si la cadena literal
BUSCA$ (que es el nombre que estamos buscando, captado en la línea 130) está contenida en
NOMBRES(x). Si no lo está, INSTR genera el valor O, y entonces el programa salta a la línea 180
THEN
80
100
";TEL$(x)
THEN
120
";BUSCA$
TO
100
";TEL$(x)
Manual de Amstrad CPC 6128 (revisión 2008) - Página 100
THEN
180