
- •3.1. Jednoduché datové typy
- •3.1.1. Datový typ integer
- •3.1.2. Datový typ boolean
- •3.1.3. Datový typ char
- •3.1.4. Datový typ výčet
- •3.1.5. Datový typ interval
- •3.1.6. Datový typ real
- •3.2. Strukturované datové typy
- •3.2.1. Datový typ pole
- •3.2.2. Datový typ string - řetězec
- •3.2.3. Datový typ záznam
- •3.2.4. Datový typ množina
- •3.2.5. Datový typ soubor
3.2.3. Datový typ záznam
Tento datový typ se skládá z určitého počtu položek, které mohou být různého typu. každá položka má přiděleno jméno, neboliidentifikátor položky, pomocí něhož se provádí výběr položky. Na příkladu si ukážeme, jak taková deklarace typu záznam v programu vypadá:
type |
Datum = record |
den: 1.31; |
mesic: 1..12; |
rok: 1..2000 |
end; |
Informace = record |
jmeno, prijmeni: array[1..15]of charů |
datum_narozeni: datum; |
pohlavi: (muz, zena); |
stav: (svobodny, zenaty, rozvedeny, vdovec) |
end; |
|
var |
Osoba: Informace; |
Výše uvedený příklad nám ukazuje, že položky nemusí být jen pevných předdefinovaných typů, ale mohou být i námi definovaných typů. Příkladem je položka datum_narození, která je sama datový typ záznam, který jsme definovali výše.
Zpřístupnění položky proměnné typu záznam má na starosti tzv. selektor záznamu a má tvar:
proměnná_typu_záznam.identifikátor položky
vzhledem k našemu příkladu:
Osoba.jmeno;
Osoba.datum_narozeni.mesic;
atd.
V případech, kdy v určité části programu pracujeme s položkami téhož záznamu, přichází nám vhod příkaz with, který nám usnadňuje přístup k jednotlivým položkám. V praxi tento příkaz pracuje takto:
with Osoba do |
begin |
jmeno := 'David'; |
prijmeni := 'Padrta'; |
with datum_narozeni do |
begin |
den := 11; |
mesic := 2; |
rok := 1975 |
end; |
pohlavi := muz; |
stav := svobodny |
end; |
Tak, to byly záznamy. Pokud navíc provedeme malou obměnu této datové struktury, získáme tzv. VARIANTNÍ ZÁZNAMY. Jsou to takové záznamy, které mají ve své struktuře navíc ještě variantní část. Někdy se totiž stane, že definujeme takové typy, které jsou pouze různé varianty téhož typu, a proto je lze napsat do variantní části. Typy, specifikující několik variant záznamu, se nazývají typy variantních záznamů. Samozřejmě nesmí chybět příklad:
type Informace = record |
jmeno, prijmeni: array[1..15]of char; |
datum_narozeni: datum; |
case pohlavi: (muz, zena) of |
muz: (vaha: real; |
vousy: boolean); |
zena: (miry: array[1..3]of integer) |
end; |
3.2.4. Datový typ množina
Tento datový typ je složen z ordinálních typů. Každý takový typ určuje typ prvků dané množiny a nazývá se bázový typ. Deklarace vypadá takto:
type |
mnozina_znaku = set of char; |
Jestliže datový typ char označuje celkem n různých znaků, pak typ mnozina_znaku označuje množinu znaků, kterou tvoří všechny podmnožiny množiny znaků typu char. Bázový typ nesmí mít více než 256 možných hodnot a ordinální hodnoty nejnižšího a nejvyššího prvku musí být v rozsahu 0..255. Každý množinový typ zahrnuje také prázdnou množinu. Množinové a relační operace jsou:
+ |
sjednocení dvou množin |
- |
rozdíl jedné množiny od druhé |
* |
průnik dvou množin |
= |
rovnost dvou množin |
<> |
nerovnost dvou množin |
<= |
"je podmnožinou" |
>= |
"obsahuje" |
Operandy mohou být pouze množiny s kompatibilními bázovými prvky. Typ výsledku operací +, *, a - je dán typem operandů, typ výsledků relačních operátorů je Boolean.
Příklad:
type |
barva = (cervena, zelena, modra, zluta, hneda); |
odstin = set of barva; |
|
var |
odstin1, odstin2: odstin; |
Dále u tohoto typu můžeme testovat přítomnost určitého prvku v množině, a to pomocí operátoru in. Tento operátor vrací hodnotu TRUE, pokud hledaný prvek se v množině nachází, jinak vrací operátor hodnotu FALSE. A opět příklad:
cervena in odstin1 + odstin2; |