Record/hu

From Free Pascal wiki

Deutsch (de) English (en) español (es) suomi (fi) français (fr) magyar (hu) português (pt) русский (ru)


Rekord


A rekord (record) típus egy magasan szervezett adatszerkezet Pascal-ban.

Míg az egyszerű adatszerkezetek, mint a tömb, vagy a set, egyforma típusú elemekből állnak, addig a rekord többfajta elemből állhat, és nagy bonyolultságú lehet. A rekord egyes részeit mezőknek nevezzük.

Egy rekordnak tekinthető például a való életben a telefonkönyv névjegyzékének egy eleme. Ebben az esetben egy adott rekord egy ember nevét, címét, telefonszámát tartalmazza. Már itt jól látható, hogy különböző típusú mezők vannak felhasználva: a név String típusú, a telefonszám Integer típusú, a cím pedig lehet String vagy szintén rekord típusú - ebben az esetben a címet tovább finomíthatjuk irányítószám, utca, házszám, lépcsőház, stb. formában.

Lássuk a telefonkönyves példánkat a gyakorlatban:

 type
   TCim = record
     iranyitoSzam, hazSzam: Integer;  { Irányító- és házszám mezők. }
     varos, utca: String;             { Város- és utcanév mezők. }
   end;
   
   TSzemely = record
     csaladNev, keresztNev : String;  { A személy családnevét, és keresztnevét tartalmazó mezők. }
     cim: TCim;                       { A személy címét tartalmazó mező - szintén rekord. }
     telefonSzam: Integer;            { A telefonszámot tartalmazó mező. }
   end;

Minden egyes mezőt a rekordnév utáni pont operátorral érhetünk el:

  a.csaladNev := 'Kovacs';
  a.keresztNev := 'Istvan';
  a.telefonSzam := 789534;

A pont operátor használatával mélyebb szintekre is eljuthatunk a rekordban, például a cím megadásánál:

  a.cim.iranyitoSzam := 1234;
  a.cim.varos := 'Peldavaros';
  a.cim.utca := 'Kossuth Lajos utca';
  a.cim.hazSzam := 56;

Egy másik módszer, amely leegyszerűsíti a mezők értékadását, a with szerkezet használata:

 with a do
   begin
     csaladNev := 'Kovacs';
     keresztNev := 'Istvan';
     telefonSzam := 789534;
   end;

A rekordot a program egy önálló entitásként kezeli, ezért a rekordok másolhatók - feltéve, hogy a két változó azonos típusú:

 var
   a, b: TSzemely;
 begin
   { értékmegadások az 'a' rekordhoz }
   ...
   ...
   b := a;
 end;

A rekordokat széleskörűen használják a Pascal-ban logikailag összefüggő adatok csoportosítására.