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= ');

readlnNu;

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.

Ultima modificare: luni, 6 iunie 2011, 19:24