Datový typ

Základem každého programu jsou proměnné. Abychom v paměti počítače vytvořili proměnnou, potřebujeme počítači zároveň nějak sdělit kolik místa v paměti pro ni má vyhradit (nebo lépe řečeno alokovat). Datové typy mají obvykle předefinovanou velikost a zároveň dávají hodnotám v paměti význam.

Proměnná je tedy určena datovým typem a její název je pro programátora srozumitelné označení.

Každý programovací jazyk poskytuje určitou sadu datových typů. Datový typ specifikuje množinu hodnot a množinu operací s hodnotami. Máme jazyky, které jsou staticky typované a jazyky, které jsou dynamicky typované.

Typy dělíme na:

Primitivní
Datové typy
Ukazatelé
Strukturované

Jednoduché (primitivní)

Jejich hodnoty jsou z hlediska operací nedělitelné (atomické). Hodnotou proměnné primitivního typu je její samotný obsah, tedy například celé číslo, reálné číslo, znak abecedy atd.

Čísla

Bývá zvykem rozlišovat v programech čísla celá a reálná. Běžné programovací jazyky nám přímo nabízejí pro tyto dvě kategorie čísel různé předdefinované standardní datové typy. Celočíselný datový typ bývá označován nejčastěji jako integer nebo int, reálný číselný typ nese zpravidla označení real nebo float.1

Proč čísla rozlišujeme? Nejspíš víme, že každé celé číslo si můžem představovat jako číslo reálné. Například jazyk Javascript rozdíl nedělá a nemá odlišný datový typ pro celé a reálné číslo. V jazyku tedy najdeme pouze reálné číslo pod označením number.

Zcela opačný přístup však volí například jazyk C, typ number bychom našli pod označením double. Nejenže tedy rozlišujeme reálná a celá čísla, můžeme rozdělit do skupinek i samotná reálná čísla a tak máme typ float a double. A pro celá čísla máme v C typy jako short, int a long.

Důvodem tohoto rozdělení není způsobit programátorovi rozhodovací paralýzu a bolest hlavy, ale každý takový typ má velký význam pro samotný počítač. Každý typ má odlišný způsob vnitřní reprezentace a v souvislosti s tím i provádění výpočtů. Pokud víme, že v určité situace používáme malou množinu čísel, která obsahuje pár hodnot, nepotřebujeme pro ni vyhrazovat mnoho místa paměti a výpočty se budou provádět rychleji.

Napříklady primitivních datových typů

  • v jazyku C je int, char, double, enum, short, long, void …​
  • v Javascriptu jde o string, number, bigint, boolean, undefined, null a symbol.

Reference a ukazatelé (pointery)

Jejich hodnoty reprezentují adresu v paměti počítače. Typy ukazatel se rozlišují podle typu proměnné, na kterou ukazují.

Strukturované

Jejich hodnoty se skládají ze složek (hodnota typu je kartézským součinem hodnot složek). Jsou to pole, struktury, unie, soubory.

Druhy prázdných typů

Datové typy se mohou nacházet také v prázdných stavech, které bývají často zdrojem nepochopení. Datový typ často prochází určitým životním cyklem, nejprve je deklarován, potom inicializovan a může být později i zaniknut.

  • Nedefinovano (Undefined): jde o stav, kdy byla deklarována proměnná, ale nebyla jí přiřazena žádná hodnota. Některé jazyky mají speciální hodnotu pro tento stav, jiné nastavují výchozí hodnotu a někde (např. v C, C++) zůstane garbage hodnota.
  • Nedeklarovano (Undeclared): značí situaci, kdy proměnná nebyla v paměti vytvořena. Varuje nás, před pokusem o přístup k jakékoli proměnné, která ještě nebyla inicializována nebo deklarována.

Zdroje

[1]: Algoritmy a programovací techniky, Pavel Töpfer 2007. 978-80-7196-350-9

Související