Sunteți pe pagina 1din 11

Tipuri identice şi tipuri

compatibile.
Clasificarea tipurilor de date

statice

Tipuri de
date

dinamice
Clasificarea tipurilor de date
întregi
logic (boolean)
ordinale caracter (char)
simple enumerativ
real subdomeniu

statice

Tipuri de tablou (array)


date structurate şir de caractere (string)
mulţime (set)
articol (record)
dinamice fişier (file)
În anumite construcţii variabilele și constantele trebuie să fie de tipuri identice sau compatibile.
Două tipuri sînt identice, dacă ele au fost defi nite cu același nume de tip.
De exemplu, fie
type T4 = integer;
T5 = integer;
Aici tipurile integer, T4 și T5 sînt identice.
Două tipuri sînt identice și atunci cînd sînt defi nite cu nume diferite, dar aceste nume sînt
echivalente prin tranzitivitate. De exemplu, fie
type T6 = real;
T7 = T6;
T8 = T7;
Aici real, T6, T7 și T8 sînt tipuri identice.

Două tipuri sînt compatibile atunci cînd este adevărată cel puţin una din următoarele afi rmaţii:
1) cele două tipuri sînt identice;
2) un tip este un subdomeniu al celuilalt tip;
3) ambele tipuri sînt subdomenii ale aceluiași tip de bază.
De exemplu, în prezenţa declaraţiilor
type Zi = (L, Ma, Mi, J, V, S, D);
ZiDeLucru = (L, Ma, Mi, J, V);
ZiDeOdihna = (S, D);
Culoare = (Galben, Verde, Albastru, Violet);
tipurile Zi, ZiDeLucru, ZiDeOdihna sînt compatibile. Tipurile Zi și Culoare sînt tipuri incompatibile.
Prin urmare sînt admise operaţiile relaţionale:
L<D Mi <> D Verde <> Violet etc. și nu sînt admise operaţiile de tipul:
L < Violet Verde = V S <> Albastru ș.a.m.d.
În completare la tipurile de date definite de utilizator explicit cu ajutorul cuvîntului-cheie type, într-
un program pot fi definite și tipuri anonime (fără denumire). Un tip anonim se definește implicit într-o
declaraţie de variabile.
Exemplu:
var i : 1..20;
s : (Alfa, Beta, Gama, Delta);
t : Alfa..Gama;
Se observă că tipul subdomeniu 1..20, tipul enumerare (Alfa, Beta, Gama, Delta) și tipul subdomeniu
Alfa..Gama nu au denumiri proprii.
De regulă, tipurile anonime se utilizează în programele cu un număr mic de variabile.
Cînd două tipuri de date sînt identice?
Daţi exemple.

Cînd două tipuri de date sînt compatibile?


Daţi exemple.
Problema 1: Precizaţi tipurile de date ale programului. Ce valori poate lua fi ecare variabilă din
acest program? Care tipuri sînt compatibile?

1. Program P28; 14. n : T4;


2. type T1 = -100..100; 15. p : real;
3. T2 = ’A’..’H’; 16. q : T6;
4. T3 = (A, B, C, D, E, F, G, H); 17. r : char;
5. T4 = A..E; 18. s : T7;
6. T5 = integer; 19. t : boolean;
7. T6 = real; 20. y : real;
8. T7 = char; 21. z : T8;
9. T8 = boolean; 22.begin
10.var i : T1; 23. { calcule ce utilizeaza }
11. j : T5; 24. { variabilele in studiu }
12. k : T2; 25. writeln(’Sfirsit’);
13. m : T3; 26.end.
Problema 2:
• Se consideră declaraţiile:
type T1 = integer;
T2 = T1;
T3 = -5..+5;
T4 = T3;
T5 = -10..+10;
T6 = (A, B, C, D, E, F, G, H);
T7 = A..D;
T8 = E..H;
T9 = ’A’..’D’;
T10 = ’E’ ..’H’;
Precizaţi tipurile identice și tipurile compatibile de date.
Temă pentru acasă
1. Precizaţi tipurile anonime de date din următorul program:
Program P29;
type T1 = integer;
T2 = -150..150;
T3 = 1..5;
var i : T1;
j : T2;
k : T3;
m : 1..5;
n : (Unu, Doi, Trei, Patru, Cinci);
begin
{ calcule ce utilizeaza }
{ variabilele in studiu }
writeln(’Sfirsit’)
end.
Ce valori poate lua fi ecare variabilă din acest program?
Temă pentru acasă

2.Se consideră următoarele declaraţii:


type T1 = boolean;
T2 = T1;
T3 = T2;
T4 = T3;
var x : T4;
Precizaţi valorile pe care le poate lua variabila x și operaţiile tipului
corespunzător de date.