IdeApi - A segítség.

Rekord (Pascal)

Sokszor eshet meg, hogy a feladat egy táblázat, több dimenziós tömb, vagy akár egy adatbázis készítése, kezelése.

 A rekord tulajdonképpen egy "saját", változóknak adható típus, a már meglévő alap (esetleg szintén "saját") típusokból.

Egy rekord definiálása:

Type rekord=record

Szoveg:string[30];

Szamok:byte;

end;

A rekordot a forráskódban még a változók előtt kell definiálni, hogy utána hozhassunk létre belőle tömböt.

1. sor: megadom a nevét(rekord).

2-3. sor: a rekordban tárolni kívánt adatok neve(Szöveg,Számok) és típusa(string,byte).

4. sor: lezárom a rekordot.

A rekord mezőire hivatkozni pl. értéket adni neki úgy tudok, hogy megadom a rekord nevét, majd egy pont után a mező nevét.

rekord.Szoveg:="alma";


"Egy tömbnyi rekord"


tomb:array[1..N]of rekord;


Ezzel a sorral egy 'N' elemű tömböt hoztam létre, aminek minden eleme egy-egy rekord. Tegyük fel, hogy az N=3-al és a tömb utolsó elemének "Szoveg" mezőjébe szeretném írni azt,hogy "Sajt".

Ezt egy értékadó utasítással tehetem meg, ami Pascalban valahogy így néz ki:

változó:=a változóba írandó érték;


Esetünkben a változó az a "tomb" nevű tömb harmadik elemének "Szoveg" mezője és a bele írandó érték a "Sajt" string, ezért az értékadó utasításunk így fog kinézni:   

tomb[3].szoveg:='Sajt';


Rekord a rekordban?

Igen, lehetséges, sőt akár "egy tömbnyi rekord" is lehet egy rekord egyetlen mezője,ezeket például így hozhatjuk létre:


type rekord_1:record

mezo_1_1:tipus;

mezo_1_2:tipus;

end;

      

        rekord_2:record

mezo_2_1:rekord_1;

mezo_2_2:array[1..N]of rekord_1;

end;


Ha a "rekord_2" nevű rekord "mezo_2_1"-es mezőjének "mezo_1_2" nevű mezőjébe szeretnék írni, akkor az értékadó utasításom így fog kinézni:


rekord_2.mezo_2_1.mezo_1_2:=érték, amit ebbe a mezőbe szeretnék írni;


Ha a "rekord_2" nevű rekord "mezo_2_2"-es tömbjének N-edik elemének "mezo_1_1"  nevű mezőjébe szeretnék írni, akkor az értékadó utasításom így fog kinézni:


rekord_2.mezo_2_2[N].mezo_1_1:=érték, amit ebbe a mezőbe szeretnék írni;


És ezt még ennél is sokkal tovább lehet bonyolítani, például ha a "rekord_2" nevű rekordból csinálunk egy "N" elemű tömböt.

var tomb[1..N]of rekord_2;


A "tomb" nevű  tömbnek az "N"-edik elemének "mezo_2_1" nevű mezőjének "mező_1_2" es mezőjébe ezzel az utasítással tudok írni


tomb[N].mezo_2_1.mezo_1_2:=érték, amit ebbe a mezőbe szeretnék írni;


Ésígytovább,ésígytovább..





Struktúra (C#)

Ebben a nyelvben a struktúrák (Pascalban rekordok) definiálása más, de a felépítésük hasonló.

struct emberek
{
  public string nev;
  public int kor;
}

 

A struktúra elemeit itt kell létrehoznunk, ez igy néz ki:

emberek[] valtozo = new emberek[150];

Ezzel a sorral most létrehoztunk 150 embert, az első ember nevére pedig így tudunk hivatkozni:

valtozo[1].nev = "Sanyi";

Itt az első ember nevét beállítottuk "Sanyi"-ra, ez így működik a "kor"-ral (és bármilyen másik [Létrehozott] változóval) is;

valtozo[1].kor = 20;