Kirjed

Massiiv ja hulk sobivad vaid ühetüübiliste andmete esitamiseks. Eritüübiliste komponentide e. väljade ühendamiseks kasutatakse keeles Pascal kirjeks nimetatavat andmetüüpi. Kirje iga väljaga seotakse tüüp ja nimi. Väljadele viidatakse kirje nimest, punktist ja välja nimest koosneva liitnime abil. 

Näiteks on kirjet mugav kasutada isikuregistri koostamiseks. Registrikaart sisaldab erinevat tüüpi välju, näiteks isiku nimi on mõistlik kujutada stringina, pikkust ning kaalu arvudena jne. 

Kirje deklareerimine 

Kuna kirje deklareerimine on suhteliselt töömahukam kui teiste andmetüüpide kirjapanemine, siis harilikult deklareeritakse kirje uue tüübina ja sellele tüübile pannakse nimi, mida saab edaspidi muutujate deklareerimisel kasutada. Muidugi ei ole selline teguviis kohustuslik, kuid siiski soovitatav

Kirjetüübi deklareerimise süntaks on järgmine: 

'TYPE' <tüübi_nimi> '=' 'RECORD' <väljade_loetelu> [';'] 'END' .
väljade_loetelu -> <väli> [ ';' <väljade_loetelu> ] .
väli -> <väljanimede_loetelu> ':' <tüüp> .
väljanimede_loetelu -> <välja_nimi> [ ',' <väljanimede_loetelu> ] .
Loome näitena ka sobiliku tüübideklaratsiooni isikuandmete jaoks: 

 

Type Isikud = Record

Eesnimi : String[15]; 

Perekonnanimi : String[20];

Vanus : Integer;

Isikukood : String[11];

End;

 

Kirje kasutamine 

Deklareeritud kirjetüübi kasutamiseks tuleb deklareerida muutuja, mille tüübiks on kirjetüüp. Kuna massiivi deklareerimisel on lubatud elemendi tüübina kasutada igasugust tüüpi, siis võib moodustada ka kirjete massiive, mida nimetame tabeliks. Paneme kirja muutujate määratlused: 

Var

Klient : Isikud;

Kliendid : ARRAY[1..1000] OF Isikud;


 

program andmebaas;

uses crt;

const

max = 10;

type

Kirje = record

Nimi: string; (*  isiku nimi *) 

S_aasta: word; (*  sünniaasta *) 

Pikkus: word; (*  pikkus sentimeetrites *) 

Kaal: word; (*  kaal kilogrammides *) 

end;

var

Register: array [1..max] of Kirje;

Mitu: word; (*  näitab, mitu kirjet on registris *) 

(*  uue kirje sisestamine *) 

procedure Sisesta;

begin

writeln('Sisesta uus kirje');

(*  Sisestatakse uus kirje *) 

write('nimi: ');

readln(Register[Mitu+1].Nimi);

(*  Kui sisestati tühi string, siis seda kirjet ei lisata registerisse *) 

if Register[Mitu+1].Nimi <> '' then

begin

write('Sünniaasta: ');

readln(Register[Mitu+1].S_aasta);

write('Pikkus: ');

readln(Register[Mitu+1].Pikkus);

write('Kaal: ');

readln(Register[Mitu+1].Kaal);

Mitu := Mitu + 1;

end;

end;

(*  Väljastatakse kõik registerisse sisestatud kirjed *) 

procedure Valjasta;

var

i: word;

begin

for i:=1 to Mitu do

begin

writeln;

writeln(Register[i].Nimi);

writeln(Register[i].S_aasta, 'a.');

writeln(Register[i].Pikkus, 'cm.');

writeln(Register[i].Kaal, 'kg');

end;

end;

 

PROOVIGE ISE:

 

1. Looge mingite arvutikomponentide kirje ja nende kirjete massiiv. Kasutage tabelarvutusprogrammi andmete importimiseks veebilehelt http://www.hinnavaatlus.ee, salvestage andmed tekstifaili (comma separated text) ja kasutades seda faili lugege kirjed massiivi.

 

2. Looge põllukultuuride kirje (Ladinakeelne nimetus, eestikeelne nimetus, inglisekeelne nimetus, vegetatsiooniperioodi pikkus päevades) ja põllukultuuride massiiv.

Kodutööde ja arvestusülesannete väljatrükk peab sisaldama kommentaaripäist programmi tegevuse eesmärgiga ning autori nime ja rühma.

N: program Silinder:
(* programm leiab silindri pindala ja ruumala *)
(* Autor: Aadu Kadakas AV-11 *)