Verze 2009 01 14 Standardn knihovn funkce matematika
- Slides: 33
Verze 2009. 01 14 Standardní knihovní funkce: matematika a datum a čas A 1 PRG - Programování – Seminář Ing. Michal Heczko heczko@fai. utb. cz
Agenda Matematické funkce Datum a čas Generátor náhodných čísel
Matematické funkce Hlavičkový soubor math. h Parametry funkci typu double
Goniometrické funkce Nutno použít velikost úhlu v radiánech ! Funkce Popis sin(x) Sinus x cos(x) Kosinus x tan(x) Tangens x asin(x) Arkussinus x acos(x) Arkuskosinus x atan(x) Arkustangens x atan 2(x, y) Arkustangens x/y sinh(x) Hyperbolický sinus x cosh(x) Hyperbolický kosinus x tanh(x) Hyperbolický tangens x
Zaokrouhlování Funkce Popis ceil(x) Zaokrouhlení na celé číslo nahoru floor(x) Zaokrouhlení na celé číslo dolů
Zaokrouhlování Omezení: Nutnost zaokrouhlení pouze na jednotky Př. : Zaokrouhlení na 3 desetinná místa x = floor(y*1000)/1000; Zaokrouhlení pouze nahoru nebo pouze dolů => nemožnost zaokrouhlit podle matematických pravidel Př. : Zaokrouhlení dle matematických pravidel x = floor(y+0. 5);
Exponenciální funkce, logaritmus, mocniny Funkce Popis exp(x) ex log(x) ln x log 10(x) log x pow(x, y) xy sqrt(x) Druhá odmocnina z x Pozn. : Třetí a vyšší odmocnina: např. pow(x, 1. 0/3. 0);
Další matematické funkce Funkce Popis fabs(x) Absolutní hodnota ldexp(x, n) x*2 n frexp(x, exp) Rozdělí číslo na mantisu a mocninu 2 Pozn. exp … adresa proměnné, do které má být uložen exponent mocniny modf(x, n) Rozdělí číslo na celou a desetinnou část Pozn. N … adresa proměnné, do které má být uložena celá část fmod(x, y) Reálný zbytek po dělení x/y
Další matematické funkce Příklad použití funkce modf(): double g, f; f = modf(-3. 14, &g); printf(″%f | %f″, f, g); // vypíše: -3. 000000 | -0. 140000
Generování náhodných čísel Knihovna stdlib. h Možno generovat celá náhodná čísla s rovnoměrným rozdělením Pseudonáhodný generátor – bez inicializace generuje stejnou posloupnost po každém spuštění Funkce: void srand(unsigned int seed) int rand() - inicializace - generování
Generování náhodných čísel Příklad: int cislo; srand((unsigned int) time(NULL)); cislo = (rand() % MAX); printf("Nahodne cislo: t%d", cislo);
Datum a čas Hlavičkový soubor time. h Důležité datové typy a konstanty (1. část): CLK_TCK … … clock_t … konstanta počet procesorových tiků za sekundu, v dnešní době se již nepoužívá čtyřbytové celé znaménkové číslo (long) sloužící pro funkci clock()
Datum a čas Hlavičkový soubor time. h Důležité datové typy a konstanty (2. část): time_t … tm … čtyřbytové celé znaménkové číslo (long) sloužící pro ostatní funkce z time. h struktura pro uložení jednotlivých složek času
Datum a čas Položky struktury tm: int tm_sec … sekundy po minutě (0 – 59) int tm_min … minuty po hodině (0 – 59) int tm_hour … hodiny od půlnoci (0 – 23) int tm_isdst … příznak letního času (0 – normální čas, >0 – letní čas, <0 – nelze určit)
Datum a čas Položky struktury tm: int tm_mday … den v měsíci (1 – 31) int tm_mon … měsíc od ledna (0 – 11) int tm_year … rok od 1900 (1900 – 2038) int tm_wday … den od neděle (0 - 6) int tm_yday … počet dnů od 1. ledna (0 - 366)
Datum a čas Funkce clock() Návratová počet hodnota: tiků procesoru Syntaxe: clock_t clock ( void ); Využití: Zjištění doby trvání programu – dnes se však nepoužívá kvůli nepřesnosti
Datum a čas Příklad použití funkce clock(): #include <stdio. h> #include <time. h> void wait ( int seconds ) { clock_t endwait; endwait = clock () + seconds * CLOCKS_PER_SEC ; while (clock() < endwait) {} } int main () { int n; printf ("Starting countdown. . . n"); for (n=10; n>0; n--) printf ("%dn", n); wait (1); } return 0; } {
Datum a čas Funkce time() Návratová počet hodnota: sekund od 1. 1. 1970 Syntaxe: time_t time ( time_t * timer ); Parametr: Ukazatel na objekt typu time_t, do kterého je uložena hodnota času. Možno použít NULL a hodnota času bude pouze v návratové hodnotě
Datum a čas #include <stdio. h> #include <time. h> int main () { time_t seconds; seconds = time (NULL); printf ("%ld hodin od 1. 1. 1970", seconds/3600); return 0; }
Datum a čas Funkce difftime() Návratová Rozdíl hodnota: dvou časových údajů v sekundách Syntaxe: double difftime ( time_t time 2, time_t time 1 ); Parametry 2 časové údaje datového typu time_t Využití: Přibližné měření času
Datum a čas Funkce localtime() Na základě hodnoty typu time_m vytvoří strukturu tm pro místní časovou zónu Návratová hodnota: Ukazatel na strukturu tm Syntaxe: struct tm * localtime ( const time_t * timer );
Datum a čas Funkce gmtime() Na základě hodnoty typu time_m vytvoří strukturu tm pro časovou zónu UTC Návratová hodnota: Ukazatel na strukturu tm Syntaxe: struct tm * gmtime( const * timer ); time_t
Datum a čas Funkce asctime() Na základě hodnoty typu tm vytvoří řetězec ve formátu Sat May 20 15: 21: 51 2000 Návratová Ukazatel hodnota: na řetězec Syntaxe: char * asctime ( const struct tm * timeptr );
Datum a čas Funkce ctime() Na základě hodnoty typu time_m vytvoří řetězec ve formátu Sat May 20 15: 21: 51 2000 Návratová Ukazatel hodnota: na řetězec Syntaxe: char * ctime ( const time_t * timer );
Datum a čas Funkce mktime() Funkce provede konverzi ze struktury tm na datový typ time_t Syntaxe: time_t mktime ( struct tm * timeptr ); Vstupní hodnota: Ukazatel na strukturu tm Návratová Hodnota hodnota: typu time_t
Datum a čas Funkce strftime() Převod data ze struktury tm na formátovaný řetězec Syntaxe: size_t strftime ( char * ptr, size_t maxsize, const char * format, const struct tm * timeptr );
Datum a čas Funkce strftime() Vstupní hodnoty: char * ptr size_t maxsize const char * format struct tm * timeptr Návratová Počet … ukazatel na cílový řetězec … maximální délka řetězce … formát generovaného řetězce. . . Zdrojová struktura tm hodnota: zapsaných znaků do cílového řetězce. Pokud došlo k chybě, tak NULL
Datum a čas Funkce strftime() Formátovací řetězec – řídící znaky Formát Popis Příklad %a Zkratka dne v týdnu Thu %A Plný název dne v týdnu Thursday %b Zkratka měsíce Aug %B Plný název měsíce August %c Standardní formát data a času Thu Aug 23 14: 55: 02 2001 %d Den v měsíci (01 – 31) 23 %H Hodiny ve 24 -hodinovém formátu (00 – 23) 14 %I Hodiny ve 12 -hodinovém formátu (00 – 12) 02
Datum a čas Funkce strftime() Formátovací řetězec – řídící znaky Formát Popis Příklad %j Den v roce (0 – 366) 235 %m Pořadové číslo měsíce (00 – 12) 08 %M Minuty (00 – 59) 55 %p AM / PM PM %S Sekundy (00 – 59) 02 %U Číslo týdne (00 – 53) – týden začíná nedělí 33 %w Číslo dne v týdnu (0 – 0) – týden začíná nedělí, neděle == 0 4 %W Číslo týdne (00 – 53) – týden začíná pondělím 34
Datum a čas Funkce strftime() Formátovací řetězec – řídící znaky Formát Popis Příklad %x Datum 08/23/01 %X Čas 14: 55: 02 %y Rok (dvouciferný) 01 %Y Rok (čtyřciferný) 2001 %Z Časová zóna CDT %% Znak „%“ %
Datum a čas #include <stdio. h> #include <time. h> int main () { time_t rawtime; struct tm * timeinfo; char buffer [80]; time ( &rawtime ); timeinfo = localtime ( &rawtime ); strftime (buffer, 80, "Práve je %I: %M%p. ", timeinfo); puts (buffer); // Prave je 03: 21 PM. return 0; }
Závěrem Šest zákonů o programování: 1. 2. 3. 4. 5. 6. V každém programu je alespoň jedna chyba Každý program lze zkrátit alespoň o jeden řádek Nejjednodušší chyby se nejhůře hledají Každou opravou se do programu zanese nová chyba Když už se zdá, že je program v pořádku, určitě jsme něco přehlédli Programátor dělá, co umí. Počítač si dělá, co chce.
A 1 PRG-s 14. Datum a čas, … Děkuji za pozornost Ing. Michal Heczko heczko@fai. utb. cz 218/U 3 Prezentace k dispozici na http: //vyuka. fai. utb. cz
- Definice funkce matematika
- Induksi matematika
- Perbedaan matematika ekonomi dan non matematika ekonomi
- Ppady
- Goniometrické funkce tabulka
- Erytropoetin funkce
- Schránkovce
- Funkce podniku
- Vidličnaté větvení stonku
- Booleova algebra vzorce
- Investiční funkce
- Lineární funkce
- Primární funkce podniku
- Zábavné aktivity pro seniory
- Souit
- Přeslička rolní
- Lagrangeova funkce
- Funkce a jejich vlastnosti
- Funkce když excel
- Typy listů
- Manifestní a latentní funkce
- Sudost lichost funkce
- Agramatizmy
- Vzorec vrchol paraboly
- Funkce cos
- Erytropoetin funkce
- Radula funkce
- Word funkce
- Funkce daní
- Funkce trhu
- Goniometrické funkce ostrého úhlu
- Lineární funkce
- Jarní lodyha
- Definice obchodu