AnteriorPosterior

2. Operaciones aritméticas. Variables.

Por: Nacho Cabanes
Actualizado: 07-05-2019 20:28
Tiempo de lectura estimado: 9 min.

 

Versión en video (10:53 min):

Pascal

2. Operaciones aritméticas y variables

2.1. Operaciones aritméticas con Pascal

La idea es sencilla: en vez de escribir un texto entre comillas, indicaremos la operación sin comillas:

program sumaIncorrecta;
begin
  writeln('3+2');
end.

mostraría en pantalla

3+2

Mientras que

program sumaCorrecta;
begin
  writeln(3+2);
end.

escribiría en pantalla

5

Los operadores que podemos utilizar son:

  • + Suma
  • - Resta
  • / División (con decimales)
  • * Producto

además de otros dos "menos habituales":

  • div División entera (sin decimales)
  • mod Resto de la división

Así, un programa como este:

program operaciones1;

begin 
  writeln(15+2);
  writeln(15-2);
  writeln(15/2);
  writeln(15*2);
  writeln(15 div 2);
  writeln(15 mod 2);
end.

Operaciones con Free Pascal

tendría como resultado

17
13
 7.5000000000000000E+000
30
7
1

El resultado de la división se muestra en un formato "extraño". Tiene que ver con que no es un número entero (que son los únicos que usaremos por ahora), sino un número real (con decimales). Más adelante hablaremos de los números reales y de otros tipos de datos que se puede utilizar en Pascal.

2.2. Variables

Lo habitual es un programa real es que los datos no estén prefijados, sino que sean introducidos por el usuario o bien que sean el resultado de cálculos anteriores.

En ese casos, no emplearemos números, sino "variables", espacios de memoria a los que asignaremos un nombre y en los que podremos guardar datos.

La orden habitual para pedir un dato al usuario sería readln, seguida del nombre que queremos dar a ese dato, entre paréntesis:

readln(x);

pero antes debemos indicar "qué es esa x". En nuestro caso, se trata de una variable en la que queremos guardar un número entero. Para ello, comenzaremos con la palabra "var", seguida del nombre de la variable y de " : integer;", así:

var x: integer;

(se leería algo como "la variable x se va a utilizar para guardar números enteros).

El bloque "var" debe ir antes de "begin", por lo que un fragmento de programa "casi real" sería así:

program ejemploDeVariables;

var x: integer;

begin 
  readln(x);
  writeln(x);
end.

Pero nos quedan dos mejoras por hacer para convertir ese fragmento un un programa útil:

  1. Por lo general, deberemos avisar al usuario antes de una orden "readln", para que sepa qué estamos esperando de él. Lo haremos con una orden "write" o "writeln".

  2. Es habitual necesitar más de una variable. En ese caso, se incluirían los nombres de todas ellas, separadas por comas.

Con esas dos consideraciones, ya podemos crear un programa real que pida dos números al usuario y muestre su suma:

program suma;

var x,y: integer;

begin 
  write('Dime un número: ');
  readln(x);
  write('Dime otro número: ');
  readln(y);
  write('Su suma es: ');
  writeln(x+y);
end.

2.3. Consideraciones sobre el editor de Free Pascal

El editor de Free Pascal imita al de Turbo Pascal versión 7 para MS-DOS. Por eso, es una "aplicación de consola", y relativamente incómoda para los estándares actuales:

  • Por una parte, si queremos que el texto se vea más grande, deberemos hacerlo desde Propiedades, en la esquina superior izquierda, como vimos en el apartado anterior.

  • Por otra parte, si no queremos tener que entrar siempre a "User Screen" para ver el resultado del programa, podemos optar por añadir una línea "readln;" al final del programa, para que la ejecución se detenga hasta que pulsemos Intro.

  • Además, "copiar y pegar" será más incómodo que en entornos más modernos. Podemos aprender sus combinaciones de teclas (Ctrl+Insert y Mays+Insert, las mismas que usaba Turbo Pascal 7) o emplear el botón derecho del ratón para hacerlo desde el menú contextual. Otra alternativa será utilizar un entorno más moderno, como haremos pronto.

2.4. Limitaciones en los compiladores online

Es habitual que los compiladores online no sean interactivos. Por eso, puede ocurrir que en alguno que otro, el resultado del un programa como el anterior sea 0, porque no se nos pregunte realmente cuáles son los valores para x e y:

Entorno online CodingGround 1

En ese caso, es habitual que exista una pestaña llamada "STDIN" (entrada estándar) o "Input" (entrada), en la que podamos escribir los datos que queremos que utilice el programa, cada uno en una línea:

Entorno online CodingGround 2

En algún otro, puede ocurrir que no se muestren resultados cero, sino que aparezca que un "error de timeout", porque el programa tarde más de 10 segundos (o un cierto tiempo prefijado) en terminar:

Entorno online Rextester 1

pero la solución sería la misma, indicar los datos de entrada para el programa:

Entorno online Rextester 2

Ejercicios propuestos

Ej.02.01: Crea un programa que pida dos números al usuario y muestre su producto

Ej.02.02: Pide al usuario dos números y muestra su división entera y el resto de dicha división

2129 visitas desde el 29-04-2019

AnteriorPosterior