Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
datove typy.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
39 Кб
Скачать
☆

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;