Pascal - Conjuntos

Un conjunto es una colección de elementos del mismo tipo. Pascal permite definir el tipo de datos establecido. Los elementos de un conjunto se denominan miembros. En matemáticas, los conjuntos se representan encerrando los miembros entre llaves {} . Sin embargo, en Pascal, los elementos de conjunto se encierran entre corchetes [], que se denominan constructor de conjuntos.

Definición de tipos de conjuntos y variables

Los tipos de Pascal Set se definen como

type
set-identifier = set of base type;

Las variables de tipo de conjunto se definen como

var
s1, s2, ...: set-identifier;

o,

s1, s2...: set of base type;

Ejemplos de alguna declaración de tipo de conjunto válida son:

type
Days = (mon, tue, wed, thu, fri, sat, sun);
Letters = set of char;
DaySet = set of days;
Alphabets = set of 'A' .. 'Z';
studentAge = set of 13..20;

Establecer operadores

Puede realizar las siguientes operaciones de conjuntos en conjuntos Pascal.

No Señor Operaciones y descripciones
1

Union

Esto une dos conjuntos y da un nuevo conjunto con miembros de ambos conjuntos.

2

Difference

Obtiene la diferencia de dos conjuntos y proporciona un nuevo conjunto con elementos que no son comunes a ninguno de los conjuntos.

3

Intersection

Obtiene la intersección de dos conjuntos y proporciona un nuevo conjunto con elementos comunes a ambos conjuntos.

4

Inclusion

Un conjunto P se incluye en el conjunto Q, si todos los elementos de P también están en Q, pero no al revés.

5

Symmetric difference

Obtiene la diferencia simétrica de dos conjuntos y proporciona un conjunto de elementos, que están en cualquiera de los conjuntos y no en su intersección.

6

In

Comprueba la membresía.

La siguiente tabla muestra todos los operadores de conjuntos admitidos por Free Pascal. Asumir queS1 y S2 son dos conjuntos de caracteres, de modo que:

S1: = ['a', 'b', 'c'];

S2: = ['c', 'd', 'e'];

Operador Descripción Ejemplo
+ Unión de dos conjuntos

S1 + S2 darán un conjunto

['a B C D e']

- Diferencia de dos conjuntos

S1 - S2 dará un conjunto

['a', 'b']

* Intersección de dos conjuntos

S1 * S2 dará un conjunto

['C']

> < Diferencia simétrica de dos conjuntos S1> <S2 dará un conjunto ['a', 'b', 'd', 'e']
= Comprueba la igualdad de dos conjuntos S1 = S2 dará el valor booleano False
<> Comprueba la no igualdad de dos conjuntos S1 <> S2 dará el valor booleano Verdadero
<= Contiene (comprueba si un conjunto es un subconjunto del otro) S1 <= S2 dará el valor booleano False
Incluir Incluye un elemento en el conjunto; básicamente es la unión de un conjunto y un elemento del mismo tipo base

Incluir (S1, ['d']) dará un conjunto

['a B C D']

Excluir Excluye un elemento de un conjunto; Básicamente es la diferencia de un conjunto y un elemento del mismo tipo base

Excluir (S2, ['d']) dará un conjunto

['c', 'e']

En Comprueba la pertenencia de un elemento a un conjunto. ['e'] en S2 da el valor booleano True

Ejemplo

El siguiente ejemplo ilustra el uso de algunos de estos operadores:

program setColors;
type  
color = (red, blue, yellow, green, white, black, orange);  
colors = set of color;  
 
procedure displayColors(c : colors);  
const  
names : array [color] of String[7]  
  = ('red', 'blue', 'yellow', 'green', 'white', 'black', 'orange');  
var  
   cl : color;  
   s : String;  

begin  
   s:= ' ';  
   for cl:=red to orange do  
      if cl in c then  
      begin  
         if (s<>' ') then s :=s +' , ';  
         s:=s+names[cl];  
      end;  
   writeln('[',s,']');  
end;  
 
var  
   c : colors;  
 
begin  
   c:= [red, blue, yellow, green, white, black, orange];
   displayColors(c);

   c:=[red, blue]+[yellow, green]; 
   displayColors(c);  

   c:=[red, blue, yellow, green, white, black, orange] - [green, white];     
   displayColors(c);    

   c:= [red, blue, yellow, green, white, black, orange]*[green, white];     
   displayColors(c);  

   c:= [red, blue, yellow, green]><[yellow, green, white, black]; 
   displayColors(c);  
end.

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

[ red , blue , yellow , green , white , black , orange]
[ red , blue , yellow , green]
[ red , blue , yellow , black , orange]
[ green , white]
[ red , blue , white , black]