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

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

A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce: matematika a datum a čas 14 Verze 2009.01.

Podobné prezentace


Prezentace na téma: "A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce: matematika a datum a čas 14 Verze 2009.01."— Transkript prezentace:

1 A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce: matematika a datum a čas 14 Verze

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 ! FunkcePopis 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í FunkcePopis ceil(x) 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); FunkcePopis exp(x) exex log(x) ln x log10(x) log x pow(x,y) xyxy sqrt(x) Druhá odmocnina z x

8 Další matematické funkce FunkcePopis 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

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ě (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)

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()  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 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()  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 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()  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()  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: 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 FormátPopisPříklad %a Zkratka dne v týdnuThu %A Plný název dne v týdnuThursday %b Zkratka měsíceAug %B Plný název měsíceAugust %c Standardní formát data a časuThu 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 FormátPopisPří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 / PMPM %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 FormátPopisPříklad %x Datum08/23/01 %X Čas14:55:02 %y Rok (dvouciferný)01 %Y Rok (čtyřciferný)2001 %Z Časová zónaCDT % Znak „%“%

31 Datum a čas #include 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í: 1. V každém programu je alespoň jedna chyba 2. Každý program lze zkrátit alespoň o jeden řádek 3. Nejjednodušší chyby se nejhůře hledají 4. Každou opravou se do programu zanese nová chyba 5. Když už se zdá, že je program v pořádku, určitě jsme něco přehlédli 6. 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


Stáhnout ppt "A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce: matematika a datum a čas 14 Verze 2009.01."

Podobné prezentace


Reklamy Google