1.3. TIPURI DE DATE ARTICOL (RECORD)
Mulţimea de valori ale unui tip de date record este constituită din articole( înregistrări ).Artico-
lele sînt formate din componente, denumite câmpuri. Spre deosebire de componentele unui tablou, câmpurile pot fi de tipuri diferite. Fiecare câmp are un nume ( identificator de câmp ).
Un tip de date articol se defineşte printr-o structură de forma
type <nume tip> = record
<nume câmp 1> : T1;
<nume câmp 2> : T2;
. . . . . . . . . . . . . . . . . .
<nume câmp n> : Tn;
end;
unde T1,T2,…,Tn specifică tipul câmpurilor respective. Tipul unui nume de câmp este arbitrar, astfel un câmp poate să fie la rândul său tot de tip articol. Prin urmare, se pot defini tipuri imbricante.
Fiind date două variabile de tip articol de acelaşi tip, numele variabilelor pot apărea într-o ins-
trucţiune de atribuire. Această atribuire înseamnă copierea tuturor câmpurilor din membrul drept în membrul stâng.
Fiecare componentă a unei variabile de tip record poate fi specificată explicit, prin numeleva-
riabilei şi denumirile de câmpuri, separate prin puncte.
Asupra componentelor datelor de tip articol se pot efectua toate operaţiile admise de tipul câm-
pului respectiv.
Orice tip de date articol poate servi ca tip de bază pentru formarea altor tipuri structurate.
PROBLEMA REZOLVATĂ:
program lucr5;
uses
crt;
type
Elev=record
Nr_Ord:integer;
Nume,Prenume:string;
An:1970..2000;
Luna:1..12;
Zi:1..31;
end;
ListaElevilor=array[1..40] of Elev;
var
E:Elev;
LE:ListaElevilor;
i:integer;
n:1..40;
sir:string;
begin
clrscr;
writeln('Introduceti numarul de elevi ai clasei:');
write('n= ');
readln;
for i:=1 to n do
begin
LE[i].Nr_Ord:=i;
writeln('Introduceti datele elevului cu numarul de ordine ',i);
write('Numarul de ordine in catalog: ');readln(le[i].nr_ord);
write('Numele: ');readln(le[i].nume);
write('Prenumele: ');readln(le[i].prenume);
write('Anul nasterii: ');readln(le[i].an_nast);
write('Luna nasterii: ');readln(le[i].luna_nast);
write('Ziua nasterii: ');readln(le[i].zi_nast)
end;
writeln('Elevii nascuti in februarie, prenumele carora incepe cu "A" sint:');
for i:=1 to n do
begin
if (LE[i].LunaNastere=2)and(LE[i].Prenume[1]='A') then
with LE[i] do
writeln(Nr_Ord,' ',Nume,' ',Prenume,' ',zi,' ',luna,' ',an'.')
end;
readkey
end.
REZULTATUL PROGRAMULUI:
Introduceti numarul de elevi ai clasei:
n=4
Introduceti datele elevului 1
Numarul de ordine din catalog: 1
Numele: Leahu
Prenumele: Igor
Anul nasterii: 1984
Luna nasterii: 12
Ziua nasterii: 17
Introduceti datele elevului 2
Numarul de ordine din catalog: 2
Numele: Apopii
Prenumele: Alexandru
Anul nasterii: 1983
Luna nasterii: 2
Ziua nasterii: 16
Introduceti datele elevului 3
Numarul de ordine din catalog: 3
Numele: Ababii
Prenumele: Andrei
Anul nasterii: 1986
Luna nasterii: 2
Ziua nasterii: 23
Introduceti datele elevului 4
Numarul de ordine din catalog: 4
Numele: Profir
Prenumele: Arcadii
Anul nasterii: 1987
Luna nasterii: 3
Ziua nasterii: 21
Elevii nascuti in februarie, prenumele carora incepe cu “A” sint:
Nr: 2 Numele: Apopii Prenumele: Alexandru Data nasterii: 16 2 1983
Nr: 3 Numele: Ababii Prenumele: Arcadii Data nasterii: 23 2 1986
CONCLUZII:
Utilizarea tipului de date structurat articol( record ) permite lucrul cu o cantitate mai mare de date în comparaţie cu alte tipuri de date structurate studiate până acum. Un avantaj mare pentru tipul articol reprezintă faptul că el poate fi utilizat aproximativ ca un tablou, dar câmpurile sale, spre deosebire de elementele tabloului, pot fi de tipuri total diferite.