5 record

Upload: didi

Post on 03-Feb-2018

214 views

Category:

Documents


0 download

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.)