Tipul de date Record (inregistrare)
Tipul ınregistrare este un tip compus format dintr-un numar de componente, numite campuri. Spre deosebire de variabilele de tip ARRAY, campurile, elemente ale variabilelor de tip RECORD, pot fi de tipuri diferite. Fiecare camp are un nume, identificatorul de camp. Numarul componentelor poate fi fix sau variabil. In primul caz se spune ca avem o structura fixa, ın cel de al doilea caz avem o structura cu variante.
Tipul inregistrare faciliteaza prelucrarea datelor structurate în fisiere si ne permit sa cream ARRAY-uri de date agregate de tipuri mixte - un instrument foarte puternic de organizare a datelor.

Sintaxa:



Exemplu Program:
Program ce numara cate hoteluri au pretul(euro)/persoana/noapte<80 si nr. de stele>2.
Program Turism; {Turism - numele programului}
uses crt; {Directiva ce permite utilizarea bibliotecii CRT, adica pot fi executate astfel de functii, precum: curatarea ecranului dupa executare, adaugarea culorilor, sunetelor in program etc.}
Type hotel=record {Declaram inregistrarea hotel prin Type}
facil, den_h, nume_adm, tip_masa, date_cont, locatie: string; {Declaram campurile facil, den_h, nume_adm, tip_masa, date_cont, locatie de tip string - sir de caractere}
stele, pret: integer; {Declaram campurile stele, pret de tip integer - numere intregi}
end; {Sfarsitul declaratiei tipului, campurilor}
var H: array[1..10000] of hotel; {Declaram variabila H de tip array , elementele de tip hotel- declarat anterior}
i,n,k: integer; {Declaram variabila i,n,k de tip integer - numere intregi}
begin {Inceputul programului}
clrscr; {Comanda ce va curata automat ecranul dupa executie}
textcolor(15); {Coloreaza textul programului in culoarea cu nr. 15 - white}
textbackground(1); {Coloreaza fundalul programului in culoarea cu nr. 1 - blue}
write('Introdu nr: '); {Afiseaza pe ecran "Introdu nr: "}
readln(n); {Citeste numerul introdus de la tastatura, atribuie variabilei valorea respectiva, trece in rand nou}
for i:=1 to n do {Parcurge toate elementele pana cand i=n si efectueaza urmatoarele sarcini}
begin {Inceputul ciclului}
write('Introdu denumirea hotelului nr ',i); {Afiseaza pe ecran "Introdu denumirea hotelului nr", afiseaza valorea lui i}
readln(H[i].den_h); {Citeste valoarea introdusa de la tastatura si o introduce in campul den_h}
write('Introdu nume administrator: '); {Afiseaza pe ecran "Introdu nume administrator:"}
readln(H[i].nume_adm); {Citeste valoarea introdusa de la tastatura si o introduce in campul nume_adm}
write('Introdu locatie: '); {Afiseaza pe ecran "Introdu locatie:"}
readln(H[i].locatie); {Citeste valoarea introdusa de la tastatura si o introduce in campul locatie}
write('Introdu facilitati: '); {Afiseaza pe ecran "Introdu facilitati:"}
readln(H[i].facil); {Citeste valoarea introdusa de la tastatura si o introduce in campul facil}
write('Introdu tip masa: '); {Afiseaza pe ecran "Introdu tip masa:"}
readln(H[i].tip_masa); {Citeste valoarea introdusa de la tastatura si o introduce in campul tip_masa}
write('Introdu pretul(euro)/persoana/noapte: '); {Afiseaza pe ecran "Introdu pretul(euro)/persoana/noapte:"}
readln(H[i].pret); {Citeste valoarea introdusa de la tastatura si o introduce in campul pret}
write('Introdu date de contact: '); {Afiseaza pe ecran "Introdu date de contact:"}
readln(H[i].date_cont); {Citeste valoarea introdusa de la tastatura si o introduce in campul date_cont}
write('Introdu nr de stele: '); {Afiseaza pe ecran "Introdu nr de stele:"}
readln(H[i].stele); {Citeste valoarea introdusa de la tastatura si o introduce in campul stele}
end; {Sfarsitul ciclului; intoarcere la sintaxa for}
for i:=1 to n do {Parcurge toate elementele de pe randuri, se repeta pana cand i=n si efectueaza urmatoarea sarcina}
begin {Inceputul ciclului}
writeln('Hotelul nr.',i); {Afiseaza pe ecran "Hotelul nr.", afiseaza valoarea lui i, trece in rand nou}
writeln('Denumire hotel: ',H[i].den_h); {Afiseaza pe ecran "Denumire hotel: ", afiseaza elementele de pe campul H[i].den_h, trece in rand nou}
writeln('Stele: ',H[i].stele); {Afiseaza pe ecran "Stele: ", afiseaza elementele de pe campul H[i].stele, trece in rand nou}
writeln('Nume administrator: ',H[i].nume_adm); {Afiseaza pe ecran "Nume administrator: ", afiseaza elementele de pe campul H[i].nume_adm, trece in rand nou}
writeln('Locatie: ',H[i].locatie); {Afiseaza pe ecran "Locatie: ", afiseaza elementele de pe campul H[i].locatie, trece in rand nou}
writeln('Facilitati: ',H[i].facil); {Afiseaza pe ecran "Facilitati: ", afiseaza elementele de pe campul H[i].facil, trece in rand nou}
writeln('Tip masa: ',H[i].tip_masa); {Afiseaza pe ecran "Tip masa: ", afiseaza elementele de pe campul H[i].tip_masa, trece in rand nou}
writeln('Pret(euro)/persoana/noapte: ',H[i].pret); {Afiseaza pe ecran "Pret(euro)/persoana/noapte: ", afiseaza elementele de pe campul H[i].pret, trece in rand nou}
writeln('Date contact: ',H[i].date_cont); {Afiseaza pe ecran "Date contact: ", afiseaza elementele de pe campul H[i].date_cont, trece in rand nou}
end; {Sfarsitul ciclului; intoarcere la sintaxa for}
k:=0; {Ii atribuim variabilei k, care va calcula numarul hotelelor , valoarea initiala 0}
for i:=1 to n do {Parcurge toate elementele de pe randuri, se repeta pana cand i=n si efectueaza urmatoarea sarcina}
begin {Inceputul ciclului}
if (H[i].pret<80) and (H[i].stele>2) then {Daca elementul de pe campul H[i].pret are valoarea mai mica decat 80 si valoarea elementului de pe campul H[i].stele are valoarea mai mare decat 2 }
inc(k); {Adaugam la valoarea lui nr 1}
end; {Sfarsitul ciclului; intoarcere la sintaxa for}
writeln(k,' hotele corespund descrierii'); { Afiseaza valorea lui k, afiseaza pe ecran " hotele corespund descrierii",trece in rand nou}
writeln('Autor: Mirela Burduja'); {Se afiseaza pe ecran fraza: " Autor: Mirela Burduja",trece in rand nou}
readkey; {La apasarea unei taste, trece din ecranul negru in ecranul albastru}
end. {Sfarsitul programului}
Screenshot-uri:




