1. Tema pentru acasă
1. Faceț i punctele f,g,h,i,j din sarcina 4.
2. Elaboraț i un program care generează
toate
submulț imile
mulț imii
{‘A’,’B’,’C’,’D’}
3. Se dau declaraț iile
type Culoare=(Galben, Verde,
Albastru,Violet);
Nuanţa =set of Culoare;
var NT : Nuanţa;
Care din valori poate primi variabila NT?
4. Se consideră tipul de date Multimelndicii
din paragraful în studiu. Precizaţi mulţimile
specificate de constructorii ce urmează:
a) [ ] ;
f) [ 4.. 3] ;
b) [ 1. .10] ;
g) [ 1. .3, 7. .6, 9] ;
c) [ 1. .3, 9. .10] ;
h) [ 4-2. .7 + 1] ;
d) [ 1 + 1, 4. .7, 9] ; i) [ 7-5. .4 + 4] ;
e) [ 3, 7. .9] ;
j) [6, 9, 1. .2] .
5. Elaboraț i un program care generează
toate submulț imile mulț imii {1,2,3,4}
Colegiul de Industrie Uș oară din Bălț i
Tipul
de
date
mulț ime (SET)
Bălț i 2013
5
2. Noț iuni generale
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> ::= set of <Tip>
Valorile unui tip de date set sînt mulţimi
formate din valorile tipului de bază. Dacă tipul
de bază are n valori, tipul mulţime va avea
2n 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ă.
Exemple:
type Indice=l..10;
Zi=(L, Ma, Mi, J, V, S, D);
Multimelndicii=set of Indice;
ZileDePrezenta=set of Zi;
var MI : Multimelndicii;
ZP : ZileDePrezenta;
Tipul ordinal Indice are n = 10 valori: 1, 2, 3, 4,
5, 6, 7, 8, 9,10.
Tipul Multimelndicii are 210= 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] .
Variabila ZP poate să aibă oricare dintre aceste
valori, de exemplu ZP := [ L, Ma, Mi, V] .
2
Asupra valorilor unui tip de date
mulţime se pot efectua operaţiile:
+ reuniunea;
* intersecţia;
- diferenţa,
Program P86;
type Indice=l..10; { Date de tip Multimelndicii }
Multimelndicii=set of Indice;
var A, B, C : Multimelndicii;
i : integer;
begin
A:=[1..5, 8]; { A conţine 1,2,3,4,5,8 }
B: = [ 1..3, 9, 10] ; { B conţine 1,2,3,9,10 }
C:=[]; { C este o mulţime vidă }
C:=A+B; { C conţine 1,2,3,4,5,8,9,10 }
writeln('Reuniune');
for i:=l to 10 do
if i in C then write(i:3);
writeln;
C:=A*B; { C conţine 1, 2, 3 }
writeln('Intersecţie') ;
for i:=l to 10 do
if i in C then write(i:3);
writeln;
C:=A-B; { C conţine 4, 5, 8 }
writeln('Diferenfa') ;
for i:=l to 10 do
if i in C then write(i:3);
end.
Întrebări şi exerciţii
operaţiile relaţionale:
=
egalitatea;
<>
inegalitatea;
<=, => incluziunea;
in
apartenenţa,
Programul ce urmează afişează pe ecran
rezultatele operaţiilor +, * şi efectuate asupra
valorilor de tip Multimelndicii.
3
1. Enumeraţi valorile posibile ale variabilelor din
declaraţiile ce urmează:
var V : set of 'A'. . 'C;
S : set of (A, B, C);
I : set of '1'..'2';
J : set of 1..2;
2. Comentaţi următorul program :
Program P88;
{ Eroare }
type Multime=set of integer;
var M : Mulţime;
i : integer;
begin
M:=[ 1, 8, 13] ;
for i:=l to Maxlnt do
if i in M then writeln(i);
end.
4