Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Reálné typy (1) Zahrnují konečnou podmnožinu těch reálných čísel, která jsou zobrazitelná v paměti počítače (v jistém rozsahu a s jistou přesností) Hodnoty.

Podobné prezentace


Prezentace na téma: "Reálné typy (1) Zahrnují konečnou podmnožinu těch reálných čísel, která jsou zobrazitelná v paměti počítače (v jistém rozsahu a s jistou přesností) Hodnoty."— Transkript prezentace:

1 Reálné typy (1) Zahrnují konečnou podmnožinu těch reálných čísel, která jsou zobrazitelná v paměti počítače (v jistém rozsahu a s jistou přesností) Hodnoty reálných typů jsou v paměti zobraze-ny jako čísla v pohyblivé desetinné čárce, tj. jako dvojice čísel (a, b), kde: a je mantisa b je exponent 09/06/2018

2 Reálné typy (2) V jazyce C se zapisují s desetinnou tečkou nebo ve tvaru aEb (tento zápis odpovídá matematickému zápisu a.10b) Je-li alespoň jeden z operandů reálného ty-pu (druhý může být typu celočíselného), dává aplikace operátorů +, – , *, / výsledek reálného typu Hodnoty reálných typů je možné porovná-vat pomocí relačních operátorů 09/06/2018

3 Reálné typy (3) V jazyce C je možné pracovat se třemi růz-nými reálnými typy: float reálné číslo s jednoduchou přesností double reálné číslo s dvojitou přesností long double Jazyk C nepředepisuje, jaké velikosti mají být pro jednotlivé reálné typy použity 09/06/2018

4 Reálné typy (4) Musí platit:
hodnoty typu float jsou podmnožinou hodnot typu double hodnoty typu double jsou podmnožinou hod-not typu long double Hlavičkový soubor float.h definuje poj-menované konstanty dokumentující charak-teristiku jednotlivých reálných typů 09/06/2018

5 Reálné typy (5) Označení těchto konstant má následující tvar:
začíná zápisem specifikujícím reálný typ: FLT_ pro typ float DBL_ pro typ double LDBL_ pro typ long double pokračuje zápisem udávajícím konkrétní charak-teristiku, např.: EPSILON minimální x > 0.0 takové, že 1.0+x != 1.0 MIN minimální normalizované kladné číslo MAX maximální reprezentovatelné konečné číslo 09/06/2018

6 Reálné typy (6) Pro běžnou reprezentaci reálných čísel danou standardem ANSI/IEEE 754 – 1985 platí (uvedené hodnoty jsou zaokrouhlené): FLT_EPSILON E–007 4 B FLT_MIN E–038 FLT_MAX E+038 DBL_EPSILON E–016 8 B DBL_MIN E–308 DBL_MAX E+308 LDBL_EPSILON E–019 12 B LDBL_MIN E–4932 LDBL_MAX E+4932 09/06/2018

7 Poznámka – vstup/výstup (1)
Při zobrazování hodnot reálných typů pomocí funkce printf se používá: pro hodnoty typu float nebo double specifi-kátor f, e, E, g nebo G pro hodnoty typu long double modifikátor délky L následovaný příslušným specifikátorem (f, e, E, g nebo G)  Lf, Le, LE, Lg nebo LG 09/06/2018

8 Poznámka – vstup/výstup (2)
Pro načítání hodnot reálných typů pomocí funkce scanf se používá: pro hodnoty typu float operace f, e, g pro hodnoty typu double modifikátor velikosti l následovaný operací f, e, g (lf, le, lg ) pro hodnoty typu long double modifikátor velikosti L následovaný operací f, e, g (Lf, Le, Lg ) 09/06/2018

9 Knihovní funkce (1) Hlavičkový soubor math.h poskytuje konstanty (typu double): M_E hodnota e (Eulerova čísla) M_LOG2E hodnota log2e M_LOG10E hodnota log e M_LN2 hodnota ln 2 M_LN10 hodnota ln 10 M_PI hodnota  M_PI_2 hodnota /2 M_PI_4 hodnota /4 M_1_PI hodnota 1/ 09/06/2018

10 Knihovní funkce (2) funkce, např.: M_2_PI hodnota 2/
M_2_SQRTPI hodnota 2/1/2 M_SQRT2 hodnota 21/2 M_SQRT1_2 hodnota 1/21/2 funkce, např.: goniometrické (argument musí být vždy v radiánech): double sin(double x); sin x double cos(double x); cos x double tan(double x); tg x cyklometrické (výsledek je vždy v radiánech): double asin(double x); arcsin x double acos(double x); arccos x double atan(double x); arctg x 09/06/2018

11 Knihovní funkce (3) hyperbolické: hyperbolometrické: logaritmické:
double sinh(double x); sinh x double cosh(double x); cosh x double tanh(double x); tgh x hyperbolometrické: double asinh(double x); arcsinh x double acosh(double x); arccosh x double atanh(double x); arctgh x logaritmické: double log(double x); ln x double log10(double x); log x double logb(double x); log2x 09/06/2018

