Rekord (adatszerkezet)
A rekord a legegyszerűbb adatszerkezetek egyike, amely két vagy több egymástól független és potenciálisan eltérő típusú változót (mezőt) foglal egyetlen egységbe. A rekord mezői a memóriában szigorúan egymást követően foglalnak helyet a rekordban történő felsorolásuk sorrendjében, bár szóhatárra igazítás alkalmazása esetén az egyes mezők között kitöltő (filler) adatterületek is jelen lehetnek, amelyek tartalma nem definiált. A rekord méretét a mezők és ezen kitöltő területek összege határozza meg.
A legtöbb programozási nyelv a beépítettek mellett megengedi saját rekordszerkezetek definiálását is a programozó számára, amelyhez tipikusan a rekord mezői nevének és típusának felsorolását követeli meg. A rekordok egymásba ágyazhatók - azaz egy rekord mezője maga is lehet egy rekord -, és egyes nyelvekben (pl. Pascal) lehetőség van alternatív ill. feltételes rekordszerkezet definiálására is, ami a rekord egy részének több eltérő mezőkészletként történő értelmezését is lehetővé teszi. Ebben az esetben a rekord mérete a a fix mezők ill. a legnagyobb alternatív mezőkészlet méretének összegével egyezik.
A rekord mezőit a programozási nyelvek szintjén általában nevükön keresztül lehet elérni, gépi kódra fordítva azonban a rekord kezdőcímét meghatározó báziscímhez képest eltolással kerülnek elérésre.
A legtöbb objektumorientált programozási nyelv az objektumokat belsőleg rekordokként kezeli, azzal a különbséggel, hogy az objektumok adatmezői mellett azok metódusainak címet is ez a speciális - a programozó számára nem látható és elérhető - rekord részeként tárolja, az ún. Virtuális Metódus-Táblában (VMT).
Rekordok használata különböző nyelvekben
Turbo Pascal
Turbo Pascal-ban a rekord logikailag összetartozó adatokat fog össze.
Program Rekord;
Type TDatum = Record
ev:String;
ho:1..12;
nap:1..31;
End;
Var datum:TDatum; {egy TDatum típusú rekord létrehozása}
Begin
{hivatkozás a rekord egyes mezőire}
datum.ev:=2010;
datum.ho:=7;
datum.nap:=11;
{illetve lekérdezés}
With datum Do Begin
WriteLn('Ev : ',ev);
WriteLn('Ho : ',ho);
WriteLn('Nap: ',nap);
End;
ReadLn;
End.
Go
package main
import "fmt"
type TDatum struct {
ev, ho, nap int
}
func main() {
datum := TDatum{2010,8,6}
fmt.Println("Ev :",datum.ev)
fmt.Println("Ho :",datum.ho)
fmt.Println("Nap:",datum.nap)
}