Mulțime (set)

Un tip de date mulţime (set) se defineşte în raport cu un tip de bază care trebuie să fie ordinal:
<Tip mulţime>::=[packed] set of <Tip>
Valorile unui tip de date set sunt mulţimi formate din valorile tipului de bază. Dacă tipul de bază are n valori, tipul mulţime va avea 2^n valori. În implementările limbajului valoarea lui n este limitată, de regulă n<=256.
În PASCAL o mulşţime poate fi specificată enumerîndu-i-se elementele între parantezele pătrate „[„şi”]”, care ţin locul acoladelor din matematică.
Notaţia [] reprezintă mulţimea vidă.

 Operatorii utilizați pentru date de acest tip sunt :
a) pentru operații cu mulțimi :
reuniunea   –  ” + ” ( vom scrie  A + B )  ;
intersectia  –  ” * ” ( vom scrie  A * B ) ;
diferenta   –  ” – ” ( vom scrie  A – B ) ;

egalitatea – ” = „;

inegalitatea – ” <> „;

incluziunea „<=, >= „;

apartenența   „ in „;

Exemple:
type Indice =1..10;
Zi = (L, Ma, Mi, J, V, S, D);
MultimeIndicii=set of Indice;
ZileDePrezenta=set of Zi;
var MI : MultimeIndicii;
ZP : ZileDePrezenta;
Tipul ordinal Indice are n=10 valori:1,2,3,4,5,6,7,8,9,10.Tipul MultimeIndicii are 2^10=1024 de valori, şi anume:
[],[1],[2],…,[1,2],[1,3],…,
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].
Prin urmare, variabila MI poate să aibă oricare din aceste valori, de exemplu:
MI:=[1, 3].
Tipul ordinal Zi are n=7 valori: L, Ma, Mi, J, V, S, D. Tipul ZileDePrezenta are 2^7 = 128 de valori, şi anume
[], [ L], [ Ma], [Mi], …,[L, Ma], [L, Mi], …,
[L, Ma, Mi, J, V, S, D].

Programul ce urmează afișează pe ecran rezultatele operațiilor +,*,-, efectuate asupra valorilor de tip MultimeIndicii.

35.png

Spre deosebire de tablouri și articole, componentele cărora pot fi referite direct, respectiv prin indicii și denumiri de câmpuri, elementele unei mulțimi nu pot fi referite. Se admite numai verificarea aparteneței elementului la o mulțime (operația relațională in ). În pofida acestui fapt, utilizarea tipurilor de date mulțime mărește viteza de execuție și îmbunătățește lizibilitatea programelor Pascal.