Presentation is loading. Please wait.

Presentation is loading. Please wait.

TIPURI DE DATE STRUCTURATE TIPUL DE DATE ~RECORD~

Similar presentations


Presentation on theme: "TIPURI DE DATE STRUCTURATE TIPUL DE DATE ~RECORD~"— Presentation transcript:

1 TIPURI DE DATE STRUCTURATE TIPUL DE DATE ~RECORD~
învăţare prin proiecte “Să învăţăm inteligent”

2 Ce este tipul record? Cum am vazut deja la tipul string, exista posibilitati de a stoca in memorie cantitati mari de date, cu elemente de acelasi tip. Ce se intampla in cazul in care vreau sa stochez mai multe tipuri de date intr-un singur element ? Un caz concret ar fi varstele unor oameni. Avem nevoie de un loc pentru nume si de un loc pentru varsta ... o variabila string si o variabila byte. Tipul record (inregistrare) permite crearea unui tip de date care sa permita gruparea unor date de tipuri diferite.

3 Declararea unui tip inregistrare:
Mulţimea de valori ale unui tip de date record este constituită din înregistrări . Inregistrarile 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 RECORD se pot efectua toate operaţiile admise de tipul câmpului respectiv. Orice tip de date RECORD poate servi ca tip de bază pentru formarea altor tipuri structurate.

4 Observatie “with… do ” Declaraţia “with”, în asociere cu înregistrările, permite un mod rapid şi uşor acces pentru fiecare dintre membrii înregistrărilor fără a se utiliza punct Ex: type Person = Record Age : Integer; Sex : char; end; var Student : Person; begin Student.Age := 23; Student.Sex := ‘b’; with Student do begin Age := 19; Sex := ‘f’ end; with Student do begin Writeln( 'Age := ', Age ); if Sex=‘b’ then Writeln( 'Sex := barbat' ) else Writeln( 'Sex := femeie' ) end end end.

5 Sa vedem cum facem un programel …
…care sa citeasca si sa afiseze numele si varstele a doua persoane. type   persoana = record {tip inregistrare, definit de noi}     nume: String;     varsta: Byte;   end; var first, second: persoana; {tipul nostru inregistrare} Begin   Write('Dati numele primei persoane: ');   ReadLn(first.nume);   Write('Dati varsta primei persoane: ');   ReadLn(first.varsta);   Write('Dati numele celei de-a doua persoane:');   ReadLn(second.nume);   Write('Dati varsta celei de-a doua persoane: ');   ReadLn(second.varsta);    WriteLn('1. Nume: ', first.nume,  ' - varsta: ', first.varsta,  ' de ani.');   WriteLn('2. Nume: ', second.nume, ' - varsta: ', second.varsta, ' de ani.'); end. Dupa cum se poate vedea in program, fiecare camp dintr-o inregistrare se apeleaza folosind numele inregistrarii . (punct) numele campului (fara spatii).

6 Aplicatie Se consideră informaţia despre elevii unei clase: numărul de ordine( tip integer ), numele şi prenumele( tip string ), anul naşterii( ), luna naşterii( 1-12 ), ziua naşterii( 1-31 ). Să se afişeze lista elevilor născuţi în luna mai, prenumele cărora începe cu litera „B”.

7 Rezolvare Type Elev=record Nr_Ord:integer; Nume,Prenume:string;
An: ; 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 writeln('Introduceti numarul de elevi ai clasei:'); write('n= '); readln(n); for i:=1 to n do 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) 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; readln; end.

8 REZULTATUL PROGRAMULUI:
Introduceti numarul de elevi ai clasei: n=4 Elevii nascuti in februarie, prenumele carora incepe cu “B” sint:  Nr: 2 Numele: Barbu Prenumele: Alexandru Data nasterii: Nr: 3 Numele: Bucur Prenumele: Andrei Data nasterii: Introduceti datele elevului 1 Numarul de ordine din catalog: 1 Numele: Ceahu Prenumele: Igor Anul nasterii: 1984 Luna nasterii: 12 Ziua nasterii: 17 Introduceti datele elevului 2 Numarul de ordine din catalog: 2 Numele: Barbu Prenumele: Alexandru Anul nasterii: 1983 Luna nasterii: 5 Ziua nasterii: 16 Introduceti datele elevului 3 Numarul de ordine din catalog: 3 Numele: Bucur Prenumele: Andrei Anul nasterii: 1986 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

9 CONCLUZII: Utilizarea tipului de date structurat 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.

10 Probleme propuse 1) Se citesc data naşterii unei persoane si data curenta . sa se determine vârsta in ani împliniti a persoanei respective. 2) In registrul unei discoteci sunt trecute persoanele care intra si vârstele lor ( in ani si luni ). Ştiind ca ultima persoana intrata este Dorina Vlad , sa se calculeze media de vârsta a celor ce frecventează discoteca (in ani si luni, aproximativ la numere naturale ). 3) Se citesc de la tastatura n perechi de numere reale reprezentând puncte din plan (în ordinea abscisă, ordonată). Scrieţi un program care să determine măsura celui mai mare segment având ca extremităţi două dintre punctele date. 4) Se introduc de la tastatură mediile generale, numerele şi sexul elevilor dintr-o clasă , să se afişeze clasamentul la învăţătură ale elevilor şi mediile lor în ordine descrescătoare , marcînd cu o fetele şi cu un “#” băieţii cu medii pînă la 6 (exclusiv), cu două steluţe respectiv cu două caractere”#” elevii cu medii între 6 şi 9 (incliv) şi cu trei steluţe respectiv trei caractere “#” pe cei cu medii peste 9. 5) Cunoscandu-se coeficienţii unui număr complex, sa se afişeze modulul si conjugatul sau.

11 Succes !


Download ppt "TIPURI DE DATE STRUCTURATE TIPUL DE DATE ~RECORD~"

Similar presentations


Ads by Google