Los conjuntos son una estructura más que nos ofrece el compilador. Un conjunto es una colección de elementos de un mismo tipo de dato base. Se conoce como tipo de dato base al tipo de dato que se usará para definir los elementos del conjunto, el tipo de dato base sólo puede ser un tipo de dato con no más de 256 valores, es decir un valor entre 0 y 255. Los tipos de datos char, enumerados, subrango y el tipo de dato byte, pueden ser un tipo de dato base. Para declarar un conjunto usamos la palabra reservada Set y of, del siguiente modo:

Type

TDiasSemana = (Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo);

Var

DiaLaboral, DiaFeriado: Set of TDiasSemana;

Para asignar elementos a los conjuntos previamente creados se procede del siguiente modo:

DiaLaboral:= [Lunes..Viernes];
DiaFeriado:= [Sabado,Domingo];

Los corchetes usados se denominan constructores del conjunto, al asignar elementos a un conjunto lo podemos hacer usando subrangos como en el caso de la variable DiaLaboral. La cantidad de elementos que pueden ser asignados a un conjunto es de sólo 256 elementos y está determinado por el tipo base. Para asignar un conjunto vacío se escriben los corchetes sin elementos, como en el siguiente ejemplo:

DiaFeriado:= [ ];

Con los conjuntos se pueden realizar operaciones propias de conjuntos como la unión, intersección, exclusión, y más, la siguiente tabla resume los operadores que se usan con conjuntos:


Operadores de conjuntos.
Operador Descripción Ejemplo.
Se asume las siguientes variables :

Var A ,B ,C : set of byte;
D ,E : boolean;

+

Unión, de dos conjuntos. El resultado es la reunión de todos los elementos de ambos conjuntos.

A:=[1,2,3];

B:=[1,3,4];

C:=A+B;

C contiene : [1,2,3,4]

*

Intersección de dos conjuntos. El resultado es el conjunto de los elementos comunes a ambos conjuntos.

A:=[1,2,3,4];

B:=[5,2,3,6];

C:=A*B;

C contiene [2,3]

><
Dirferencia Simétrica. El resultado es la reunión de todos los elementos no comunes de ambos conjuntos.

A:=[1,2,3,4];

B:=[5,2,3,6];

C:=A><B;

C contiene [1,4,5,6]

-
Diferencia de conjuntos. El resultado es el conjunto formado por aquellos elementos del conjunto de la izquierda que no pertenezcan al conjunto de la derecha.

A:=[1,2,3,4];

B:=[3,4,5,6];

C:=A-B;

C contiene [1,2]

in
Devuelve true, si el elemento pertenece al conjunto, caso contrario devuelve false.

A:=[1..20];

D:=12 in A;

E:=25 in A;

D contiene true, E contiene false.

=

Devuelve true, si ambos conjuntos tienen los mismos elementos, en caso contrario devuelve false.

A:=[1,2,3];

B:=[3,2,1];

C:=[4,5,6];

D:=A=B;

E:=B=C;

D contiene true, E contiene false.

<>

Devuelve true, si los dos conjuntos se diferencian en al menos un elemento, false en caso contrario.

A:=[1,2,3];

B:=[3,2,1];

C:=[4,5,6];

D:=A<>B;

E:=B<>C;

D contiene false, E contiene true.

<=
Devuelve true, si todos los elementos del conjunto de la izquierda existen en el conjunto de la derecha, caso contrario es false.

A:=[1..50];

B:=[5..10];

C:=[60..70];

D:=B <= A;

E:=C <= A;

D contiene true, E contiene false.

>=
Devuelve true, si todos los elementos del conjunto de la derecha existen en el conjunto de la izquierda, caso contrario es false.

A:=[1..50];

B:=[5..10];

C:=[60..70];

D:=A>=B;

E:=A>=C;

D contiene true, E contiene false.

Los conjuntos se pueden usar de forma directa sin crearlos en la declaración de variables o tipos de datos del programa. Esto es posible sólo para los conjuntos que usen valores numéricos de tipo byte o char. Por ejemplo se desea hacer un programa que le pregunte al usuario si desea continuar su ejecución, en estos casos se hace un bucle que finaliza cuando se ingresa por teclado la letra n o N, a continuación el ejemplo:

Otro programa de ejemplo:

El programa permite contar las vocales sin acentos, ingresados en una frase, para ello lo que hace es recorrer la frase y verifica que letra es una vocal, usando el operador in, cuando esa comparación sea verdadera entonces se incrementa el valor de la variable c.