informatica.pptx

Upload: vladik-negru

Post on 05-Mar-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Tipul RECORD (articol)

Tipul RECORD (articol)

Realizat de N.Vlad

Alaturi deARRAY, (Borland) PASCAL accepta alte trei tipuri de date structurate:RECORD,SETsiFILE. Desi nu sunt unice n (Borland) PASCAL,RECORD-urile sunt elemente nepretuite ale limbajului, deoarece ele faciliteaza prelucrarea datelor structurate n fisiere, dar n plus ele ne permit sa creamARRAY-uri de date agregate de tipuri mixte - un instrument foarte puternic de organizare a datelor.

In cadrul acestei conversatii, la capitolulARRAY-uri multidimensionale(exemplul precedent) am folositARRAY-ul bidimensionalscoalapentru a retine numarul de fete din cele 7 grupe pe o linie si numarul de baieti pe alta linie.StructuraARRAY-ului a fost potrivita ntruct toate datele de intrare sunt de acelasi tip: ntreg. In continuare, dorim sa extindem facilitatileprogramului masivincluznd numele profesorului de informatica din cele 7 grupe. In acest caz, nu am putea extinde structura originala pentru a forma unARRAY3*7 ntruct legile PASCAL-ului cer, dupa cum va amintiti, caARRAY-urile sa fie omogene; nu putem combina un nume (sir de caractere) cu componente ntregi pentru a forma unARRAY. Totusi (Borland) PASCAL-ul ofera o alternativa si anume tipul structurat numitRECORD,care ne permite sa realizam asociatii neomogene. Iata o declaratie corespunzatoare pentru descrierea unei grupe.

Exemplu:TYPE...p=0..99;...nume=STRING[30];...grad=RECORD;......prof:nume;......fete, baieti:p........END;VAR...scoala:RECORD;......numescoala:nume;......gr:ARRAY[0..6]OFgrad..........END;

In declaratii, grupele (grad) sunt declarate ca avnd tipulRECORD. Siscoalaeste unRECORD(nregistrare) fizic. Descrierea lui n zonaVARpresupune ca luiscoalai se aloca memorie si apoi este apelat ca un articol (RECORD). La executie, memoria alocata pentruscoalaeste ilustrata n continuare:

In secventa de program data,scoalaeste numai un exemplu ce contine tipulgrad, dar aceasta din urma nu a fost folosita . In alt context am fi putut declara:VARscoala1,scoala2,scoala3:grad;

Identificatorii cmpului joaca pentruRECORD-uri acelasi rol pe care variabila index l are pentruARRAY-uri, dar modul de accesare al unui cmp (selector) din structura unuiRECORDeste diferit de cel pentru accesarea unui element dintr-unARRAY. Iata, cum ne putem adresa unui cmp din scoala :

scoala.numescoalanumele scoliiscoala.gr[3].profnumele profesorului din grupa a treiascoala.grARRAY-ul lui gradscoala.gr[5].fetenumarul de fete din grupa a cinceascoala.gr[2].baietinumarul de baieti din grupa a douaLanturile de referinta ale cmpului din stnga sunt numite cmpuri selectoare (field selectors, n limba engleza). Nu exista diagrama de sintaxa pentru acest termen deoarece un cmp selector este o variabila.