Pascal - Conjuntos
Um conjunto é uma coleção de elementos do mesmo tipo. Pascal permite definir o tipo de dado definido. Os elementos em um conjunto são chamados de seus membros. Em matemática, os conjuntos são representados encerrando os membros entre colchetes {} . No entanto, em Pascal, os elementos do conjunto são colocados entre colchetes [], que são chamados de construtor do conjunto.
Definindo tipos de conjuntos e variáveis
Os tipos Pascal Set são definidos como
type
set-identifier = set of base type;
Variáveis de tipo de conjunto são definidas como
var
s1, s2, ...: set-identifier;
ou,
s1, s2...: set of base type;
Exemplos de algumas declarações de tipo de conjunto válido são -
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;
Operadores de conjunto
Você pode realizar as seguintes operações em conjuntos Pascal.
Sr. Não | Operações e descrições |
---|---|
1 | Union Isso une dois conjuntos e fornece um novo conjunto com membros de ambos os conjuntos. |
2 | Difference Obtém a diferença de dois conjuntos e fornece um novo conjunto com elementos não comuns a nenhum dos conjuntos. |
3 | Intersection Obtém a interseção de dois conjuntos e fornece um novo conjunto com elementos comuns a ambos. |
4 | Inclusion Um conjunto P está incluído no conjunto Q, se todos os itens em P também estiverem em Q, mas não vice-versa. |
5 | Symmetric difference Obtém a diferença simétrica de dois conjuntos e fornece um conjunto de elementos, que estão em qualquer um dos conjuntos e não em sua interseção. |
6 | In Ele verifica a adesão. |
A tabela a seguir mostra todos os operadores de conjunto suportados pelo Free Pascal. Assuma issoS1 e S2 são dois conjuntos de caracteres, tais que -
S1: = ['a', 'b', 'c'];
S2: = ['c', 'd', 'e'];
Operador | Descrição | Exemplo |
---|---|---|
+ | União de dois conjuntos | S1 + S2 dará um conjunto ['a', 'b', 'c', 'd', 'e'] |
- | Diferença de dois conjuntos | S1 - S2 dará um conjunto ['a', 'b'] |
* | Interseção de dois conjuntos | S1 * S2 dará um conjunto ['c'] |
> < | Diferença simétrica de dois conjuntos | S1> <S2 dará um conjunto ['a', 'b', 'd', 'e'] |
= | Verifica a igualdade de dois conjuntos | S1 = S2 dará o valor booleano False |
<> | Verifica a não igualdade de dois conjuntos | S1 <> S2 dará o valor booleano True |
<= | Contém (verifica se um conjunto é um subconjunto do outro) | S1 <= S2 dará o valor booleano False |
Incluir | Inclui um elemento no conjunto; basicamente é a união de um conjunto e um elemento do mesmo tipo de base | Incluir (S1, ['d']) dará um conjunto ['a', 'b', 'c', 'd'] |
Excluir | Exclui um elemento de um conjunto; basicamente é a diferença de um conjunto e um elemento do mesmo tipo de base | Excluir (S2, ['d']) dará um conjunto ['c', 'e'] |
Dentro | Verifica a associação do conjunto de um elemento em um conjunto | ['e'] em S2 dá o valor booleano True |
Exemplo
O exemplo a seguir ilustra o uso de alguns desses 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.
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
[ red , blue , yellow , green , white , black , orange]
[ red , blue , yellow , green]
[ red , blue , yellow , black , orange]
[ green , white]
[ red , blue , white , black]