17 septiembre 2014

Pascal - 4d3: Conjuntos (set)

4.4.3. Conjuntos

También podemos crear y manipular conjuntos (sets). Un conjunto está formado por una serie de elementos de un tipo base, que debe ser un ordinal de no más de 256 valores posibles, como un "char", un "byte" o un enumerado.
Para construir un "set" utilizaremos los corchetes ( [ ] ), y dentro de ellos enumeramos los valores posibles, uno a uno, o bien como rangos de valores separados por ".." :
 
var 
    letras: set of char; 
 
begin 
    letras := ['a', 'b', 'c', 'd']; 
    (* ... *)
end.
 
Las operaciones que podemos realizar con conjuntos son:
OperacNombre
+Unión
-Diferencia
*Intersección
inPertenencia
Así, un ejemplo que cree un conjunto a partir de dos subconjuntos y que compruebe si un cierto dato pertenece o no al conjunto, podría quedar así:
(* SET01.PAS, Ejemplo de conjuntos (Sets) *)
(* Parte de CUPAS5, por Nacho Cabanes     *)
 
program Set01; 
 
var 
    minusculasValidas, 
        mayusculasValidas, 
        letrasValidas: set of char; 
    letra: char; 
 
begin 
    minusculasValidas := ['a', 'b', 'c', 'd']; 
    mayusculasValidas := ['F', 'H', 'K', 'M']; 
    letrasValidas := minusculasValidas
        + mayusculasValidas; 
 
    repeat 
        writeLn( 'Introduce una letra...' ); 
        readLn( letra ); 
        if not (letra in letrasValidas) then 
            writeLn('No aceptada!'); 
    until letra in letrasValidas; 
end.
 
(* Ejemplo de ejecucion:
Introduce una letra...
e
No aceptada!
Introduce una letra...
t
No aceptada!
Introduce una letra...
n
No aceptada!
Introduce una letra...
m
No aceptada!
Introduce una letra...
M
*)