Sunteți pe pagina 1din 0

Tipul nregistrare

Consideraii teoretice
Operaii
Probleme propuse
Soluiile problemelor propuse
Capitolul
12


12.1. Consideraii teoretice
Tipul nregistrare reprezint cea mai flexibil structur de date. Spre deosebire de tipul
tablou, acest tip cuprinde un numr fix sau variabil de componente numite cmpuri, al
cror tip nu este neaprat acelai, care constituie logic o unitate de prelucrare. Tipurile
diferite ale cmpurilor din componena sa dau articolului caracterul de structur neo-
mogen.
Componentele nu pot fi indexate printr-o expresie, ca n cazul tablourilor, ci se se-
lecteaz prin intermediul identificatorilor de cmp care se definesc la declararea tipu-
lui nregistrare. Datorit acestui fapt, identificatorul de cmp se mai numete i
selector.
Tipul nregistrare este un tip definit de utilizator, anonim sau nu, dup cum se defi-
nete n seciunile var, const sau type. i aici, ca i n cazul tablourilor, declaraii
diferite de tipuri anonime introduc tipuri diferite, chiar dac descrierile sunt identice.
n funcie de numrul componentelor i tipurile acestora, tipul nregistrare se m-
parte n dou categorii:
1) tipul nregistrare fix (articol fix) reprezint o structur cu un numr fixat de
componente, nu neaprat de acelai tip;
2) tipul nregistrare cu variante (articol cu variante) reprezint o structur variabil
ale crei componente difer prin numr sau prin tip.

12.1.1. Tipul nregistrare fix (articol fix)
Selectorii, separai prin virgul, care apar n aceeai declaraie de tip, definesc cmpuri
de acelai tip. n cazul existenei mai multor selectori, acetia trebuie s fie distinci,
pentru a permite identificarea cmpurilor. Selectorii (identificatorii de cmp) folosesc
la selectarea componentelor; de aceea, nu li se pot atribui valori.
Cmpurile unui tip nregistrare pot fi i ele structurate ca articole, caz n care tipul
componentelor este un tip nregistrare;
12. Tipul nregistrare 131

Exemple
1.
type adresa=record
strada:string[25];
nr:1..120;
scara:Char;
et:1..20;
ap:1..450
end;
var adrese:array[1..10] of adresa;

Tipul adresa definete o structur ale crei componente se descriu i se selecteaz
cu ajutorul denumirilor cmpurilor componente:
2.
type articol=record
nume,adr:string[30];
clasa:string[10];
data_nasterii:record { tip anonim }
an:1930..2030;
luna:1..12;
zi:1..31
end
end;
var elevi:array[1..30] of articol;

S-a declarat un tablou numit elevi cu 30 de elemente de tip articol. Fiecare
component a tabloului cuprinde cmpurile nume, adr, clasa i data_nasterii.
Ultimul cmp are tot structur de articol, fiecare cuprinznd cmpurile an, luna, zi.
3.
O transcriere echivalent a exemplului 2. este:
type data=record
an:1930..2030;
luna:1..12;
zi:1..31
end;
var elevi:array[1..100] of record
nume,adr:string[30];
clasa:string[10];
data_nasterii:data
end;

132 12. Tipul nregistrare

12.2. Operaii

12.2.1. Atribuirea
Printre operaiile care acioneaz la nivelul unei variabile de tip nregistrare atribuirea
funcioneaz ca n cazul tablourilor. Unei variabile de tip nregistrare i se poate atribui
valoarea unei alte variabile de acelai tip nregistrare.

12.2.2. Selectarea unei componente
Selectarea unei componente se realizeaz prin intermediul specificatorului de cmp
sau cu ajutorul instruciunii with.

Exemplu
Pentru variabila elevi se pot face urmtoarele selectri de componente:
elevi[1].nume
elevi[1].data_nasterii.an, care selecteaz cmpul nume, respectiv cmpul
an din articolul data_nasterii, cuprins n primul element al tabloului elevi.

Cu elementele unei variabile de tip nregistrare sunt permise toate operaiile admise
de tipul componentei.
Notaia specificatorului de cmp se poate simplifica folosind instruciunea with.
Un selector dintr-o nregistrare poate avea acelai nume cu o variabil oarecare din
program, eventual cu un selector dintr-o alt nregistrare; aceast situaie nu creeaz
confuzii, ntruct selectorul va fi precedat de identificatorul nregistrrii;
Instruciunea with trebuie utilizat cu mult atenie, pentru a evita erorile.

12.3. Probleme propuse

12.3.1. Statistic la capacitate
Avei la dispoziie tabelul cu rezultatele obinute la examenul de capacitate de ctre
elevii din clasa a VIII-a de la coala voastr. Acest tabel conine: numele, prenumele i
rezultatele obinute la cele trei probe de capacitate de ctre elevi. Trebuie s afiai o
list cu numele i prenumele elevilor, aranjai n ordinea descresctoare a mediilor
obinute. n dreptul numelui fiecrui elev va trebui s afiai 'REUIT' sau 'RES-
PINS'. Un elev a reuit s promoveze examenul de capacitate dac a obinut minim
nota 5 la toate cele trei probe de examen.

Date de intrare
Se d un numr natural n, reprezentnd numrul de elevi participani la examen, apoi,
pentru fiecare elev, se d numele, prenumele, nota
1
, nota
2
, nota
3
.
12. Tipul nregistrare 133

Date de ieire
Se vor afia numele i prenumele elevilor, media la examen i mesajul 'REUIT'/
'RESPINS', fiecare pe cte o singur linie, n ordinea descresctoare a mediilor.

Restricii i precizri
2 n 100;
datele de intrare sunt ntotdeauna corecte;
dac un elev nu se prezint la o prob de examen nota la proba respectiv este 0.00.
doi elevi care au aceeai medie vor fi afiai n ordine alfabetic.

12.4. Soluiile problemelor propuse

12.4.1. Statistic la capacitate
Pentru rezolvarea problemei vom defini un tip nregistrare Telev avnd urmtoarea
structur:
TElev=record
nume,prenume:string[30];
nota1,nota2,nota3,media:Real;
reusit:Boolean
end;

Media unui elev se va calcula ca fiind suma celor trei note mprit la 3.
Vom defini un tablou ale crui componente sunt de tip TElev care va reine n
fiecare component datele despre un elev i vom sorta acest tablou conform cerinelor
din problem. Putei alege oricare dintre algoritmii de sortare.

S-ar putea să vă placă și