Invia.cz
Last minute
Tunisko
Dovolená v Chorvatsku
Pojeďte do Egypta
Bulharsko
Vydělávejte peníze s INVIA.CZ
Datový typ definuje v programování druh proměnných (a konstant). Je určen oborem hodnot a zároveň typickými výpočetními operacemi, které lze s daty provádět (srovnej abstraktní datový typ). Datový typ nemůže být určen pouze oborem hodnot, protože existují i datové typy, které se liší pouze v operacích nad těmito typy.
Téměř každý programovací jazyk má některé datové typy předdefinované. Pomocí nich může programátor tvořit typy nové (abstraktní datové typy).
Obsah |
Nemají vnitřní strukturu. Složitější typy jsou ve skutečnosti složeny z těchto základních.
boolean) – true nebo false (také 1 nebo 0)integer) – např. 256, 1, 0, -65535, 0xA9 (tzv. hexadecimální zápis), …char) – např. 'a', 'A', 'g', ' ', '5', '%', …Tyto typy jsou ordinální – hodnoty tohoto 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 dojde k tzv. přetečení na první).
float, real) – 3.14, 0.5 (podle anglosaské konvence zapsané s desetinnou tečkou)Datový typ obsahuje jeden nebo více prvků. Říkáme, že je homogenní, jsou-li prvky stejného typu.
array) – [21, -5, 11], může být vícerozměrné (např. dvourozměrné označujeme jako matici),string) – „Ahoj“, " ", „loopback 127.0.0.1“,enum) – programátorem definovaný typ, např. pro barvu karet:
enum barva {
piky,
srdce,
kary,
krize
};
Jednotlivé prvky strukturovaného typu jsou dostupné pod číslem, které určuje jejich pořadí (tzv. index), obvykle počítáno od 0. Pro výše uvedené příklady: pole[1] = -5, retezec[0] = 'A' (resp. ' ' a 'l'), obdobně pro výčtový typ.
Datový typ je složen z prvků různých datových typů (opak homogenního) a navenek se chová jako kompaktní celek. Např. v jazyku Pascal typ record nebo v jazyku C typ struct:
typedef struct {
int vek;
char *jmeno;
enum { muz, zena } pohlavi;
} Osoba;
list) – obdoba pole, ['a', 'b', 9, „cokoliv?“]pointer) – ukazuje na místo v paměti (např. na jinou proměnnou nebo na určitý prvek pole)file) – reprezentuje (ukazatel na) soubor (ať už uložený na pevném disku či virtuální)Datový typ, který je možné parametrizovat jiným typem. V jazyce Pascal to může být např. typ pole s parametrem a jaké prvky budou v poli uloženy (např. array of char). Mnohem větší možnosti, jak parametrizovat typy, poskytuje systém šablon v C++ nebo generické typy uvedené v jazycích Java 5, či C# 2.0.
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 např. několik datových typů pro celé číslo (liší se podle jazyka, v tabulce jsou uvedeny obvyklé hodnoty):
| Datový typ | Velikost v paměti | Rozsah |
|---|---|---|
| Celočíselné typy | ||
| Boolean | 1 bit (ačkoliv obvykle uložen jako 1 bajt) | 0 až 1 |
| Byte | 8 bitů (= 1 bajt) | 0 až 255 |
| Word | 2 bajty | 0 až 65 535 |
| Double Word | 4 bajty | 0 až 4 294 967 295 |
| Integer | 4 bajty | –2 147 483 648 až 2 147 483 647 |
| Double Integer | 8 bajtů | –9 223 372 036 854 775 808 až 9 223 372 036 854 775 807 |
| Typy s plovoucí čárkou | ||
| Real | 4 bajty | 1E-37 až 1E+37 (6 desetinných míst) |
| Double Float | 8 bajtů | 1E-307 až 1E+308 (15 desetinných míst) |
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 např. může spojovat řetězce nebo přidávat další prvky do pole bez omezení.
Signatura jednoduchého datového typu Bool a operací (funkcí) na něm by se dala symbolicky zapsat:
Druhy dat:
Operace: