Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Datové typy 6 A1PRG - Programování – Seminář
Verze Datové typy 6 A1PRG - Programování – Seminář Ing. Michal Heczko
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 bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 hodnota bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 hodnota
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 bit Z 14 13 12 11 10 9 8 7 6 5 4 3 2 1 hodnota bit Z 14 13 12 11 10 9 8 7 6 5 4 3 2 1 hodnota bit Z 14 13 12 11 10 9 8 7 6 5 4 3 2 1 hodnota
7
Celočíselné datové typy
Název typu Popis Vel. [b] Dolní mez Horní mez signed int Celé číslo se znaménkem 32 signed short int Krátké celé číslo se znaménkem 16 32 767 signed long int Dlouhé celé číslo se znaménkem signed long long int Velmi dlouhé celé číslo se znaménkem 64 signed char Znak se znaménkem 8 -128 127 Long long obsaženo od normy C99. Pro načítání používáme scanf(„%lld“,&x); Pozn.: Datový typ long long int zavádí až norma C99
8
Celočíselné datové typy
Název typu Popis Vel. [b] Dolní mez Horní mez unsigned int Celé číslo bez znaménka 32 unsigned short int Krátké celé číslo bez znaménka 16 65 536 unsigned long int Dlouhé celé číslo bez znaménka unsigned long long int Velmi dlouhé celé číslo bez znaménka 64 unsigned char Znak bez znaménka 8 255 Long long obsaženo od normy C99. Pro načítání používáme scanf(„%lld“,&x); 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
Název typu Popis Vel. [b] Dolní mez Horní mez float Reálné číslo s jednoduchou přesností 32 3.4e-38 3.4e38 double Reálné číslo s dvojitou přesností 64 1.7e-308 1.7e308 long double Reálné číslo se zvýšenou přesností 80 3.4e-493 1.1e493 Long long obsaženo od normy C99. Pro načítání používáme scanf(„%lld“,&x);
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, , … ) Bit 31 30 29 … 24 23 22 21 … 1 0 Význam Znaménko Exponent (8 bitů) Mantisa (23 bitů)
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 do 1023). Mantisa – 52 bitů – od nejvyššího bitu (2-1, 2-2, , … ) Bit 63 62 61 … 53 52 51 50 … 1 0 Význam Znaménko Exponent (11 bitů) Mantisa (52 bitů)
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
218/U3 Prezentace k dispozici na
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.