Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Standardní knihovní funkce: matematika a datum a čas
Verze Standardní knihovní funkce: matematika a datum a čas 14 A1PRG - Programování – Seminář Ing. Michal Heczko
2
Agenda Matematické funkce Datum a čas Generátor náhodných čísel
3
Matematické funkce Hlavičkový soubor math.h
Parametry funkci typu double
4
Goniometrické funkce Nutno použít velikost úhlu v radiánech ! sin(x)
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 atan2(x,y) Arkustangens x/y sinh(x) Hyperbolický sinus x cosh(x) Hyperbolický kosinus x tanh(x) Hyperbolický tangens x
5
Zaokrouhlování ceil(x) floor(x) Funkce Popis
Zaokrouhlení na celé číslo nahoru floor(x) Zaokrouhlení na celé číslo dolů
6
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);
7
Exponenciální funkce, logaritmus, mocniny
Pozn.: Třetí a vyšší odmocnina: např. pow(x,1.0/3.0); Funkce Popis exp(x) ex log(x) ln x log10(x) log x pow(x,y) xy sqrt(x) Druhá odmocnina z x
8
Další matematické funkce
Popis fabs(x) Absolutní hodnota ldexp(x,n) x*2n 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
9
Další matematické funkce
Příklad použití funkce modf(): double g, f; f = modf(-3.14, &g); printf(″%f | %f″, f, g); // vypíše: |
10
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) - inicializace int rand() generování
11
Generování náhodných čísel
Příklad: int cislo; srand((unsigned int) time(NULL)); cislo = (rand() % MAX); printf("Nahodne cislo:\t%d", cislo);
12
Datum a čas Hlavičkový soubor time.h
Důležité datové typy a konstanty (1. část): CLK_TCK … konstanta … počet procesorových tiků za sekundu, v dnešní době se již nepoužívá clock_t … čtyřbytové celé znaménkové číslo (long) sloužící pro funkci clock()
13
Datum a čas Hlavičkový soubor time.h
Důležité datové typy a konstanty (2. část): time_t … čtyřbytové celé znaménkové číslo (long) sloužící pro ostatní funkce z time.h tm … struktura pro uložení jednotlivých složek času
14
Datum a čas Položky struktury tm: int tm_sec … sekundy po minutě
(0 – 59) int tm_min … minuty po hodině 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)
15
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 ( )
16
Datum a čas Funkce clock() clock_t clock ( void ); Návratová hodnota:
počet 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
17
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 ("%d\n",n); wait (1); return 0;
18
Datum a čas Funkce time() time_t time ( time_t * timer );
Návratová hodnota: počet sekund od 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ě
19
Datum a čas #include <stdio.h> #include <time.h> int main () { time_t seconds; seconds = time (NULL); printf ("%ld hodin od ", seconds/3600); return 0; }
20
Datum a čas Funkce difftime()
Návratová hodnota: Rozdíl dvou časových údajů v sekundách Syntaxe: double difftime ( time_t time2, time_t time1 ); Parametry 2 časové údaje datového typu time_t Využití: Přibližné měření času
21
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 );
22
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 time_t * timer );
23
Datum a čas Funkce asctime()
Na základě hodnoty typu tm vytvoří řetězec ve formátu Sat May 20 15:21: Návratová hodnota: Ukazatel na řetězec Syntaxe: char * asctime ( const struct tm * timeptr );
24
Datum a čas Funkce ctime() char * ctime ( const time_t * timer );
Na základě hodnoty typu time_m vytvoří řetězec ve formátu Sat May 20 15:21: Návratová hodnota: Ukazatel na řetězec Syntaxe: char * ctime ( const time_t * timer );
25
Datum a čas Funkce mktime() time_t mktime ( struct tm * timeptr );
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
26
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 );
27
Datum a čas Funkce strftime() Vstupní hodnoty: Návratová hodnota:
char * ptr … ukazatel na cílový řetězec size_t maxsize … maximální délka řetězce const char * format … formát generovaného řetězce struct tm * timeptr ... Zdrojová struktura tm Návratová hodnota: Počet zapsaných znaků do cílového řetězce. Pokud došlo k chybě, tak NULL
28
Datum a čas Funkce strftime() Formátovací řetězec – řídící znaky %a %A
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: %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
29
Datum a čas Funkce strftime() Formátovací řetězec – řídící znaky %j %m
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
30
Datum a čas Funkce strftime() Formátovací řetězec – řídící znaky %x %X
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 „%“ %
31
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:21PM. return 0; }
32
Závěrem Šest zákonů o programování:
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.
33
A1PRG-s 14. Datum a čas, … Děkuji za pozornost Ing. Michal Heczko
218/U3 Prezentace k dispozici na
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.