1 / 29

Datové typy

Verze 2009.01. Datové typy. 6. A1PRG - Programování – Seminář Ing. Michal Heczko heczko@fai.utb.cz. Agenda. Co je to „Datový typ“ Celočíselné datové typy Racionální datové typy Prázdný typ (void) Typ definovaný uživatelem (typedef) Výčtový typ (enum) Struktury. Datové typy.

jenski
Download Presentation

Datové typy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Verze 2009.01 Datové typy 6 A1PRG - Programování – Seminář Ing. Michal Heczko heczko@fai.utb.cz

  2. Agenda • Co je to „Datový typ“ • Celočíselné datové typy • Racionální datové typy • Prázdný typ (void) • Typ definovaný uživatelem (typedef) • Výčtový typ (enum) • Struktury

  3. Datové typy • Pro uchovávání uživatelských hodnot, výsledků výpočtů a dalších hodnot používáme proměnné. • Pro každou proměnnou je nutné definovat datový typ: • Definuje jaká hodnota bude uložena v dané proměnné • Definuje velikost paměti, která je proměnné vyhrazena.

  4. Celočíselné datové typy • Rozdělení • Znaménkové (klíčové slovo signed) • Kladná a záporná čísla • Neznaménkové (klíčové slovo unsigned) • Pouze kladná čísla a 0

  5. Celočíselné datové typy • Způsob uložení neznaménkových čísel v paměti: • Př. Uložení čísla 131

  6. Celočíselné datové typy • Způsob uložení znaménkových čísel v paměti • Př. Uložení čísla 131 • Př. Uložení čísla -131

  7. Celočíselné datové typy Pozn.: Datový typ long long int zavádí až norma C99

  8. Celočíselné datové typy Pozn.: Datový typ long long int zavádí až norma C99

  9. Celočíselné datové typy • Klíčové slovo unsigned značí použití čísla bez znaménka, signed se znaménkem. Pokud není uvedeno, je číslo definované jako číslo se znaménkem. • Velikosti v bitech a rozsahy jsou pouze orientační. U některých překladačů se mohou tyto hodnoty lišit.

  10. Celočíselné datové typy • Datový typ long long: • Specifikován v normě C99 • Pro vstup a výstup na terminál – %LLd (nebo %lld): long long x; scanf(“%LLd”,&x); printf (“%LLd”,x);

  11. Celočíselné datové typy Ukázka 1 Rozsahy datových typů

  12. Racionální datové typy

  13. Racionální datové typy • Někdy označovány i názvem „Reálné datové typy“, ten však není zcela přesný. • Velikosti v bitech a rozsahy jsou pouze orientační. U některých překladačů se mohou tyto hodnoty lišit.

  14. Racionální datové typy • V paměti uloženy v souladu s normou IEEE 754. • Float (racionální číslo v jednoduché přesnosti): • Nejvyšší bit – znaménko (0 = kladné; 1 = záporné číslo) • Exponent – 8 bitů – exponent (pro 2e) posunutý o hodnotu 127 (tak, aby mohl být v rozsahu od -126 do 127). • Mantisa – 23 bitů – od nejvyššího bitu (2-1, 2-2, 2-3, … 2-22. 2-23)

  15. Racionální datové typy • Double (racionální číslo s dvojitou přesnosti): • Nejvyšší bit – znaménko (0 = kladné; 1 = záporné číslo) • Exponent – 11 bitů – exponent (pro 2e) posunutý o hodnotu 1023 (tak, aby mohl být v rozsahu od -1022 do 1023). • Mantisa – 52 bitů – od nejvyššího bitu (2-1, 2-2, 2-3, … 2-52. 2-53)

  16. Prázdný typ • Klíčové slovo void • Nenabývá žádných hodnot • Použití: • Pokud funkce nemá žádné vstupní parametry: int soucet(void) { int a, b; scanf("%d %d",&a,&b); return (a+b); }

  17. Prázdný typ • Pokud funkce nemá žádnou návratovou hodnotu: void pozdrav(void) { printf(„AHOJ!\n"); }

  18. Typ definovaný uživatelem • Klíčové slovo typedef • Umožňuje vytvářet vlastní datové typy – vytvoří nové jméno pro již existující datový typ. • Př. typedef unsigned int delka; delka a, b; a = 5;

  19. Výčtový typ • Klíčové slovo enum • Použití v případě, že existuje předem definovaná konečná množina hodnot, kterých může údaj nabývat. • Při definici výčtového typu je nutné uvést všechny hodnoty.

  20. Výčtový typ • Obecná syntaxe: typedef enum {HODNOTA1, HODNOTA2, … , HODNOTAN} JMENO; • Příklad: typedef enum {PONDELI, UTERY, STREDA, CTVRTEK, PATEK, SOBOTA, NEDELE} DNY;

  21. Výčtový typ • Použití: typedef enum {PONDELI, UTERY, STREDA, CTVRTEK, PATEK, SOBOTA, NEDELE} DNY; DNY d1; d1 = UTERY; if (d1 == UTERY) printf("Dnes je utery!");

  22. Celočíselné datové typy Ukázka 2 Výčtový typ

  23. Struktury • Struktura • Skupina proměnných, které mohou být různého datového typu. Tyto proměnné jsou seskupeny pod jeden identifikátor. • Příklad použití: • Definice bodu v rovině. • Bod tvoří 2 souřadnice – x, y • Údaje o zaměstnanci • Každý zaměstnanec je popsán množinou atributů (jméno, adresa, rodné číslo, …)

  24. Struktury • Definice struktury: struct <nazev> { <promenna1>; <promenna2>; …; <promennaN>; }; • Příklad: struct bod{ int x; int y; };

  25. Struktury • Inicializace struktury: struct <nazevstruktury> <identifikator> = { <hodnota1>, <hodnota2>, …, <hodnotaN>}; • Příklad: struct bod A = {3, 2};

  26. Struktury • Přístup k jednotlivým prvkům struktur: <nazevstruktury>.<promenna> = <hodnota>; • Příklad: struct bod A = { 3, 2}; A.x = 5; A.y = 6;

  27. Definice struktury pomocí typedef • Druhá možnost definice struktury: typedef struct { int x; int y; } bod; • Umožní definovat proměnnou bez klíčového slova struct: bod A; • Nebo s inicializací: bod A = {0,0};

  28. Celočíselné datové typy Ukázka 3 Struktury

  29. A1PRG-s 06. Datové typy Děkuji za pozornost Ing. Michal Heczko heczko@fai.utb.cz 218/U3 Prezentace k dispozici na http://vyuka.fai.utb.cz

More Related