Informatika gyűjtemény

NézetNyomtat

Rekord adattípus

Sokszor fordul elő, hogy különböző típusú elemi adatok összetartoznak, a feladat szempontjából nagyobb egységnek tekinthető objektumot írnak le. Például egy iskolai nyilvántartásban egy diák adatait (név, lakcím, TAJ-szám, születési dátum, évfolyam,...) célszerű egységbe zárva kezelni. Az egységbe zárás "legősibb" eszköze a rekord.
Típus Tdiák = Rekord
    név : karakterlánc
    cím : karakterlánc
    született : dátum
    ...
Rekord vége
A rekord típus mezőkből áll. A mezők adatok, nevük és típusuk van. Rekord adatszerkezet használatakor a mezők értékét a mezőszelektor segítségével érjük el.
p.:= 42
p.:= 137
távolság := sqrt(p.x*p.x+p.y*p.y)
A mezők típusa általában bármi lehet, ami az adott programozási nyelvben rendelkezésre áll, illetve a programban mi definiáltuk korábban.

Példa program pascal nyelven

program pontrend; //pontok rendezése, origótól való távolságuk alapján

type Tpont = Record
        x : integer;
        y : integer;
        end; 

var T : array[1..10] of Tpont;

procedure beolvas;
var i : byte
begin
    for i := 1 to 10 do readln(T[i].x, T[i].y);
end;

function d(pont : Tpont):longint; //Jó nagy lehet...
begin
    d := pont.x*pont.x+pont.y*pont.y; //Elegendő a távolságok négyzetét összehasonlítani.
end;

procedure rendez;
var i, j : byte;
    tmp : Tpont;
begin
    for i := 1 to 9 do 
        for j := i + 1 to 10 do
            if d(T[i]) > d(T[j]) then // csere
            begin 
                tmp  := T[i];
                T[i] := T[j];
                T[j] := tmp;
            end;
end;

procedure kiir;
var i : byte
begin
    for i := 1 to 10 do writeln(T[i].x, ' ', T[i].y);
end;



begin
    beolvas;
    rendez;
    kiir;
    readln; // Mert különben nem látszana.
end.