Záznam

Popis
Typ záznam je nehomogénna štruktúra (prvky štruktúry môžu byť rôzneho typu). Podobne ako v poli aj tu teda môžme do jednej premennej zapísať viac hodnôt. Každá hodnota v tejto štruktúre má svoje meno aj cez toto meno je aj táto hodnota prístupná. Takúto štruktúru môžme potom výhodne použiť na zápis
Deklarácia typu, premenných
Podobne ako pri štruktúre pole je výhodné si vytvoriť pomenovaný štruktúrovaný typ. Postup by mohol byť napr.

TYPE    názov = RECORD
                  zoznam_prem1 : typ_prem1;
                  zoznam_prem2 : typ_prem2;
			           . . . 
                END;
		
Príklady deklarácií záznamov:

TYPE           Tdatum = RECORD
                  den    : 1..31;
                  mesiac : 1..12;
                  rok    : 1900..21
               END;	  

               Tosoba = RECORD
                  Meno   : string;
                  DatNar : Tdatum;
                  Pohl   : boolean;
               END;
			   
               Tkniha = RECORD
                  Nazov   : string;
                  Autor   : Tosoba;
                  Rok_vyd : 1900..2100	  
               END;
		
Všimnime si, že štruktúry popísané skôr môžme použiť v deklaráciách iných štruktúr. Tiež si všimnite, že každý popis štruktúry je ukončený slovom END.
Pozn.
Štruktúra môže obsahovať štruktúru rovnakú ako je ona sama ale postup je tam trochu iný a tu sa tým nebudem zaoberať. Keď mám vytvorene pomenované nové typy môžem deklarovať premenné.

VAR		datum : Tdatum;
		osoba1, osoba2 : Tosoba;
		kniha1, kniha2 : Tkniha;     
		
Po deklarovaní premenných sa v pamäti vyhradí priestor pre tieto premenné a môžme ich používať.
Použitie
Práca s celou štruktúrou naraz
Premenná typu RECORD sa môže použiť
  • priraďovacom príkaze napr. osoba1 := osoba2; kniha.autor := osoba2;
  • parameter podprogramu
Práca s položkami štruktúry
Každá položka má v štruktúre jedinečné meno a prístup ku nej je pomocou operátora bodka. S položkami (jednoduchého typu) potom pracujeme ako s každou inou premennou - možme jej priraďovať hodnotu, používať ju vo výrazoch a pod.
napr. Datum.den := 15; Kniha.Autor.DatNar := datum;
Použitie with
Ide o pomôcku pre "lenivých" programátorov, ktorých unavuje neustále písať identifikátor premennej typu RECORD s bodkou aby sa dostali ku jej položkám.
Príklad.

with osoba do
  with osoba.datNar do
begin
  Meno := "Peter Velký"
  den  := 15;
  mesiac := 3;
end;  				
				
Varianty štruktúr
Ak evidujeme udaje o ľudoch často sa stáva, že o niektorej skupine potrebujeme zapisovať iné údaje ako o druhej. Variantný zápis umožňuje to isté pamäťové miesto patriace štruktúre využívať viacerým premenným.
Príklad.

TYPE	Tsurad = RECORD
			case integer of
			1: (x,y: real);
			2: (r, fi: real);
			end;
		Tutvar = RECORD
			case typ : (kruh, stvorec, obdlznik) of
			kruh : (r: real);
			stvorec : (a: real);
			obdlznik: (c,d: real);
			end; 	
Var sur: Tsurad;
    utvar:Tutvar;
Begin
    sur.x:=25.6;
    if utvar.typ = obdlznik then writeln( utvar.c,' ',utvar.d);
End.					
			
Premenná sur obsahuje dve reálne položky ich mená môžu byť x,y alebo r,fi. Keď ale zmením premennú x zmení sa aj premenná r - majú spoločnú pamäť. Premenná utvar obsahuje jednu premennú typ (jej typ je určený vymenovaním) a vyhradí miesto podľa najdlhšej vetvy case - tu to budú ešte 2 reálne položky.
RECORD môže mať len jednu variantnú časť a musí byť na konci popisu štruktúry.
Príklady