12 Knihovní funkce (4) další: double exp(double x); ex
double fabs(double x); |x| double sqrt(double x); x1/2 double cbrt(double x); x1/3 double pow(double x, double y); xy double ceil(double x); nejmenší celočíselná hodnota, která není menší než x double floor(double x); největší celočíselná hodnota, která není větší než x double fmod(double x, double y); zbytek po dělení čísla x číslem y double rint(double x); zaokrouhlení čísla x 09/06/2018

13 Knihovní funkce (5) Poznámky:
jestliže při použití výše uvedených funkcí dojde k chybě, tak se nastaví hodnota proměnné errno na hodnotu různou od nuly hodnota errno rovna: EDOM značí, že argument funkce je mimo její definiční obor ERANGE značí, že výsledek je příliš velký nebo příliš malý, tj. nelze jej reprezentovat typem, který funkce vrací konstanty EDOM a ERANGE jsou definovány v hlavičkovém souboru errno.h 09/06/2018

14 Knihovní funkce (6) pokud je zapotřebí testovat hodnotu errno, pak by před voláním funkce měla být proměnná errno nastavena na hodnotu 0 09/06/2018

15 Typ ukazatel (1) Proměnné typu ukazatel (pointer) uchovávají paměťovou adresu Hodnota ukazatele říká, kde (na jaké adrese) se v paměti nachází nějaký objekt (hodnota určitého datového typu), tj. ukazuje na hodno-tu určitého datového typu Při definici proměnné typu ukazatel je specifi-kován i datový typ udávající informaci o typu hodnoty, která je na adrese dané ukazatelem očekávána 09/06/2018

16 Typ ukazatel (2) Definice proměnné typu ukazatel: datový_typ *idPromenne; definuje proměnnou idPromenne, jejíž hodnota může obsahovat adresu, na níž je uložena hodnota typu datový_typ Příklad: int *ptrInt; proměnná ptrInt může obsahovat adre-su, na níž je uložena hodnota typu int 09/06/2018

17 Typ ukazatel (3) Jazyk C poskytuje dva operátory pro práci s proměnnými typu ukazatel: * dereferenční: vrací hodnotu uloženou na adrese operandu & referenční: vrací adresu operandu (proměnné) Příklad: ptrInt: představuje adresu paměti *ptrInt: označuje místo v paměti, se kterým lze pracovat jako s proměnnou ty- pu int (obsah adresy uložené v ptrInt) 09/06/2018

18 Typ ukazatel (4) Nechť: int *ptrInt; int k = 11; ptrInt = &k;
adresa ptrInt adresa k Nechť: int *ptrInt; int k = 11; Adresy 1000 1032 1064 1096 Hodnoty 11 adresa ptrInt adresa k ptrInt = &k; *ptrInt = 80; Adresy 1000 1032 1064 1096 Hodnoty 1064 80 09/06/2018

19 Typ ukazatel (5) Příklad: int x = 1, y = 2; int *ptrInt; ptrInt = &x;
09/06/2018

20 Typ ukazatel (6) y = *ptrInt; *ptrInt = 0; x: 1 y: 1 ptrInt: x: y: 1
y: 1 ptrInt: 09/06/2018

21 Typ ukazatel (7) V hlavičkovém souboru stdio.h je defi-nována konstanta NULL vyjadřující prázd-ný ukazatel Konstantu NULL lze přiřadit každému uka-zateli bez ohledu na datový typ, na nějž ukazuje Má-li ukazatel hodnotu NULL, pak to zna-mená, že neukazuje na žádný objekt v pa-měti 09/06/2018

22 Typ ukazatel (8) Na jeden objekt může obecně ukazovat vět-ší množství ukazatelů, pomocí nichž lze provést jeho zpřístupnění Hodnoty typu ukazatel je možné porovnávat pomocí relačních operátorů Rovnost (resp. nerovnost) ukazatelů lze in-terpretovat jako test, zda-li dva ukazatele ukazují (resp. neukazují) na stejný objekt 09/06/2018

23 Typ ukazatel (9) Poznámka (obecný ukazatel):
používán pro ukazatele, které neukazují na hodnoty žádného konkrétního typu zapisován pomocí datového typu void např. void *ukazatel; datový typ void * lze následně přetypovat na libovolný typový ukazatel ukazatel typu void * lze přiřadit jakémukoliv ukazateli 09/06/2018

24 Agregované typy dat (1) Identifikátor proměnné agregovaného (slože-ného, strukturovaného) datového typu ozna-čuje obecně větší množství hodnot, které spolu souvisí Agregované typy jsou kompozicí jiných typů Agregovaný datový typ je určen typem struk-turování a typem složek, z nichž je tvořen (tyto složky mohou být opět agregované) 09/06/2018

25 Agregované typy dat (2) Agregovaný typ je charakterizován svým:
konstruktorem: mechanismus, který určuje, jak konstruovat hodnotu agregovaného typu z jejích komponent (složek) selektorem: mechanismus určující způsob přístu pu k jednotlivým složkám (výběr složky) Každá hodnota agregovaného typu má něko-lik komponent: téhož typu – homogenní datový typ (pole) různých typů – heterogenní datový typ (struktura) 09/06/2018


Stáhnout ppt "Reálné typy (1) Zahrnují konečnou podmnožinu těch reálných čísel, která jsou zobrazitelná v paměti počítače (v jistém rozsahu a s jistou přesností) Hodnoty."

Podobné prezentace


Reklamy Google