Záznam (record) je uživatelem definovaný typ — to znamená, že programátor sám určí (při psaní programu), jaké údaje bude obsahovat. Definuje se v části Type a je ukončen endem:
Type
Datum = Record
Den : Byte;
Mesic: Byte;
Rok : Integer;
end;
V části Var pak je tento typ přiřazován jednotlivým proměnným:
Var
Dnes: Datum;
Dovnitř záznamu, k jeho částem, se přistupuje „přes tečku":
Dnes.Rok:= 1996;
Readln( Dnes.Mesic );
Další možností je použití příkazu With:
With proměnná do příkaz;
Tento příkaz říká, že až na další pracujeme s jednou proměnnou. Nemusíme tedy vypisovat jméno proměnné, ale stačí psát pouze jména položek:
With Datum do Begin
Readln( Den );
Readln( Mesic );
WriteLn( Den, Mesic, Rok );
end;
Program Dotaznik; Uses Crt, DOS; Type Osoba = Record Jmeno : String[31]; Prijmeni: String[31]; RodneCis: String[11]; {RRMMDD/nnnn} Adresa : Array[1..3]of String[63]; Telefon : String[31]; Vek : Byte; Pohlavi : Char; end; Var Nekdo: Osoba; Procedure WriteXY( X, Y: Byte; S: String ); Begin GotoXY( X, Y ); Write( S ); End; Function Stari( RC: String ): Integer; Begin End; Function Pohl( RC: String ): Char; Begin End; Procedure Form; Begin ClrScr; WriteXY( 2, 2, 'Jméno : '); WriteXY( 2, 3, 'Príjmení: '); WriteXY( 2, 4, 'Rodné c.: '); WriteXY( 2, 5, 'Adresa : '); WriteXY( 2, 8, 'Telefon : '); End; Procedure Nacti( var Kdo: Osoba ); Var i: Byte; Begin TextColor( 11 ); Form; TextColor( 14 ); GotoXY( 13, 2 ); Readln( Kdo.Jmeno ); GotoXY( 13, 3 ); Readln( Kdo.Prijmeni ); GotoXY( 13, 4 ); Readln( Kdo.RodneCis ); For i:=1 to 3 do Begin GotoXY( 13, 4+i ); Readln( Kdo.Adresa[i] ); end; GotoXY( 13, 8 ); Readln( Kdo.Telefon ); End; Procedure Vokaz( var Kdo: Osoba ); Var i: Byte; Begin TextColor( 11 ); Form; WriteXY( 40, 2 , ' Stárí:' ); WriteXY( 40, 3 , 'Pohlaví:' ); TextColor( 10 ); WriteXY( 13, 2, Kdo.Jmeno ); WriteXY( 13, 3, Kdo.Prijmeni ); WriteXY( 13, 4, Kdo.RodneCis ); For i:=1 to 3 do Begin WriteXY( 13, 4+i, Kdo.Adresa[i] ); end; WriteXY( 13, 8, Kdo.Telefon ); Kdo.Vek:= Stari( Kdo.RodneCis ); Kdo.Pohlavi:= Pohl( Kdo.RodneCis ); GotoXY( 49, 2); Write( Kdo.Vek ); WriteXY( 49, 3, Kdo.Pohlavi ); TextColor( 7 ); End; Begin Nacti( Nekdo ); Vokaz( Nekdo ); End.
|
|