El concepto de variable existe en todos los lenguajes de programación. Sería difícil programar sin variables. Ya vimos en BIAP qué era una variable: simplemente una caja de zapatos :) Hoy nos acercamos al concepto de tipo.
El lenguaje PASCAL diferencia, de una forma muy sencilla, los conceptos variable, valor que toma una variable y tipo de la variable. En PASCAL una constante es una variable que, paradójicamente, no puede cambiar de valor a lo largo de la vida de un programa ni puede sufrir ningun tipo de operación. Y en PASCAL manejamos un concepto que aporta una ventaja muy interesante: el tipo de la variable. Si una variable se define como de un tipo concreto, por ejemplo alfabético, no se podrá realizar con ella posteriormente una operación aritmética. Antes de ejecutar el programa, en tiempo de compilación, ya se obtendrá el error correspondiente [la compilación es, digamos, el proceso por el cual se traduce el programa, escrito en el llamado lenguaje fuente -PASCAL, por ejemplo- al lenguaje que el ordenador es capaz de entender].
Que una variable se pueda definir de un tipo particular, impide, ni más ni menos, que sumemos peras con manzanas ;)
En PASCAL, se pueden definir variables de muchos tipos, los habituales de carácter alfabético y numérico, pero también otros más complejos, como lógicos (booleanos), resistros, listas, ficheros, etc. Y aún más: podemos crear nuestros propios tipos. Para ilustrar la capacidad de este lenguaje y acercarnos un poquito más a los conceptos de variable y tipo, veamos las siguientes definiciones:
type COLORES=(verde, rojo, amarillo);
var SEMAFORO: COLORES;
Hemos definido la variable SEMAFORO del tipo COLORES que, a su vez, se define como una extensión de valores concretos: verde, rojo y amarillo. De esta forma, a lo largo del programa la variable SEMAFORO sólo podrá tomar ésos tres colores. Los valores se asignan a la variable SEMAFORO con la sentencia de asignación que, en PASCAL, utiliza los signos :=.
SEMAFORO:=rojo;
if SEMAFORO = verde then PASAR;
En el programa anterior la variable que se llama SEMAFORO adopta el valor rojo y, a continuación, se evalúa la condición SEMAFORO = verde. Nótese la diferencia entre los signos utilizados para asignar valores a variables := y simplemente el signo = de la pregunta en la instrucción 'if'. PASAR es la llamada a un procedimiento. Evidentemente, sólo se ejecutará el procedimiento PASAR si la variable SEMAFORO está a 'verde'.
Además de la disminución radical de errores en la ejecución de los programas, el uso de tipos y variables, aumenta su legibilidad, lo que redunda, entre otras cosas, en una mejora importante a la hora del costoso proceso de mantenimiento posterior.
Otro tipo muy interesante que se puede usar en PASCAL es el booleano o lógico. Si una variable se define como booleana únicamente podrá tomar dos valores: o cierto o falso. En el siguiente programa vemos un ejemplo de uso de variables lógicas:
var BOMBILLA: boolean;
...
BOMBILLA := true;
if BOMBILLA then
VEO
else
NOVEO;
En el programa anterior, ejecutamos el procedimiento VEO si la variable BOMBILLA tiene el valor 'verdadero' y el procedimiento NOVEO si tiene el valor 'falso'. En este caso, en la condición no es necesario especificar BOMBILLA = true, lo que implica una mayor legilibilidad a los programas. Aquí entra en juego la idea de que los nombres de las variables deben tener mejor un fuerte contenido semántico, es decir, es preferible que la variable BOMBILLA se llamara BOMBILLA_ENCENDIDA para que pudieramos preguntar:
if BOMBILLA_ENCENDIDA then
Lo que, sin duda, hará que el programa gane en legibilidad. Como ejercicio, reflexionen, acerca de si el siguiente programa es correcto o erróneo:
var NUMERO1: integer;
NUMERO2: integer;
...
DOBLE:=2*NUMERO1;
CONCATENADO:="HOLA"*NUMERO2;
La definición de las variables NUMERO1 y NUMERO2 es correcta, ... pero ¿lo son las dos operaciones que se realizan?