Datové typy

Preview:

DESCRIPTION

Verze 2009.01. Datové typy. 6. A1PRG - Programování – Seminář Ing. Michal Heczkoheczko@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. - PowerPoint PPT Presentation

Citation preview

A1PRG - Programování – Seminář

Ing. Michal Heczko heczko@fai.utb.cz

Datové typy6

Verze 2009.01

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

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.

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

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 0

hodnota

bit 15

14 13

12

11 10

9 8 7 6 5 4 3 2 1 0

hodnota

0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1

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 0

hodnota

bit Z 14 13

12

11 10

9 8 7 6 5 4 3 2 1 0

hodnota

0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1

bit Z 14 13

12

11 10

9 8 7 6 5 4 3 2 1 0

hodnota

1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1

Celočíselné datové typy

Název typu Popis Vel. [b]

Dolní mez

Horní mez

signed int Celé číslo se znaménkem

32 -2 147 483 6482 147 483 647

signed short int Krátké celé číslo se znaménkem

16 - 32 76832 767

signed long int Dlouhé celé číslo se znaménkem

32 -2 147 483 6482 147 483 647

signed long long int Velmi dlouhé celé číslo se znaménkem

64 -9 223 372 036 854 775 808

9 223 372 036 854 775 807

signed char Znak se znaménkem

8 -128127

Pozn.: Datový typ long long int zavádí až norma C99

Celočíselné datové typy

Název typu Popis Vel. [b]

Dolní mez

Horní mez

unsigned int Celé číslo bez znaménka

32 04 294 967 295

unsigned short int Krátké celé číslo bez znaménka

16 065 536

unsigned long int Dlouhé celé číslo bez znaménka

32 04 294 967 295

unsigned long long int

Velmi dlouhé celé číslo bez znaménka

64 018 446 744 073 709 551

616

unsigned char Znak bez znaménka

8 0255

Pozn.: Datový typ long long int zavádí až norma C99

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.

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);

Celočíselné datové typy

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-383.4e38

double Reálné číslo s dvojitou přesností

64 1.7e-3081.7e308

long double Reálné číslo se zvýšenou přesností

80 3.4e-4931.1e493

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.

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)

Bit 31 30 29 … 24 23 22 21 … 1 0

Význam Znaménko Exponent (8 bitů)

Mantisa (23 bitů)

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)

Bit 63 62 61 … 53 52 51 50 … 1 0

Význam Znaménko Exponent (11 bitů)

Mantisa (52 bitů)

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);

}

Prázdný typ

Pokud funkce nemá žádnou návratovou hodnotu:

void pozdrav(void){printf(„AHOJ!\n");

}

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;

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.

Výčtový typ

Obecná syntaxe:typedef enum {HODNOTA1, HODNOTA2, … , HODNOTAN} JMENO;

Příklad:typedef enum {PONDELI, UTERY, STREDA, CTVRTEK, PATEK, SOBOTA, NEDELE} DNY;

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!");

Celočíselné datové typy

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, …)

Struktury

Definice struktury:

struct <nazev> {

<promenna1>;

<promenna2>;

…;

<promennaN>;

};

Příklad:

struct bod{

int x;

int y;

};

Struktury

Inicializace struktury:

struct <nazevstruktury> <identifikator> = { <hodnota1>, <hodnota2>, …, <hodnotaN>};

Příklad:

struct bod A = {3, 2};

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;

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};

Celočíselné datové typy

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

Recommended