Documente Academic
Documente Profesional
Documente Cultură
Pascal pune la dispoziţie programatorului mai multe mecanisme prin care el să-şi construiască noi tipuri.
Cel mai simplu dintre acestea este enumerarea. Enumerarea construieşte un nou tip cu un număr finit de
elemente descriind între paranteze reprezentarea canonică a fiecărui element.
Exemplu : (rosu, verde, albastru, galben, mov, negru, alb) este descrierea unui nou tip care are 7 elemente
cu reprezentările rosu, verde, etc. Putem da acestui tip un nume folosind directiva type din Pascal.
Tipul enumerare
Ori de câte ori scriem un program (Borland) PASCAL nu este bine sa ne limitam
numai la tipurile ordinale primitive (predefinite) integer, char si boolean. (Borland)
Pascal, spre deosebire de alte limbaje, ne ofera facilitatea de a crea tipuri ordinale
suplimentare: enumerare (tratat în aceasta sectiune) si subdomeniu. Ambele tipuri de
date se utilizeaza în special pentru a da mai multa claritate programelor.
Exemplu:
PROGRAM...
CONST...
TYPE
zi=(luni, marti, miercuri, joi, vineri, sambata, duminica);
operator=(plus, minus, inmultire, impartire);
unitati=(mm, cm, dm, hm, m, km, dam);
legume=(cartof, morcov, rosie, ceapa);
vehicol=(automobil, tren, vapor, avion);
trufanda=(salata, rosii, vinete, ardei);
culoare=(alb, negru, rosu, verde, albastru);
functie=(decan, prodecan, rector, prorector);
ocupatie=(inginer, profesor, doctor, somer);
procesoare=(Intel, Motorola, Sparc);
VAR
trans:vehicul;
zilucru, zilibera:zi;
operatie:operator;
xum, yum:unitati;
cruditate:trufanda;
leg:legume;
persoana:functie;
...
Exemplu:
....zilucru:=luni;
....zilibera:=duminica;
....operatie:=plus;
....xun:=mm;
....yun:=dm;
....trans:=vapor;
nu din cauza faptului ca (Borland) PASCAL-ul este destept, ci numai pentru faptul ca
zilele saptamânii au fost listate în ordinea lor obisnuita atunci când am declarat
tipul zi. Aceasta ordine aleasa de noi, în mod natural, fireste, forteaza ca ord(luni) sa
fie zero si ord(duminica) sa fie 6. Totusi succ(duminica) si pred(luni) sunt nedefinite
chiar daca pentru noi toti este evident ca dupa duminica urmeaza luni.
Remarci:
daca într-un program PASCAL gasim ca succ(joi) este sâmbata, cauza poate
fi lipsa identificatorului "vineri" din declaratia (originala) a tipului de date
care enumera numele zilelor (zi). Nici o actiune procedurala nu poate plasa
"vineri" la locul cuvenit în cadrul listei cu numele zilelor saptamânii;
daca, în cunoscutul film "Daca e marti e Belgia", fiecare din zilele saptamânii
reprezenta o tara europena (exemplu: marti, Belgia) în (Borland) PASCAL,
enunturi ca:
luni:='Franta';
marti:='Belgia';
-
-
-
duminica:='Italia';
nu sunt legale daca luni,..., duminica reprezinta elementele unui tip enumerare. În
astfel de cazuri luni, marti etc. sunt identificatori, reprezentându-se pe ei însisi - nu
sunt variabile.
Nu este nimic gresit în legatura cu tipul celor sase zile, dar exista o problema cu
duplicarea celor sase nume în tipurile zi si zile. Ce poate raspunde compilatorul
(Borland) PASCAL la succ(joi)? Urmatoarea regula previne astfel de situatii.
Regula:
Al doilea avantaj: tipul de date enumerare confera programului mai multa claritate.
Enuntul:
VAR z:zi;
...
FOR z:=luni TO duminica DO
writeln(...);
Rezultatele executiei programului
Introduceti un numar intre 1 si 365: 1
ziua nr. 1 este ianuarie 1
Introduceti un numar intre 1 si 365: 365
ziua nr. 365 este decembrie 31
Introduceti un numar intre 1 si 365: 500
numarul nu se afla in intervalul 1-365
Introduceti un numar intre 1 si 365: ^Z