====== Datové typy v programování ====== **Datový typ** definuje doménu hodnot, kterých může proměnná nabývat, a množinu operací, které lze s těmito hodnotami provádět. Správná volba datového typu je klíčová pro efektivní správu paměti a stabilitu programu. ===== 1. Základní (primitivní) datové typy ===== Tyto typy jsou vestavěné přímo v jazyce a odpovídají základnímu způsobu, jakým [[it:math:binary|binární soustava]] ukládá data. ==== Celá čísla (Integers) ==== Slouží k ukládání čísel bez desetinné čárky. Rozlišují se podle rozsahu (počtu bitů): * **int / integer:** Standardní celé číslo (obvykle 32 nebo 64 bitů). * **short / long:** Menší nebo větší rozsah paměti. * **Signed vs. Unsigned:** Signed typy mohou být záporné, Unsigned pouze nezáporné (nabízejí však dvojnásobný kladný rozsah). ==== Desetinná čísla (Floating point) ==== Slouží k ukládání čísel s plovoucí desetinnou čárkou (reálná čísla). * **float:** Základní přesnost. * **double:** Dvojitá přesnost (využívá více paměti, ale omezuje zaokrouhlovací chyby). ==== Logické hodnoty (Booleans) ==== Přímo vycházejí z [[it:math:logic|digitální logiky]]. * Nabývají pouze dvou hodnot: **true** (1) nebo **false** (0). ==== Znaky (Characters) ==== Ukládají jeden symbol (písmeno, číslice, interpunkce). * **char:** Tradičně 1 bajt (ASCII), v moderních jazycích často 2-4 bajty (Unicode/UTF-8). ---- ===== 2. Textové a složené typy ===== ==== Řetězce (Strings) ==== Sekvence znaků tvořící slova nebo věty. V mnoha jazycích je string považován za objekt nebo pole znaků. ==== Pole (Arrays) ==== Kolekce prvků stejného datového typu uložených v paměti za sebou. Přístup k prvkům probíhá pomocí indexu (obvykle od 0). ---- ===== 3. Typová kontrola (Type System) ===== Jazyky se liší v tom, jak přísně vyžadují definici datových typů: ^ Typ systému ^ Popis ^ Příklady ^ | **Statické typování** | Typ proměnné se určuje při psaní kódu a nelze jej měnit. | C++, Java, Rust | | **Dynamické typování** | Typ se určuje až za běhu programu podle obsahu. | Python, JavaScript | | **Silné typování** | Jazyk nedovolí operaci mezi nekompatibilními typy (např. sčítat číslo a text). | Python, Java | | **Slabé typování** | Jazyk se snaží typy automaticky převést, což může vést k chybám. | JavaScript, PHP | ---- ===== 4. Typové konverze (Casting) ===== Někdy je nutné změnit datový typ za běhu: * **Implicitní konverze:** Prohlížeč/kompilátor ji udělá sám (např. přičtení celého čísla k desetinnému). * **Explicitní konverze:** Programátor vynutí změnu (např. převod textu "123" na číslo 123). ---- ===== 5. Moderní koncepty: Ukazatele a Reference ===== V nízkoúrovňových jazycích (C, C++) existují speciální typy: * **Pointer (Ukazatel):** Proměnná, která neobsahuje hodnotu, ale adresu v paměti, kde je hodnota uložena. * **Null / None:** Speciální hodnota značící, že proměnná na nic neodkazuje (častý zdroj chyb typu //NullPointerException//). ---- //Související články:// * [[it:math:binary|Binární soustava a bity]] * [[it:sw:jazyky|Přehled programovacích jazyků]] * [[it:data:sql|Datové typy v SQL databázích]] //Tagy: {{tag>programming dev software-engineering data-types coding}}//