Datový typDatový typ definuje v programování druh nebo význam hodnot, kterých smí nabývat proměnná (nebo konstanta). Datový typ je určen oborem hodnot a zároveň výpočetními operacemi, které lze s hodnotami tohoto typu provádět (srovnej abstraktní datový typ). Nemůže být určen pouze oborem hodnot, protože existují i datové typy lišící se pouze v operacích, které je s nimi možné provádět. Součástí programovacího jazyka je definice základních datových typů. Pomocí těchto základních typů může ve většině jazyků programátor tvořit nové složené typy. Jednoduché datové typyNa tuto kapitolu jsou přesměrována hesla jednoduchý typ dat a primitivní datový typ.
Jak již bylo zmíněno, jednoduché (také elementární) datové typy jsou většinou přímo zabudovány do jazyka, přičemž v běžně používaných jazycích nejsou parametrizovatelné. Složitější typy pak mohou vznikat skládáním elementárních datových typů. Každý počítačový jazyk může mít poněkud odlišnou sadu elementárních datových typů. U mnoha počítačových jazyků závisí parametry elementárních datových typů na architektuře procesoru, na kterém má běžet program. To platí zvláště u kompilátorů jazyka C a C++. Ordinální datové typyNíže uvedené typy jsou ordinální. Hodnoty ordinálního typu tvoří lineárně uspořádanou množinu, kde pro každý prvek je přesně definovaný předchůdce i následovník (z posledního prvku ve většině jazyků dochází k přetečení na první). Z funkčního hlediska tak lze k jednoduchým celočíselným datovým typům řadit i výčtový typ, i když jeho hodnoty jsou definovány programátorem. Ordinální celočíselné datové typy jsou základem současné informatiky. Logická hodnotaV Javě a Pascalu odpovídá logické hodnotě typ Celé čísloPro celé číslo se v Pascalu používá typ Ve většině jazyků mají celá čísla omezený rozsah. Pokud je celé znaménkové číslo omezeno například na 16 bitů, tak bude mít rozsah -32768 až +32767, což je dané kódováním ve dvojkovém doplňkovém kódu. Pokud výsledek operace překročí rozsah, dochází k přetečení (32767 + 1 dá -32768). Znaménková i bezznaménková čísla při běžném kódování vytvářejí algebraický okruh. Některé jazyky (například Python) místo přetečení pro číslo vyhradí větší množství paměti. Tím je usnadněno programování, avšak snižuje se výkon programu. Kromě sčítání, odčítání, násobení, celočíselného dělení a zbytku po dělení je možné provádět nad celými čísly i bitové operace, jako jsou logický součin, logický součet a logická negace. Tyto operace se provádí nad jednotlivými bity operandů ve dvojkové reprezentaci. ZnakPro znak se obvykle používá označení Jazyky, které přímo nevyužívají unicode (například Php) mohou pracovat s unicode zakódovaným po bajtech pomocí kódování utf-8. Další podrobnosti viz článek znaková sada. Výčtový typI když jde o programátorem definovaný typ, lze jej považovat za jistou variantu celočíselného typu. Jde o to, že uživatel může definovat typ například pro barvu karet: enum barva { piky, srdce, kary, krize }; V podstatě jde o celé číslo, které smí nabývat pouze zvolené hodnoty. Díky tomu mohou být programy přehlednější a také lépe laditelné. Při programování by sice pro každou barvu bylo možné definovat konstantu, avšak při ladění by byla v debuggeru v proměnné barva přímo vidět zda jde o piky, srdce, káry nebo kříže ... Neordinální datové typyU neordinálních datových typů není jednoznačně určen předchůdce a následovník každé hodnoty. Reálné číslonebo také číslo s plovoucí řádovou čárkou ( Zásadní výhodou reálných čísel je, že mohou ve stejné velikosti paměti reprezentovat mnohem větší rozsah hodnot, než celé číslo. Například 32bitové celé číslo má rozsah řádově +-109 s krokem 1, zatímco 32bitové reálné číslo má typický rozsah řádově +-10+-38 s 6 až 7 platnými číslicemi. Cenou za vyšší dynamický rozsah je horší přesnost u velkých čísel (což často nevadí) a vyšší nároky na architekturu procesoru. Reálná čísla v počítači mohou také nabývat speciálních hodnot, které reprezentují neplatné výsledky. Pro reprezentaci reálných čísel se většinou používají některé z formátů definovaných ve standardu IEEE 754. Prázdný datový typ
V některých jazycích existuje rovněž prázdná hodnota ošetřující neplatný výsledek - null nebo nil, která je vlastně současně zvláštním datovým typem. Výsledkem většiny operací s konstantou nil je opět nil, takže chování programu je deterministické. Konstanta Složené datové typyNa tuto kapitolu je přesměrováno heslo Složený datový typ.
Složené datové typy obsahují více prvků: Homogenní jsou, když se skládají z prvků stejného typu. Jednotlivé prvky pole jsou dostupné pod číslem, které určuje jejich pořadí (index). Nejčastější je konvence používaná v jazyce C, kde indexy začínají číslem 0. Pro výše uvedené příklady: pole[1] = -5, retezec[0] = 'A' (resp. ' ' a 'l'), obdobně pro výčtový typ. V některých jazycích musí prvky pole obsahovat pouze položky stejného typu, jiné jazyky to nevyžadují. Hlavní výhodou pole je možnost okamžitého přístupu ke kterékoli jeho položce. Rychlý přístup umožňuje mimo jiné implementaci rychlých algoritmů pro Řadicí algoritmus položek. Čas potřebný ke vkládání nebo odebírání položek lze zmenšit použitím pomocného pole, ve kterém jsou uloženy pouze indexy položek, zvláště pokud jednotlivé položky zabírají větší množství paměti.
Záznam může být složen z prvků různých datových typů (opak homogenního) a navenek se chová jako kompaktní celek. Například v jazyku Pascal typ typedef struct { int vek; char *jmeno; enum { muz, zena } pohlavi; } Osoba; Některé programovací jazyky povolují přiřazovat například do polí položky různého datového typu. Výhodou záznamů je však právě to, že jsou pevně definovány. Při práci se záznamem určitého typu se lze spolehnout na to, že bude mít určité položky, jejichž typ je definován. Zvláštní datové typy
Generický datový typJde o datový typ, který může zastupovat více datových typů. Velké možnosti, jak parametrizovat typy, poskytuje systém šablon v C++, nebo generické typy používané v jazycích Java 5, či C# 2.0. Rozsahy číselných datových typůV paměti počítače jsou všechna data reprezentována posloupností 1 a 0 (dvojková soustava). Počet míst (bitů) vyhrazených pro daný datový typ omezuje rozsah hodnot, kterých může nabýt. Existuje tak mimo jiné několik datových typů pro celé číslo lišících se podle jazyka. V následující tabulce jsou uvedeny obvyklé hodnoty, používané na překladačích pro 32bitové architektury procesorů:
Některé jazyky nevyžadují deklaraci délky proměnné a dynamicky (za běhu programu) přiřazují další paměť, je-li to potřeba. Programátor může například spojovat řetězce nebo přidávat další prvky do pole bez omezení. Typová signaturaSignatura jednoduchého datového typu Bool a operací (funkcí) na něm by se dala symbolicky zapsat: Druhy dat:
Operace:
Související článkyExterní odkazy
|