Sunteți pe pagina 1din 13

TIPUL DE DATE ARTICOL

(RECORD).

PARTEA TEORETIC:

Mulimea de valori ale unui tip de date record este


constituit din articole( nregistrri ).

Articolele snt formate din componente, denumite


cmpuri.

Fiecare cmp are un nume ( identificator de cmp).

Spre deosebire de componentele unui tablou, cmpurile


pot fi de tipuri diferite.

Un tip de date articol se definete printr-o structur de forma:

type <nume tip> = record


<nume cmp 1> : T1;
<nume cmp 2> : T2;
...
<nume cmp n> : Tn;
end;

unde T1,T2,,Tn specific tipul cmpurilor respective. Tipul unui


nume de cmp este arbitrar, astfel un cmp poate s fie la rndul
su tot de tip articol. Prin urmare, se pot defini tipuri imbricate.

Fiind date dou variabile de tip articol de acelai tip,


numele variabilelor pot aprea ntr-o instruciune de
atribuire. Aceast atribuire nseamn copierea tuturor
cmpurilor din membrul drept n membrul stng.

Fiecare component a unei variabile de tip record


poate fi specificat explicit, prin numele variabilei i
denumirile de cmpuri, separate prin puncte.

Asupra componentelor datelor de tip articol se pot


efectua toate operaiile admise de tipul cmpului respectiv.

Orice tip de date articol poate servi ca tip de baz pentru


formarea altor tipuri structurate.

Exemplu:
program p1;
type
student=record
NP:string[20];
Am declarat tipul
AN:integer;
NM:real;
end;
var a:student;
Am declarat variabila a de tipul creat de noi
begin
ncepe programul
a.np:=Moraru Iurie';
a.an:=1986;
Moraru Iurie
1986 8.6
a.nm:=8.6;
writeln('Studentul:',a.np);
Studentul: Moraru Iurie
writeln('Anul nasterii:',a.an :5);
Anul nasterii: 1986
Are nota medie: 8.60
writeln('Are nota medie:',a.nm :5:2);readln;
end.
Monitorul

Program care afieaz la ecran


NR_ord | N(Numele
| P( prenume) | An_nast | l_n |zi_nast
elevii nscui n februarie i
1
prenumele ncepe cu A.
program p2;
2
Uses crt;
3
type Elev=record

Nr_Ord:integer;
40
N,P:string;
An_nast:1970..2000;
Am declarat tipul Elev de tip
L_n:1..12;
record n care se conin
Zi_nast:1..31;
cmpuri de tipuri diferite.
end;
ListaElevilor=array[1..40] of Elev;
Am declarat un tablou de tipul
var
elev.
E:Elev;
LE:ListaElevilor;
Declarm variabilele.
i:integer;
n:1..40;
sir:string;

ncepe programul.

begin
writeln('Introduceti numarul de elevi ai clasei:');
write('n= ');
readln(n);

ncepe ciclul din acest program (pentru


for i:=1 to n do
introducerea datelor de la tastatur)
begin
LE[i].Nr_Ord:=i;
writeln('Introduceti datele elevului cu numarul de ordine ',i);
write('Numele: '); readln(le[i].n);
write('Prenumele: '); readln(le[i].p);
write('Anul nasterii: '); readln(le[i].an_nast);
write('Luna nasterii: '); readln(le[i].l_n);
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].L_n=2) and (LE[i].P[1]='A') then
with LE[i] do
writeln(Nr_Ord,' ',N,' ',P,' ',zi_nast,' ',l_n,' ',an_nast,'.');
end;
readkey;
end.

O instruciune de afiare n care se


folosete un ciclu.

Sfritul programului.

Introduceti numarul de elevi ai clasei:


n= 2
Introduceti datele elevului cu numarul de ordine 1
Numele: Leahu
Prenumele: Igor
Anul nasterii: 1984
Luna nasterii: 12
Ziua nasterii: 17
Introduceti datele elevului cu numarul de ordine 2
Numele: Apopii
Prenumele: Alexandru
Anul nasterii: 1983
Luna nasterii: 2
Ziua nasterii: 12
Elevii nascuti in februarie, prenumele carora incepe cu "A"
sint:
2 Apopii Alexandru 12 2 1983.

Program p3;
uses crt;
type data=record
z:1..31;
l:1..12;
a:integer;
end;
persoana=record
np:string;
dn:data;
end;

Declarm un tip data


Program care afieaz la
ecran o linie din
nregistrare cerut de
utilizator.

Declarm un alt tip persoana cu


variabila dn de tipul data creat de noi.

lista=array[1..50] of persoana;

Avem un tablou de tipul persoana.

var n,i,z:integer;
lp:lista;

ncepe programul

Declarm variabilele.
NP

1
2
3

50

begin
clrscr;
Write('Introdu numarul persoanelor: '); readln(n);
for i:=1 to n do
with lp[i] do begin writeln;
writeln('Introdu datele persoanei: ',i);
write('Nume Prenume: '); readln(np);
write('data nasterii: '); readln(dn.z);
write('luna nasterii: '); readln(dn.l);
write('anul nasterii: '); readln(dn.a); end;

DN

Partea, deja introdus, a programului are rolul de citirea


datelor introduse de la tastatur, iar partea care va urma doar
afieaz datele de pe o linie indicat de utilizator.
clrscr;
begin
write('Introdu numarul linei pe care doresti sa o vizualizezi: ');
readln(i); writeln(lp[i].np,' ',lp[i].dn.z,/',lp[i].dn.l,/',lp[i].dn.a);
end;
readln;
end.

Sfritul programului.

Probleme pentru acas


1. Se dau datele a 3 state (denumirea, capitala, nr.
populaiei). S se afieze datele celui mai dens populat
stat.
2. Utiliznd tipul de date record, s se realizeze un
algoritm pentru efectuarea operaiilor aritmetice
(adunarea, scderea, nmulirea, mprirea) asupra
numerelor a i b.
3. Se dau datele a n persoane (nume, prenume, anul
naterii, nlimea, nr. de telefon, adresa). S se afieze:
a) Datele persoanei mai n vrst
b) Datele celei mai nalte persoane
c) Persoanele cu un anumit nr. de telefon (numrul cutat
este introdus de la tastatur.)