Manual de Basic Spectrum 48k.

Capítulo 7

Expresiones

Resumen

  • Operaciones: +, -, *, /.
  • Expresiones, notación científica, nombres de variables.

Ya se han visto algunas de las formas en que el ZX Spectrum puede calcular con números. Puede realizar las cuatro operaciones aritméticas +, -, * y / (recuerde que * se utiliza para la multiplicación y / se emplea para la división) y puede determinar el valor de una variable, dado su nombre.

El ejemplo:

LET TAX=suma*15/100

proporciona apenas una indicación del muy importante hecho de que pueden combinarse estos cálculos. Dicha combinación, como suma*15/100, se denomina una expresión, que es una forma abreviada de comunicar al ordenador que haga varios cálculos, uno después del otro. En nuestro ejemplo, la expresión suma*15/100 significa "busque el valor de la variable denominada 'suma', multiplíquele por 15 y divida por 100.

Si todavía no lo ha hecho, recomendamos que examine el fascículo de introducción para ver como el ZX Spectrum trabaja con los números y el orden en que evalúa el ordenador las expresiones matemáticas.

Para recapitular:

Las multiplicaciones y las divisiones se efectúan primero. Estas operaciones tienen una prioridad más alta que la suma y la resta. En relación entre ellas, la multiplicación y la división tienen la misma prioridad, lo que significa que ambas operaciones se efectúan en orden de izquierda a derecha. Una vez realizadas, se sigue con las sumas y las restas que también tienen la misma prioridad y que, por tanto, se efectúan en orden de izquierda a derecha.

Aunque todo lo que realmente necesita saber es si una operación tiene una prioridad más alta o más baja que otra, el ordenador realiza esto con la asignación de un número entre 1 y 16 para representar la prioridad de cada operación: * y / tienen prioridad 8 y + y - tiene prioridad 6.

Este orden de cálculo es absolutamente rígido, pero puede eludirlo con el empleo de paréntesis: cualquier cosa entre paréntesis se evalúa primero y luego se trata como un número único.

Las expresiones son útiles porque, siempre que el ordenador esté esperando que usted le introduzca un número, puede darle una expresión en lugar de tal número y el ordenador dará la solución. Las excepciones a esta regla son tan pocas que se establecerán explícitamente en cada caso.

Puede reunir tantas cadenas (o variables de cadena) como quiera en una sola expresión y si lo requiere, incluso puede utilizar paréntesis.

Realmente tenemos la obligación de decirle lo que puede y lo que no puede utilizar como nombre de variables. Como ya dijimos, el nombre de una variable de cadena ha de ser una sola letra seguida por $ y el nombre de la variable de control de un bucle FOR-NEXT debe ser una sola letra, pero los nombres de las variables númericas ordinarias son mucho más libres. Puede utilizar ya sean letras o dígitos, siempre y cuando comiencen por una letra. Puede poner espacios si con ellos se facilita la lectura, pero n han de considerarse como parte del nombre. Asimismo, no se establece ninguna diferencia para el nombre si lo escribe en mayúsculas o en minúsculas.

Damos algunos ejemplos de los nombres de variables que están permitidos:

  • x
  • t42
  • Este nombre es tan largo que nunca será capaz de volverlo a escribir sin cometer un error
  • ahora somo seis
  • aHOrasoMosSEIS (estos dos últimos nombres se consideran los mismos y se refieren a la misma variable.)

Lo que sigue no se permite como nombres de variables:

  • 2001 (comienza con un dígito)
  • 3 osos (empieza con un dígito)
  • M*A*S*H (* no es una letra ni un dígito)
  • Segado-Angel (- no es una letra ni un dígito)

Las expresiones númericas pueden representarse por un número y un exponente (una vez más, haga referencia al fascículo de introducción). Pruebe lo siguiente para constatarlo:

PRINT 2.34e0
PRINT 2.34e1
PRINT 2.34e2

y así sucesivamente, hasta

PRINT 2.34e15

Observará que, después de unos instantes, el ordenador comienza también a utilizar la notación científica. Esta es la razón por la que no más de catorce caracteres pueden emplearse para escribir un número. Análogamente, pruebe:

PRINT 2.34e-1
PRINT 2.34e-2

y así sucesivamente.

PRINT da solamente ocho dígitos significatios de un número. Pruebe:

PRINT 4294967295,4294967295-429e7

Ello prueba que el ordenador puede retener los dígitos de 4294967295, aún cuando no esté preparado para visualizarlos todos a la vez.

El ZX Spectrum utiliza la aritmética de coma flotante, lo que significa que mantiene separados los dígitos de un número (su mantisa) y la posición del punto (el exponente). Ello no es siempre exacto, incluso para números enteros. Teclee:

PRINT 1e10+1-1e10,1e10-1e10+1

Los números se calculan con una precisión de 9 1/2 dígitos, por lo que 1e10 es demasiado grande para ser almacenado con una precisión absolutamente correcta. La inexactitud (realmente casi 2) es superior a 1 y por ello los números 1e10 y 1e10+1 son para el ordenador aparentemente iguales.

Para un ejemplo todavía más peculiar, teclee:

PRINT 5e9+1-5e9

En este caso,la inexactitud en 5e9 es sólo de casi 1 y el 1 a añadir se redondea, por tanto, a 2. Los números 5e9+1 y 5e9+2 son para el ordenador aparentemente iguales.

El mayor número entero que puede obtenerse con exactitud completa es 2³² -1 (o 4.294.967.295).

La cadena "" sin ningún carácter en absoluto se denomina la cadena nula o vacía. Recuerde que los espacios son significativos y una cadena vacía no es lo mismo que una que no contenga nada sino espacios.

Pruebe:

PRINT "No has acabado "El Quijote" todavía?"

Cuando pulse ENTER, obtendrá el signo de interrogación parpadeante que indica que hay un error en algún lugar de la línea. Cuando el ordenador encuentra las dobles comillas al principio de "El Quijote", imagina que ellas marcan el final de la cadena "No has acabado" y, entonces, no puede determinar lo que significa "El Quijote".

Hay un subterfugio para superar este inconveniente: siempre que requiera escribir un símbolo de comillas de cadena en la parte media de una cadena, debe escribirlo por dos veces, como sigue:

PRINT "No has acabado ""El Quijote"" todavía?"

Como puede observar por lo que se imprime en la pantalla, cada doble comilla está realmente sólo una vez; las ha escrito dos veces simplemente para que el ordenador las identifique de forma adecuada.

Manual de Basic Spectrum 48k.