Las variables y los tipos enteros

En esta lección, aprenderás a manejar variables en Pascal, así como algunas expresiones sencillas.

Una variable no es más que un símbolo, que representa un valor en la memoria que puede cambiar. En programación, las variables son imprescindibles, pues almacenan los datos de las operaciones que se realizan.

Todas las variables tienen un tipo. Este tipo define, valga la redundancia, el tipo de dato que contien la variable. En Pascal, una vez especificado el tipo, no se puede cambiar.

Veamos un ejemplo:

program leccion2;

var
  numero1 : Integer;
  numero2 : Integer;
  resultado : Integer;

begin
  numero1 := 5;
  numero2 := 6;
  resultado := numero1 + numero2;
  writeln (resultado);
end.

Nota: recomiendo que, para todos los ejemplos que veas en este curso, abras un nuevo proyecto y le pongas el nombre de la lección, tal y como aprendiste en la lección anterior. Además, recomiendo que copies el código a mano, para que vayas familiarizándote con escribir código Pascal. Sobre la forma de escribir el código, ten en cuenta que el espaciado interior generalmente no importa, así por ejemplo es lo mismo numero1:=5; que numero1 := 5. Tampoco importa dejar o no espacios al principio de la línea, pero, como puede comprobarse de un primer vistazo, ello facilita ENORMEMENTE la lectura, así que es altamente recomendable respetar este estilo. Tampoco hay distinción entre mayúsculas y minúsculas, significa lo mismo Integer que integer o inTeger.

Lo primero que llama la atención de este ejemplo es la palabra clave var. Ello significa que, lo que venga a partir de ahora y hasta que no se indique lo contrario, es para declarar variables.

Declaración de las variables

Las variables se declaran poniendo el nombre que se desee, dos puntos (no importa si hay espacios o no entre medias), y el tipo de variable. Se termina con un punto y coma (obligatorio). El nombre que se desee puede ser, efectivamente, lo que se quiera, con dos normas básicas: debe empezar por una letra, y no contener símbolos. Estos son nombres válidos de variables:

a b c pericoEldeLosPalotes mi_variable a9988 variable2g

Y estas son variables NO válidas:

78s mi-variable

Concretamente, la primera, 78s empieza por un número, por lo tanto producirá un error, y mi-variable contiene el símbolo -, que significa resta, y entonces, como es de esperar, el compilador se confunde y piensa que quieres restar a la variable mi la variable variable.

Lo siguiente interesante es el tipo. Efectivamente, estas variables tienen el tipo Integer. Esto significa, en inglés, entero. Si recuerdas cuando aprendiste matemáticas, el tipo de número enteros es aquel que no tiene decimales, por ejemplo -6, 89, 7878787, etc. Pues esto es lo que significa, aunque con algunas limitaciones. Este tipo de datos no admite decimales. Así que asignar a estas variables un número real, por ejemplo, 6.78, producirá un error en tiempo de compilación.

Aprenderás muchos más tipos de datos más adelante.

Expresiones básicas

El programa empieza con begin, ya lo sabemos.

A continuación vienen tres asignaciones. Las asignaciones en Pascal se realizan con el símbolo := . Es fácil comprender que esta expresión:

numero1 := 5;

asigna el valor 6 a la variable numero1.

Y la expresión:

resultado := numero1 + numero2;

asigna a la variable resultado la suma de las variables numero1 y numero2.

La siguiente instrucción es la ya usada writeln, que como recordarás lo que hace es imprimir en la consola algo. Si te fijas, en este caso no tiene comillas. Es debido a que en vez de imprimir una cadena de caracteres, ahora lo que se imprime es directamente una variable. Más sobre esto más tarde.

Puedes ejecutar el programa y verás como produce en la salida un bonito número 11, consecuencia de imprimir la variable resultado.

Unas notas sobre los puntos y comas

Seguramente te preguntarás que utilidad tienen esos puntos y comas. ¿Porqué están ahí y porque si no los pongo el compilador me devuelve errores raros? Muy sencillo, los puntos y comas sirven para separar instrucciones. Así, por ejemplo, es posible meter varias instrucciones en una sola linea:

numero1 := 5; numero2 := 6;

significa lo mismo que:

numero1 := 5;
  numero2 := 6;

y además, curiosamente también significa lo mismo que:

numero1 :=
  5;
numero2
  := 6;

Es lo bueno del punto y coma, que se pueden poner todas las instrucciones que se quieran en una sola linea, o dividirlas en tantas lineas como se quiera si la expresión es muy larga (algo que te será de mucha utilidad cuando programes seriamente).

Hay algunas excepciones. Como ves, no se deben poner detrás de begin o de var. El último end. debe tener un punto, que como estarás pensando significa punto y final.

Instrucciones matemáticas permitidas en pascal

~Operador ~Operación ~Válido entre
+ adición enteros y reales
- resta enteros y reales
* multiplicación enteros y reales
/ división enteros y reales
div división entera enteros
mod resto enteros

Por ejemplo:

program leccion3;

var
  PI : Single;
  r : Single;

begin
  PI := 3.14156;
  r := 6.7;
  write ('La circunferencia es:');
  writeln (2 * PI * r);
end.

Obtenemos:

La circunferencia es: 4.209690396E+01

Nota como hemos puesto el resultado directamente en la llamada a la función writeln. También nota como hay otra nueva función: write. Es igual que writeln pero no escribe un retorno de carro. De esa manera, lo siguiente que se escriba saldrá a continuación.

Los tipos char y string

Hasta ahora, hemos estado usando caracteres y cadenas de caracteres (strings) directamente, sin asignarlos a variables, para la función writeln. Pero se pueden usar en variables, y hacer algunas operaciones con ellos:

program leccion3;

var
  nombre : string;
  resultado : string;

begin
  write('Dime tu nombre: ');
  readln(nombre);
  resultado := 'Hola ' + nombre + ', ¿qué tal estás?';
  writeln (resultado);
end.

Al ejecutarlo, el programa espera que introduzcas un nombre y pulses intro. Ofrece lo siguiente:

Dime tu nombre: Javier
Hola Javier, ¿qué tal estás?

readln es por lo tanto una función que sirve para que el usuario del programa introduzca datos, estos se guardan en la variable especificada, y con esa variable se hacen las operaciones oportunas, en este caso, concatenar (sumar) cadenas de caracteres.

El tipo char es simplemente un carácter solo. El tipo string es una cadena (array) de caracteres. Más adelante aprenderemos a manejar cadenas.

Quizá te estés preguntando: ¿puedo introducir números con readln? Prueba:

program leccion3;

var
  r : Single;
  resultado : Single;

begin
  write('Dime el radio del círculo: ');
  readln(r);
  resultado := 2 * 3.14 * r;
  writeln (resultado);
end.

Si lo ejecutas te pide el radio del círculo e imprime el resultado. Desgraciadamente también si lo que escribes no es un número te premiará con una bonita excepción. Aprenderás un poco más adelante a hacer las conversiones de forma más segura.

¿Y qué sucede si sumas un string y un número? Prueba:

program leccion3;

var
  r : Single;
  resultado : string;

begin
  write('Dime el radio del círculo: ');
  readln(r);
  resultado := 'El resultado es: ' + 2 * 3.14 * r;
  writeln (resultado);
end.

Pues no es de extrañar que suceda lo que tiene que suceder:

leccion2.pas(10,36) Error: Operator is not overloaded
leccion2.pas(14) Fatal: There were 1 errors compiling module, stopping

No sé pueden mezclar naranjas con coches… o quizá si. Más en la siguiente sección:

Conversión de tipos

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License