AnteriorPosterior

6. Asignación de valores

Por: Nacho Cabanes
Actualizado: 27-05-2019 13:06
Tiempo de lectura estimado: 8 min.

 

Versión en video (12:33 min):

Pascal

6. Asignación de valores

6.1. Valores de variables desde el programa

Hemos visto cómo hacer operaciones con datos prefijados y también cómo pedir datos al usuario, declarando previamente las variables que vayamos a necesitar. En muchas ocasiones necesitaremos llegar un poco más allá, y usar variables adicionales para guardar el resultado de cálculos intermedios.

Para dar un valor a una variable usaremos el "operador de asignación", que en pascal se escribe como ":=" (un símbolo de "dos puntos" seguido de un símbolo de "igual"), como en el siguiente fragmento:

x := 1;

Vamos a ver el ejemplo de un programa que calcule el área y el perímetro (la suma de las longitudes de los lados) de un rectángulo, pero que no muestre directamente los resultados, sino que los guarde antes en variables.

(* Área y el perímetro de un rectángulo, 
usando variables *)

program Rectangulo;

var
    base, altura: integer;
    perimetro, area: integer;

begin
    write('Dime la base del rectangulo: ');
    readln(base);
    write('Dime la altura del rectangulo: ');
    readln(altura);

    perimetro := base*2 + altura*2;
    area := base * altura;

    writeln('Su perimetro es: ', perimetro);
    writeln('Su area es: ', area);
end.

Algún comentario sobre el formato de este programa...

Por una parte, podemos declarar las variables de varias maneras. Podemos optar por declarar cada una de ellas por separado:

var
    base: integer;
    altura: integer;
    perimetro: integer;
    area: integer;

O bien todas ellas juntas:

var
    base, altura, perimetro, area: integer;

O bien agruparlas de alguna forma que nos parezca lógica. Por ejemplo, en una línea los datos introducidos por el usuario y en otra línea los datos calculados:

var
    base, altura: integer;     (* Por el usuario *)
    perimetro, area: integer;  (* Calculados *)

Por otra parte, este programa se podría haber resuelto sin variables adicionales. Nada nos impide hacer lo siguiente, en vez de declarar e usar la variable "area":

writeln('Su area es: ', base * altura);

pero dentro de poco necesitaremos usar asignaciones de valores, cuando veamos cierto tipo de estructuras repetitivas, así que nos vendrá bien anticipar este detalle.

6.2. Incrementando una variable

Una operación muy habitual es la de incrementar una variable, para que su valor pase a ser una unidad (o varias) mayor que el valor que tenía hasta ese momento. La forma de indicar esa operación parece "poco legible" en un primer momento:

(* Incrementar una variable, versión 1 *)

program incremento1;

var
    i: integer;

begin
    i := 6;
    writeln('i vale: ', i);
    i := i+1;
    writeln('Ahora i vale: ', i);
    i := i+3;
    writeln('Y finalmente i vale: ', i);
end.

La orden i := i+1; se podría leer como "el valor de i debe pasar a ser el antiguo valor de i más uno" y es la forma habitual de incrementar una variable, tanto en Pascal como en otros muchos lenguajes (aunque quizá en otros lenguajes no se use ":=" como operador de asignación, sino un único símbolo "=").

Al ser una operación tan frecuente, existe una forma alternativa (y ligeramente más legible) de realizarla en Pascal. Se trata de la orden "inc", a la que se le indica la variable y, opcionalmente, el incremento, como en el sguiente ejemplo:

(* Incrementar una variable, versión 2 *)

program incremento2;

var
    i: integer;

begin
    i := 6;
    writeln('i vale: ', i);
    inc(i);
    writeln('Ahora i vale: ', i);
    inc(i,3);
    writeln('Y finalmente i vale: ', i);
end.

De forma análoga, se podría decrementar una variable con i := i-1: o bien con dec(i);.

6.3. Depuración

Casi cualquier entorno actual de programación permitirá avanzar paso a paso por un programa, viendo en todo momento los valores de las variables. Eso resultará muy útil para descubrir qué está provocando un fallo. En Lazarus se puede conseguir desde el menú "Ver", que incluye una opción llamada "Ventanas de Depuración". Entre ellas tenemos la posibilidad de añadir "puntos de observación", que nos permitan ver el valor de una variable o una expresión:

Ventanas de depuración

Aparecerá una ventana vacía, porque inicialmente todavía no estamos inspeccionando el valor ninguna variable:

Puntos de observación 1

Y al pulsar el botón "+" podremos introducir el nombre de la variable, o bien cualquier otra expresión, como "x+y":

Puntos de observación 2

A partir de entonces, podemos avanzar por el programa línea a línea pulsando la tecla F7 o escogiendo la opción correspondiente del menú "Ejecutar", y en cada momento se nos mostrará el valor actual de la variable (o expresión):

Depuración 1

Realmente no hace falta ejecutar el programa paso a paso desde el principio. Una alternativa es colocar "puntos de interrupción" en la(s) línea(s) en que queremos que el programa se detenga, haciendo clic en el margen izquierdo. Cuando el programa llegue a ese punto, se detendrá y podremos ver los valores de las variables en ese momento, o seguir paso a paso a partir de ahí:

Depuración 2

Ejercicios propuestos

Ej.06.01: Prepara un programa que pregunte al usuario el lado de un cuadrado y calcule (y guarde en las correspondientes variables) la superficie de dicho cuadrado y su perímetro.

Ej.06.02: Pide al usuario tres números, calcula su máximo (que guardarás en un variable llamada "maximo") y muestra el valor de dicho máximo.

734 visitas desde el 14-05-2019

AnteriorPosterior