Manual de Basic Spectrum 48k. |
Capítulo 14
El juego de caracteresResumen
Las letras, dígitos, signos de puntuación, etc., que pueden aparecer en cadenas se denominan caracteres y constituyen el alfabeto, o juego de caracteres, que emplea el ZX Spectrum. La mayoría de estos caracteres son símbolos simples, pero hay algunos más, denominados tokens (términos simbólicos) que representan a palabras completas, tales como PRINT, STOP, <>, etc. Hay 256 caracteres y cada uno tiene un código entre 0 y 255. Hay una lista completa de ellos en el Apéndice A. Para la conversión entre códigos y caracteres, hay dos funciones CODE y CHR$. CODE se aplica a una cadena y proporciona el código del primer carácter en la cadena (o 0 si la cadena está vacía). CHR$ se aplica a un número y proporciona la cadena de caracteres única cuyo código es ese número. Este programa proporciona la impresión del juego completo de caracteres: 10 FOR a = 32 TO 255: PRINT CHR$ A;: NEXT a
En la parte superior puede ver un espacio, 15 símbolos y signos de puntuación, los diez dígitos, siete símbolos más, las mayúsculas, seis símbolos más, las minúsculas y cinco símbolos adicionales. Estos son todos (salvo £ y ©) tomados de un juego de caracteres, de gran uso, conocido como ASCII (que es la abreviatura de American Standard Codes for Information Interchange - Códigos normalizados americanos para intercambio de información); ASCII asigna también códigos numéricos a estos caracteres y estos son los códigos que utiliza el ZX Spectrum. El resto de los caracteres no forman parte del ASCII y son peculiares para el ZX Spectrum. Los primeros entre ellos son un espacio y 15 configuraciones de manchas negras y blancas. Se denominan los símbolos gráficos y pueden utilizarse para el dibujo de imágenes. Puede introducirlos a partir del teclado, con el empleo de lo que se llama modo de gráficos. Si pulsa GRAPHICS (CAPS SHIFT con 9), entonces, el cursor cambiará a G . Ahora, las teclas para los dígitos 1 a 8 darán los símbolos de gráficos; por sí mismas, proporcionan los símbolos dibujados en las teclas y con una tecla de cambio pulsada, dan el mismo símbolo pero invertido, esto es, el negro se hace blanco y viceversa. Prescindiendo de las teclas de cambio, el dígito 9 le lleva de nuevo al modo normal (L) y el dígito 0 es DELETE. Los dieciséis símbolos gráficos son los siguientes:
Después de los símbolos de gráficos, observará lo que parece ser otra copia del alfabeto de la A a la U. Son caracteres que puede redefinir usted mismo, aunque cuando la máquina se enciende por primera vez constituyen un conjunto de letras. Se denominan gráficos definidos por el usuario. Puede introducirlos desde el teclado pasando al modo de gráficos y utilizando luego las teclas de letras de A a U. Para definir un carácter nuevo, siga esta recomendación: defina un carácter para indicar PI.
Estos ocho números se almacenan en memoria, en ocho lugares, cada uno de los cuales tiene una dirección. La dirección del primer byte, o grupo de ocho dígitos, es USR "P" (P porque es lo que elegimos en (ii)), la del segundo es USR "P" + 1 y así sucesivamente, hasta el octavo, que tiene la dirección USR "P" + 7. USR es, en este caso, una función para convertir un argumento de cadena en la dirección del primer byte en memoria para el correspondiente gráfico definido por el usuario. El argumento de cadena debe ser un carácter único que puede ser el gráfico definido por el usuario, o la correspondiente letra (en mayúsculas o en minúsculas). Hay otro uso para USR, cuando su argumento es un número, que se tratará más adelante. Aun cuando no lo comprenda, el siguiente programa lo hará por usted:
Interrumpirá la introducción de datos (INPUT) ocho veces para permitirle teclear los ocho números BIN anteriores. Ha de teclearlos en el orden correcto, comenzando por la fila superior. La sentencia POKE almacena un número directamente en la posición de memoria, eludiendo los mecanismos normalmente utilizados por el BASIC. La opuesta de POKE es PEEK y nos permite examinar el contenido de una posición de memoria, aunque no altere realmente el contenido de esa posición. Se tratarán adecuadamente en el capitulo 28. Después de los gráficos definidos por el usuario vienen los 'tokens' (términos simbólicos). Habrá observado que no hemos impreso los primeros 32 caracteres con códigos 0 a 31. Estos son caracteres de control. No producen nada que pueda imprimirse y ya que no tienen efecto sobre la pantalla, o se emplean para controlar algo distinto de ésta se imprime ? para indicar que no los entiende. Se describen con más detalle en el Apéndice A. Tres que utiliza la televisión son los correspondientes a los códigos 6, 8 y 13; después de todo CHR$ 8 es el único que probablemente encuentre de utilidad. CHR$ 6 imprime espacios en exactamente la misma forma que una coma en una sentencia PRINT, por ejemplo: PRINT 1; CHR$ 6;2
hace lo mismo que PRINT 1,2
Evidentemente, esta no es una forma muy clara de utilizarlo. Una forma más sutil es:
CHR$ 8 es "retroceso": desplaza la posición de la impresión un espacio hacia atrás. Pruebe: PRINT "1234"; CHR$ 8; "5"
que imprime 1235. CHR$ 13 es "nueva línea": desplaza la posición de impresión al principio de la línea siguiente. En la televisión se utilizan también los correspondientes a los códigos 16 a 23; estos se explican en los capítulos 15 y 16. Todos los caracteres de control se indican en el Apéndice A. Con el empleo de códigos para los caracteres podemos ampliar el concepto de "ordenación alfabética" para cubrir las cadenas que contengan cualquier tipo de carácter no sólo letras. Si en lugar de pensar sobre la base del alfabeto habitual de 26 letras, utilizamos el alfabeto ampliado de 256 caracteres, en el mismo orden que sus códigos, el principio es exactamente el mismo. Por ejemplo, estas cadenas están en el orden alfabético del ZX Spectrum. (Observe la característica bastante singular de que las letras minúsculas van después de todas las mayúsculas; así, "a" va después de "Z"; también cuentan los espacios)
He aquí la regla para determinar en qué orden aparecen dos cadenas. Primero, comparar los primeros caracteres. Si son diferentes, entonces, uno de ellos tendrá su código inferior al del otro y la cadena a la cual pertenecen será la anterior (inferior) de las dos cadenas. Si son iguales, entonces, hay que pasar a la comparación de los caracteres siguientes. Si, en este proceso, una de las cadenas se acaba antes que la otra, entonces, esa cadena es la anterior; de cualquier otro modo, deben ser iguales. Las relaciones =, < , > , <= , >= y <> se utilizan tanto para cadenas como para números: < significa "va antes" y > significa "va después", por lo que
son ambas verdaderas. <= y >= actúan de la misma forma que lo hacen para números, de modo que: "La misma cadena" <= "La misma cadena"
es verdadera, pero "La misma cadena" < "La misma cadena"
Es falsa. Experimente lo anterior con el empleo del programa siguiente, que introduce dos cadenas y las pone en orden.
Observe cómo hemos de introducir c$ en la línea 20 cuando permutamos a$ y b$. LET a$ = b$: LET b$ = a$
no tendría el efecto deseado. El programa siguiente introduce los gráficos definidos por el usuario para mostrar las piezas de ajedrez:
Piezas de ajedrez.
Observe que 0 puede utilizarse en lugar de BIN 00000000. Cuando haya ejecutado el programa, examine las piezas pasando al modo de gráficos. Ejercicios
|
Manual de Basic Spectrum 48k. |