Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


2.2. Variables booleanas

Una variable "Boolean" (llamadas así en honor al matemático George Boole) es una variable lógica, que puede valer TRUE (verdadero) o FALSE (falso), y se pueden usar para hacer que las condiciones resulten más legibles:

(* IF5.PAS, "if" y booleanos             *)
(* Parte de CUPAS5, por Nacho Cabanes    *)

program if5;

var
    numero: integer;
    esPositivo: boolean;

begin
    writeLn('Escriba un numero');
    readLn(numero);
    esPositivo := numero>0;
    if esPositivo then writeLn('El numero es positivo');
end. 

(* Ejemplo de ejecucion:
Escriba un numero
2
El numero es positivo
*)

Ejercicio propuesto 2.2.1: Crea un programa que cree una variable de tipo boolean, le asigne el valor TRUE y luego muestre dicho valor en pantalla.
Ejercicio propuesto 2.2.2: Crea un programa que pida al usuario un número real y diga si es cero o no, usando una variable boolean.
Ejercicio propuesto 2.2.3: Crea un programa que pida al usuario un número entero y diga si es positivo, negativo o cero, usando dos variables boolean (esPositivo y esNegativo).
Ejercicio propuesto 2.2.4: Crea un programa que pida al usuario un número entero y diga si es positivo, negativo o cero, usando tres variables boolean (esPositivo, esNegativo y esCero).

 

2.3. Muchos posibles valores (case)

Cuando queremos comprobar entre varios posibles valores, podemos hacerlo con muchos "if" seguidos, pero puede resultar pesado y hacer que el programa sea poco legible. Hay una alternativa que resulta mucho más cómoda en esas ocasiones: la orden case. Su sintaxis es

case expresion of 
  caso1: sentencia1; 
  caso2: sentencia2; 
  ... 
  casoN: sentenciaN; 
end;

o bien, si queremos indicar también lo que se debe hacer si no coincide con ninguno de los valores que hemos enumerado, añadimos la cláusula opcional else:

case expresion of 
  caso1: sentencia1; 
  caso2: sentencia2; 
  ... 
  casoN: sentenciaN; 
  else
    otraSentencia; 
end;

(Nota: Esta es la sintaxis empleada por Turbo Pascal y Free Pascal. En Pascal estándar, esta construcción se empleaba con otherwise en lugar de "else" para expresar "en caso contrario".

Veamos un ejemplo:

(* CASE1.PAS, Condiciones múltiples con "case" *)
(* Parte de CUPAS5, por Nacho Cabanes          *)

program case1;

var
    letra: char;

begin
    WriteLn('Escriba un simbolo');
    ReadLn(letra);
    case letra of
        ' ':                 WriteLn('Un espacio');
        'A'..'Z', 'a'..'z':  WriteLn('Una letra');
        '0'..'9':            WriteLn('Un digito');
        '+', '-', '*', '/':  WriteLn('Un operador');
    else  { otherwise en SURPAS y otros compiladores }
        WriteLn('No es espacio, ni letra, ni digito, ni operador');
    end;
end. 

(* Ejemplo de ejecucion:
Escriba un simbolo
a
Una letra
*)

Una precaución: la "expresión" debe pertenecer a un tipo de datos con un número finito de elementos, como "integer" o "char", pero no "real".

Y como se ve en el ejemplo, los "casos" posibles pueden ser valores únicos, varios valores separados por comas, o un rango de valores separados por .. (como los puntos suspensivos, pero sólo dos).

Ejercicio propuesto 2.3.1: Crea un programa que pida al usuario un símbolo y diga si es una letra en mayúsculas, una letra en minúsculas o algún otro símbolo.
Ejercicio propuesto 2.3.2: Crea un programa que pida al usuario una letra y diga si es una vocal o una consonante.
Ejercicio propuesto 2.3.3: Crea un programa que pida al usuario un número entero del 1 al 3, y escriba en pantalla "Uno", "Dos", "Tres" o "Número incorrecto" según corresponda.
Ejercicio propuesto 2.3.4: Crea un programa que pida al usuario un número, una operación (+, -, * o /) y otro número, y muestre el resultado de aplicar esa operación a esos dos números.