5 record
TRANSCRIPT
-
7/21/2019 5 Record
1/13
TIPUL DE DATE ARTICOL(RECORD).
-
7/21/2019 5 Record
2/13
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 = record
: T1;
: T2;. . .
: Tn;end;
-
7/21/2019 5 Record
3/13
unde T1,T2,,Tn specific tipul cmpurilor respective. Tipul unuinume de cmp este arbitrar, astfel un cmp poate s fie la rndulsu 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 deatribuire. Aceast atribuire nseamn copierea tuturorcmpurilor din membrul drept n membrul stng.
Fiecare component a unei variabile de tip recordpoate fi specificat explicit, prin numele variabilei idenumirile de cmpuri, separate prin puncte.
Asupra componentelor datelor de tip articol se pot
efectua toate operaiile admise de tipul cm-pului respectiv.
Orice tip de date articol poate servi ca tip de baz pentruformarea altor tipuri structurate.
-
7/21/2019 5 Record
4/13
Exemplu:
program p1;
type
student=record
NP:string[20];
AN:integer;
NM:real;
end;
Am declarat tipul
var a:student; Am declarat variabila a de tipul creat de noibegin
a.np:=Moraru Iurie';a.an:=1986;
a.nm:=8.6;
ncepe programul
writeln('Studentul:',a.np);
writeln('Anul nasterii:',a.an :5);
writeln('Are nota medie:',a.nm :5:2);readln;
end.
Studentul: Moraru Iurie
Anul nasterii: 1986
Are nota medie: 8.60
Monitorul
Moraru Iurie 1986 8.6
-
7/21/2019 5 Record
5/13
program p2;
Uses crt;type Elev=record
Nr_Ord:integer;
N,P:string;
An_nast:1970..2000;L_n:1..12;
Zi_nast:1..31;
end;
Am declarat tipul Elev de tiprecord n care se conincmpuri de tipuri diferite.
ListaElevilor=array[1..40] of Elev;
Am declarat un tablou de tipulelev.
1
2
3
40
NR_ord | N(Numele | P( prenume) | An_nast | l_n |zi_nast
varE:Elev;
LE:ListaElevilor;
i:integer;
n:1..40;
sir:string;
Declarm variabilele.
Program care afieaz la ecran
elevii nscui n februarie i
prenumele ncepe cu A.
-
7/21/2019 5 Record
6/13
begin
writeln('Introduceti numarul de elevi ai clasei:');
write('n= ');
readln(n);
for i:=1 to n do
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;
ncepe programul.
ncepe ciclul din acest program (pentruintroducerea datelor de la tastatur)
-
7/21/2019 5 Record
7/13
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 sefolosete un ciclu.
Sfritul programului.
-
7/21/2019 5 Record
8/13
Introduceti numarul de elevi ai clasei:n= 2Introduceti datele elevului cu numarul de ordine 1
Numele: LeahuPrenumele: IgorAnul nasterii: 1984Luna nasterii: 12Ziua nasterii: 17
Introduceti datele elevului cu numarul de ordine 2Numele: ApopiiPrenumele: AlexandruAnul nasterii: 1983
Luna nasterii: 2Ziua nasterii: 12Elevii nascuti in februarie, prenumele carora incepe cu "A"sint:
2 Apopii Alexandru 12 2 1983.
-
7/21/2019 5 Record
9/13
Program p3;
uses crt;
type data=record
z:1..31;
l:1..12;
a:integer;
end;
Declarm un tip data
persoana=recordnp:string;
dn:data;
end;
Declarm un alt tippersoana cu
variabila dn de tipul data creat de noi.
lista=array[1..50] of persoana;
Avem un tablou de tipul persoana.
Program care afieaz la
ecran o linie din
nregistrare cerut de
utilizator.
-
7/21/2019 5 Record
10/13
var n,i,z:integer;
lp:lista;
Declarm variabilele.
12
3
50
NP | DN
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;
ncepe programul
-
7/21/2019 5 Record
11/13
Partea, deja introdus, a programului are rolul de citireadatelor introduse de la tastatur, iar partea care va urma doarafieaz 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.
-
7/21/2019 5 Record
12/13
-
7/21/2019 5 Record
13/13
Probleme pentru acas
1. Se dau datele a 3 state (denumirea, capitala, nr.populaiei). S se afieze datele celui mai dens populatstat.
2. Utiliznd tipul de date record, s se realizeze un
algoritm pentru efectuarea operaiilor aritmetice(adunarea, scderea, nmulirea, mprirea) asupranumerelor a i b.3. Se dau datele a npersoane (nume, prenume, anulnaterii, nlimea, nr. de telefon, adresa). S se afieze:
a) Datele persoanei mai n vrstb) Datele celei mai nalte persoanec) Persoanele cu un anumit nr. de telefon (numrul cutateste introdus de la tastatur.)