
- •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.1. Jednoduché datové typy
Jednoduché datové typy jsou definovány svým identifikátorem a typem v deklarační oblasti. Pro tyto typy jsou definovány relace rovnost a nerovnost dvou hodnot a dále relace větší a menší.
Jednoduché datové typy se dále ještě dělí na ordinální a neordinální typy. To, že některé typy mají vlastnost být ordinálníznamená, že hodnota, náležící do tohoto typu, má svého předchůdce, svého následovníka a její pozici lze číselně ohodnotit. Ordinálních typů je pět: integer, boolean, char a uživatelem definované typy interval a výčtový typ. Neordinální typ je pouze jeden a jmenuje se real.
Pro ordinální typy platí:
hodnoty ordinálního typu jsou uspořádanou množinou hodnot
každá hodnota je sdružena s ordinalitou, což je celočíselná hodnota, udávající pozici v uspořádané množině hodnot
první ordinální hodnota každého typu (kromě typu integer) je 0, další 1, 2, atd.
každá hodnota ordinálního typu má předchůdce (kromě první hodnoty) a následovníka (kromě poslední hodnoty)
pro zjišťování ordinální hodnoty argumentu, předchůdce a následovníka existují funkce:
succ(x) . . . vrací ordinální hodnotu následovníka
pred(x) . . . vrací ordinální hodnotu předchůdce
ord(x) . . . vrací ordinální hodnotu argumentu, kde x je hodnota ordinálního typu
další funkce:
inc(v) . . . zvětší hodnotu proměnné v o jedničku
inc(v,h) . . . zvětší hodnotu proměnné v o h
dec(v) . . . zmenší hodnotu proměnné v o jedničku
dec(v,h) . . . zmenší hodnotu proměnné v o h
3.1.1. Datový typ integer
Tento datový typ specifikuje konečnou souvislou podmnožinu celých čísel. Umožňuje uživateli využít pět datových typů, které se od sebe liší rozsahem hodnot a tím i použitou velikostí paměti. Přehled je v následující tabulce:
Typ |
Rozsah |
byte/bitů |
shortint |
-128 .. 127 |
1/8 |
integer |
-32 768 .. 32 767 |
2/16 |
longint |
-2 147 483 648 .. 2 147 483 647 |
4/32 |
byte |
0 .. 255 |
1/8 |
word |
0 .. 65 535 |
2/16 |
comp |
-263 + 1 .. 263 - 1 |
8/64 |
Pro hlavního zástupce tohoto typu integer jsou hodnoty definovány v rozsahu -Maxint <= 0 <= Maxint, kde -Maxint = -32 768 a Maxint = 32 767. Všechny typy integer jsou použitelné i bez přítomnosti matematického koprocesoru. (I když v dnešní době asi tato poznámka ztrácí na významu.)
Pro hodnoty tohoto typu jsou definovány operace s výsledky rovněž typu integer:
+ |
sčítání |
- |
odčítání nebo unární operace změny znaménka |
* |
násobení |
div |
celočíselné dělení (celá část po dělení) |
mod |
zbytek po celočíselném dělení (Tato operace pro dva argumenty i mod j je definována takto: je-li j <= 0, nastane při výpočtu chyba. Jinak se i mod j rovná hodnotě i - (k * j) pro takové celé k, pro které je 0 <= i mod j < j |
Operace +, - ,* jsou definovány pro všechny dvojice celých čísel, pokud výsledek leží v intervalu <-Maxint, Maxint>
Další operace, definované nad tímto typem, jsou relační:
= |
rovnost |
<> |
nerovnost |
< |
menší než |
> |
větší než |
<= |
menší nebo rovno |
>= |
větší nebo rovno |
Pokud hodnoty operandů splňují relaci, výsledkem je logická hodnota true (pravda), v opačné případě false (nepravda).
Standardní funkce, definované nad tímto typem (první dvě dávají výsledek typu integer, třetí typu boolean):
abs(i) |
zjistí absolutní hodnotu čísla i |
sqr(i) |
vypočte druhou mocninu čísla i |
odd(i) |
vrátí logickou hodnotu true, pokud je i liché číslo, jinak vrátí logickou hodnotu false |