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

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

Název prezentace Algoritmizace a programování Cvičení Jan Kordas D400 2008.

Podobné prezentace


Prezentace na téma: "Název prezentace Algoritmizace a programování Cvičení Jan Kordas D400 2008."— Transkript prezentace:

1 Název prezentace Algoritmizace a programování Cvičení Jan Kordas D

2 Nadpis Kompilátor jazyka C. Seznámení s vývojovým prostředím. První program v jazyce C. Základní datové typy a konstanty. Operátory. Konverze typů. Terminálový vstup/výstup. Větvení (if, switch). Cykly. Příkazy break, continue, goto. Bloky příkazů. Funkce. Viditelnost proměnných. Rekurze. Operátor "čárka". Ternární operátor. Paměťové třídy. Typové modifikátory. Pole. Ukazatele. Dynamicky alokovaná paměť. Struktury. Výčtový datový typ. Union. Bitová pole. Soubory. Knihovny standardních funkcí. Dynamické datové struktury. Obsah cvičení

3 Nadpis Soubor materiálů k přemětu Webové stránky ke cvičení Cvičení z minulých let Doporučená literatura HEROUT, P.: Učebnice jazyka C ŠALOUN, P.: Programovací jazyk C pro zelenáče BABUŠIAK, B., GÁLA, M.: Programovací jazyk C v príkladoch pre biomedicínskych technikov Materiály

4 Nadpis Miniprojekt 3x bodů (do , 6.11., ) Závěrečný projekt bodů (do ) Maximum za zápočet bodů Podmínka pro úspěšné absolvování 17 bodů Hodnocení cvičení

5 Nadpis Překlad

6 Nadpis 1.Vytvoření nového projektu 2.Modifikace zdrojového souboru 3.Uložení zdrojového souboru 4.Kompilace zdrojových souborů 5.Spuštění vytvořené aplikace 6.Kompilace a spuštění v jednom kroku 7.Ladění Seznámení s vývojovým prostředím

7 Nadpis // vložení standardního hlavičkového souboru #include // vložení vlastního hlavičkového souboru #include "main.h" // vstupní bod aplikace int main(int argc, char *argv[]) { // příkazy } Komentáře // jednořádkový komentář /* Víceřádkový komentář */ Základní struktura programu v jazyce C

8 Nadpis Deklarace typ_proměnné identifikátor_proměnné; Globální vs. lokální proměnná int i; // globální proměnná funkce() { int j; // lokální proměnná } Počáteční inicializace int i = 5; // deklarace proměnné i a její inicializace na hodnotu 5 // totéž složitěji int i; // deklarace proměnné i i = 5; // nastavení proměnné i na hodnotu 5 Proměnné

9 Nadpis Celočíselné char (8 bitů) short (16 bitů) int (32 bitů) long (64 bitů) Reálné float (32 bitů) double (64 bitů) Výčtový enum Ukazatel pointer (32 bitů) Velikost některých datových typů je platformě závislá. Datové typy v jazyce C

10 Nadpis unsigned neznaménkový datový typ unsigned char (0..255) unsigned short ( ) unsigned int ( ) unsigned long signed znaménokový datový typ signed char ( ) signed short ( ) signed int ( ) signed long unsigned vs. signed

11 Nadpis Celočíselné desítkové 1, 10, 129 long 12L, -35l unsigned 33U, 12u oktálové 01, 010, 0127 hexadecimální 0x1, 0x1F, 0x12A Reálné double 1E10, 15e-1, 3.14,.2 float 1E5F, 123ef long double 15e3L Znakové (velikost int!) 'a', '/', \007, \x1f, \n, \r, \t, \0 klíčové slovo const const int i = 15; Konstanty

12 Nadpis Operátor přiřazení = Aritemetické operace +,-, *, /, % Složené operátory přiřazení +=, -=, +=, /=, %=, >>=, <<=, &=, |=, ^= Operátory inkremenace/dekrementace o jedničku ++, -- Relační operátory >, >=, <, <=, ==, != Logické operátory !, &&, || Bitové operace &, |, ^, ~, > Operace

13 Nadpis Priority a postup vyhodnocování výrazů

14 Nadpis Implicitní Prováděna automaticky. Vždy se konvertuje z "nižšího" typu na "vyšší". Pořadí typů pro konverzi: int -> unsigned int -> long -> unsigned long -> double -> long double double x; int i = 5; x = i; double r; r = i * x; // hodnota proměnné i je konvertována na double Explicitní Prováděna na žádost programátora. double x = 5; int i; i = (int) x; // jedná se v podstatě o „ořezání“ desetinné části Konverze datových typů

15 Nadpis auto, break, case, char, const, continue, default, do double, else, enum, extern, float, for, goto, if int, long, register, return, short, signed, sizeof, static struct, switch, typedef, union, unsigned, void, volatile, while Mají předem daný význam => nelze použít jako indentifikátor! Klíčová slova

16 Nadpis Úplná podmínka if (výraz) { // příkazy, které se provedou, když je výraz <> 0 } else { // příkazy, které se provedou, když je výraz == 0 } Neúplná podmínka if (výraz) { // příkazy, které se provedou, když je výraz <> 0 } Větvení - příkaz if

17 Nadpis Syntaxe switch (výraz) { case x : // příkazy, které se provedou, když výraz == x break; case y : break; case l: case k: // příkazy, které se provedou, když výraz == l || výraz == k break;... default : /* příkazy, které se provedeou, pokud neodpovídá ani jedna z předchozích variat */ } Výběr z více alternativ - příkaz switch

18 Nadpis Syntaxe for ( inicializace; podmínka; přízak(y)) { // tělo cyklu } Příklad int i; for (i = 0; i < 10; i++) { printf("Ahoj svete %d\n", i); } Cyklus - příkaz for

19 Nadpis Syntaxe do { // tělo cyklu } while (podmínka); Příkazy v těle cyklu jsou prováděny, když je splněna podmínka na konci (za tělem). => Tělo cyklu je provedeno minimálně 1x! Cyklus - příkaz do

20 Nadpis Syntaxe while (podmínka) { // tělo cyklu } Příkazy v těle cyklu jsou prováděny, když je splněna podmínka na začátku. => Tělo cyklu se nemusí provést vůbec! Cyklus - příkaz while

21 Nadpis Příklad int i = 0; while (i < 5) { i++; if ((i % 2) == 0) printf("%d je sude", i); else continue; // skok na začátek cyklu printf("\n"); } Příkaz continue

22 Nadpis Příklad int i = 0; while (i < 5) { i++; if ((i % 2) == 0) printf("%d je sude", i); else break; // skok z cyklu ven printf("\n"); } Příkaz break

23 Nadpis for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { if (d[j] == 0) goto chyba; else r[i]+= 1 / d[j]; } goto bez_chyby; chyba: printf("Deleni nulou\n"); Pokud možno nepoužívat! Problém je vždy možné vyřešit bez tohoto příkazu!!! Příkaz goto

24 Nadpis { // začátek bloku // tělo bloku = příkazy, definice proměnných } // konec bloku Nutnost použití bloků u if, do, while, pokud tělo bloku obsahuje více než jeden příkaz. if (i == 1) printf("jen jeden příkaz") if (i == 10) { printf("první příkaz"); printf("druhý příkaz"); } Bloky

25 Nadpis int a = 4; // globální proměnná void main() { printf("a = %d\n", a); /* lokální proměnná, překrývá dříve deklarovanou proměnnou se stejným názvem */ int a = 5; printf("a = %d\n", a); { int j; // proměnná je "vidět" jen v rámci bloku } Viditelnost proměnných

26 Nadpis int a = 4; // globální proměnná void main() { printf("a = %d\n", a); /* lokální proměnná, překrývá proměnné se stejným názvem deklarované v nadřazených úrovních */ int a = 5; printf("a = %d\n", a); // opětovná deklarace v rámci stejného bloku!!! int a = 6; printf("a = %d\n", a); } Deklarace proměnných - chyba

27 Nadpis auto implicitní třída pro lokální proměnné extern pro sdílení proměnných mezi více soubory static lokální proměnná, která si uchovává hodnotu mezi jednotlivými voláními funkce globální proměnná, která je viditelná pouze v modulu, kde je definována register doporučení překladači, aby uložil proměnnou do registru počítače Paměťové třídy

28 Nadpis const hodnota proměnné se po inicializaci již nemění volatile upozornění překladače, že proměnná může být modifikována asynchronně Typové modifikátory

29 Nadpis návratový_typ identifikátor_funkce(parametry_funkce) { // tělo funkce return výraz; // výraz je typu návratový_typ } Příkaz return ukončí provádění funkce. Nemusí být až na jejím konci. Když je návratový typ funkce void, příkaz return neobsahuje žádný výraz. Funkce

30 Nadpis Volání funkce hodnotou // funkce se volá secti (5, 3); int secti(int a, int b) { return (a+b); } Volání funkce odkazem // funkce se vola prohod(&x, &y); void prohod(int *a, int *b) { int pom = *b; *b = *a; *a = pom; } Volání funkcí

31 Nadpis Příklad int soucet(int a, int b); // prototyp funkce int main() { int a, b; scanf("%d%d", &a, &b); printf("%d + %d = %d\n", a, b, soucet(a, b)); } int soucet(int a, int b) { return a + b; } Prototyp funkce

32 Nadpis Funkce pro výpočet faktoriálu int fakt(int n) { if (n <= 0) { return 1; } else { return n * fakt(n - 1); } Rekurze

33 Nadpis Fibonnaciho posloupnost posloupnost, kde první člen f(0) = 0 a druhý člen f(1) = 1 a každý další člen je součet dvou předchozích f(n) = f(n-1) + f(n-2) Fibonacciho posloupnost

34 Nadpis int fibonacci(int n) { if (n < 2) { if (n < 1) return 0; else return 1; } else return (fibonacci(n-1) + fibonacci(n-2)); } Fibonacciho posloupnost - rekurze

35 Nadpis int fibonacciC(int n) { int p[MaxN]; p[0] = 0; p[1] = 1; int i; for (i = 2; i <= n; i++) { p[i] = p[i-1] + p[i-2]; } return p[n]; } Fibonacciho posloupnost - cyklus

36 Nadpis Hlavičkový soubor stdio.h #include Funkce pro vstup getchar() // čte první znak, čtení se ukončí stiskem Enter scanf() // formátovaný vstup Funkce pro výstup putchar() // zapíše znak printf() // formátovaný výstup Terminálový vstup/výstup

37 Nadpis Funkce scanf() Příklad int i; scanf("%d", &i); %d určuje formát vstupu (v tomto případě celé číslo). &i adresa proměnné, do které se má vstup uložit Pozor!!! Nazapomenout na & před názvem proměnné!!! Formátovaný vstup

38 Nadpis Funkce printf() Příklad int i = 5; printf("i = %d", i); i = text, který se vypíše %d určuje formát výpisu (v tomto případě dekadický celočíselný) i proměnná, která se vytiskne na terminál tam, kde je %d Formátovaný výstup

39 Nadpis %c znak (je lepší použít funkci getchar() nebo putchar()) %d celé číslo typu signed int %ld celé číslo typu signed long %u celé číslo typu unsigned int %lu celé číslo typu unsigned long %f reálné číslo typu float %lf reálné číslo typu double %Lf reálné číslo typu long double (L musí být velké) %x číslo v hexadecimálním tvaru s malými písmeny - 5b8f %X číslo v hexadecimálním tvaru s velkými písmeny - 5B8F %o číslo v osmičkovém tvaru %s řetězec Formátové specifikace

40 Nadpis \0 Nula, ukončení řetězce (má být na konci každého řetězce) \a Pípnutí \b Návrat o jeden znak zpět \f Nová stránka nebo obrazovka \n Přesun na začátek nového řádku \r Přesun na začátek aktuálního řádku \t Přesun na následující tabelační pozici \v Stanovený přesun dolů \\ Obrácené lomítko \' Apostrof \" Uvozovky \? Otazník Escape sekvence

41 Nadpis Nejprve je vyhodnocen výraz vlevo od čárky, následně je vyhodnecen výraz vpravo od čárky. Syntaxe výraz: výraz1, výraz2 Příklad 1 (nejčastější použití) for (i = 0, j = 0; i < 5; i++, j++) { //... } Příklad 2 int a, b = 1, c = 2; a = (b++, b + c); Operátor čárka

42 Nadpis Syntaxe výraz_podmínka ? výraz1 : výraz2 Příklad x = (a < b) ? a : b; Totéž pomocí if if (a < b) x = a; else x = b; Ternární operátor

43 Nadpis Syntaxe datovy_typ identifikator_pole[pocet_prvku_pole]; datovy_typ identifikator_pole[pocet_prvku_pole] = {p0, p1,...}; Příklad 1 (práce s polem) int pole[3]; int i; for (i = 0; i < 3; i++) { printf(“zadej %d. cislo: “, i); scanf(“%d”, &pole[i]); } for (i = 0; i < 3; i++) { printf(“%d. cislo: %d\n”, i, pole[i]); } Příklad 2 (pole jako argument funkce) int minimum(int pole[], int pocet) { // vypocet minima... } Pole – statická – jednorozměrná

44 Nadpis Syntaxe datovy_typ identifikator[pocet_prvku1][pocet_prvku2] datovy_typ identifikator[pocet_prvku1][pocet_prvku2] = {{p00},{},...} Příklad 1 (inicializace) int matice[3][2] = {{1,2}, {3,4}, {5,6}}; Příklad 2 (přístup k prvkům pole) int matice[3][2]; matice[0][0] = 1; matice[0][1] = 2; matice[1][0] = 3; matice[1][1] = 4; matice[2][0] = 5; matice[2][1] = 6; Pole – statická – vícerozměrná

45 Nadpis Jednorozměrné pole typu char[] ukončené znakem '\0'! Deklarace char retezec[10]; Inicializace char retezec[10] = "ahoj"; char retezec2[] = "ahoj"; Příklad 1 char retezec[10] = "ahoj", retezec2; printf("%d", retezec[0]); printf("%d", retezec[1]); printf("%d", retezec[2]); printf("%d", retezec[3]); printf("%d", retezec[4]); printf("%s", retezec); scanf("%s", retezec2); printf("%s", retezec2); Řetězce

46 Nadpis Hlavičkový soubror Délka řetězce strlen(); Kopírování řetězce strcpy(); Spojení řetězců strcat(); Nalezení znaku v řetězci strchr(); Porovnání dvou řetězců strcmp(); Nalezení pořetězce v řetězci strstr(); Standardní funkce pro práci s řetězci

47 Nadpis Příklad int i = 5; int *p_i = &i; printf("adr. &i=%p, &p_i=%p, p_i=%p\n", &i,&p_i,p_i); printf("hodnoty i=%d, p_i=%d\n", i, *p_i); i++; printf("hodnoty i=%d, p_i=%d\n", i, *p_i); (*p_i)++; printf("hodnoty i=%d, p_i=%d\n", i, *p_i); *p_i = 11; printf("hodnoty i=%d, p_i=%d\n", i, *p_i); Ukazatele (Pointery)

48 Nadpis Příklad int a[5] = {1,2,3,4,5}; int *p = a; // totez co int *p = &a a int *p = &a[0] printf("adr. &a=%p, a=%p, &p=%p, p=%p\n", &a, a, &p, p); printf("hodnoty a[0]=%d, *p=%d\n", a[0], *p); printf("hodnoty a[1]=%d, *(p+1)=%d\n", a[1], *(p+1)); printf("hodnoty a[4]=%d, *(p+4)=%d\n", a[4], *(p+4)); p = p + 3; printf("adr. &a[3]=%p, &p=%p, p=%p\n", &a[3], &p, p); printf("hodnoty *p=%d\n", *p); p--; printf("hodnoty a[2]=%d, *p=%d\n", a[2], *p); *p = 50; printf("hodnoty a[2]=%d, *p=%d\n", a[2], *p); *(p+1) = 44; printf("hodnoty a[3]=%d, *(p+1)=%d\n", a[3], *(p+1)); Pointerová aritmetika

49 Nadpis Příklad na prohození dvou čísel int prohod(int *a, int *b) { int pom = *a; *a = *b; *b = *a; } Pointery jako argumenty funkcí

50 Nadpis Příklad int soucet(int a, int b) { return a + b; } int rozdil(int a, int b) { return a - b; } void main() { int (*p_f)(int a, int b); p_f = soucet; printf("%d\n", p_f(1, 2)); p_f = rozdil; printf("%d\n", p_f(1, 2)); } Ukazatel na funkce

51 Nadpis Alokace paměti void *malloc(size_t size); Uvolnění paměti void free(void *pointer); Alokace paměti s nastavením hodnot na 0 void *calloc(size_t nelements, size_t bytes); Realokace paměti void *realloc(void *pointer, size_t size); Určení velikosti typu – operátor sizeof() Dynamická paměť

52 Nadpis Příklad 1 int *p_i; // alokace pameti p_i = (int*)malloc(100*sizeof(int)); if (p_i == NULL) { // alokace se nezdarila } else { // prace s polem p_i p_i[0] = 5; // uvolneni pameti free(p_i); } Dynamická paměť

53 Nadpis Příklad 2 int *p_i, *p_i2; // alokace pameti p_i = (int*)malloc(100*sizeof(int)); if (p_i == NULL) { // alokace se nezdarila } else { // realokace pameti p_i2 = (int*)realloc(p_i, 10); if (p_i2 == NULL) { // realokace se nezdarila } else { // prace s polem p_i p_i[0] = 5; // uvolneni pameti free(p_i); } Dynamická paměť

54 Nadpis Realizace pomocí dynamického pole pointerů ukazujících na dynamické pole. Příklad // pro jednoduchost se netestuje uspesnost alokace #define radky 10 #define sloupce 10 int **pole, i; // alokace pameti pro pointery (ukazatele na radky) pole = (int**)malloc(radky*sizeof(int*)); // alokace pameti pro jednotlive radky for (i = 0; i < radky; i++) pole[i] = (int*)malloc(sloupce*sizeof(int)); // prace s polem scanf(”%d”, &pole[0][0]); printf(”%d”, pole[0][0]); // uvolneni pameti – nejprve radky, pak ukazatele for (i = 0; i < radky; i++) free(pole[i]); free(pole); Vícerozměrná dynamická pole

55 Nadpis Vstupní bod aplikace: int main(int argc, char *argv[]) argc – počet argumentů (název programu je taky argument) arg[] – ukazatel na pole argumentů arg[0] – název programu arg[1] – 1. argument programu Příklad int main(int argc, char *argv[]) { int i; printf(“Pocet argumentu: %d”, argc); for (i = 0; i < argc; i++) printf(“Argument %d: %s”, i, argv[i]); return 0; } Argumenty programu

56 Nadpis Pro definici/pojmenování nových typů – pointery typedef int *P_INT; P_INT p_int; Pro definici/pojmenování nových typů – struktury (viz dále) Přiklad (pointer na pointer) typedef int *P_INT; typedef P_INT *P_P_INT; P_P_INT p_p_i; //totez znamym zpusobem int **p_p_int; Definice typů - typedef

57 Nadpis Definice struktury a proměnných jirka, alois struct { char jmeno[10]; char prijmeni[20]; int vek; } jirka, alois; Definice pojmenované struktury a proměnných jirka, alois struct osoba { char jmeno[10]; char prijmeni[20]; int vek; } jirka, alois; Struktury

58 Nadpis Definice struktury a následná deklarace proměnných jirka, alois struct osoba { char jmeno[10]; char prijmeni[20]; int vek; }; struct osoba jirka, alois; Definice nového typu a proměnných jirka, alois tohoto typu typedef struct { char jmeno[10]; char prijmeni[20]; int vek; } OSOBA; OSOBA jirka, alois; Struktury

59 Nadpis Příklad typedef struct { char jmeno[10]; char prijmeni[20]; int vek; } OSOBA; OSOBA osoby[10]; void main() { printf(“Zadejete jmeno 1. osoby: ”); scanf(“%s”, &osoby[0].jmeno); printf(“Zadejete prijmeni 1. osoby: ”); scanf(“%s”, &osoby[0].prijmeni); printf(“Zadejete vek 1. osoby: ”); scanf(“%d”, &osoby[0].vek); printf(“Osoba 1: %s %s (%d)”, osoby[0].jmeno, osoby[0].prijmeni, osoby[0].vek); } Struktury – příklad

60 Nadpis Příklad typedef enum { MODRA, BILA, ZLUTA, CERVENA, HNEDA } BARVY; BARVY barva = MODRA; char *nazvy[] = {”Modra”, ”Bila”, ”Zluta”, ”Cervena”, ”Hneda” }; printf(”Vybrana barva %s\n”, nazvy[barva]); Přiřazení hodnot konstantám typedef enum { MODRA = 5, BILA = 2, ZLUTA = 7, } BARVY; Výčtový datový typ – enum

61 Nadpis Definice typedef union { int i; float f; char c; } PRVEK; PRVEK prvky[10]; Použití Vždy se může použít jen jeden z prvků unionu, protože všechny sdílejí stejnou paměť Union nenese informaci o typu prvku v něm uloženém Přístup je stejný jako ke struktuře (prvky[0].i = 5) K zamyšlení Jak poznat typ prvku v unionu? Union

62 Nadpis Struktura o velikost int Můžeme definovat počet bitů, které jednotlivé prvky struktury zabírají Příklad 1 typedef struct { unsigned hodina : 5; // 0 az 23 => min. 5 bitu unsigned minuta : 6; // 0 az 59 => min. 6 bitu unsigned sekunda : 6; // 0 az 59 => min. 6 bitu } CAS; CAS mujCas; mujCas.hodina = 10; mujCas.minuta = 58; mujCas.sekunda = 50; Příklad 2 Funkce, která vrátí rozdíl dvou časů. Bitová pole

63 Nadpis Postup práce se soubory –Otevření souboru –Práce se souborem –Uzavření souboru –Ošetření chyb, které mohou nastat Dva typy souborů –Textové soubory –Binární soubory Práce se soubory

64 Nadpis Otevření souboru pomocí fopen(); Režimy otevření: –r –w –a –r+ –w+ –a+ Uzavření soboru pomocí fclose(); Práce se soubory – otevření/uzavření

65 Nadpis Textové soubory –fgetc() –fputc() –fscanf() –fprintf() –fgets() –fputs() Binární soubory –read() –write() Práce se soubory – čtení/zápis

66 Nadpis Konec řádku Konec souboru Práce se soubory – testování konce řádku/souboru

67 Nadpis Vrácení posledního přečteného znaku zpět do bufferu Funkce ungetch(); Funguje většinou jen na poslední přečtený znak Pohyb v rámci souboru Funkce fseek(); Práce se soubory – pohyb v rámci souboru

68 Nadpis – makra pro ladění – práce s znaky – matematické funkce (přesnost double) – práce v národním prostředí – umožnění běžně nedovolených skoků – zpracování signálů – podpora proměnného počtu argumentů – funkce pro vstup a výstup – běžné funkce – práce s řetězci – práce s datem a časem – systémové chyby – charakteristiky celých čísel – charakteristiky reálných čísel – standardní definice Standardní hlavičkové soubory

69 Nadpis (viz dříve) + hlavičkový soubor –Přejmenování souboru int rename(const char *old, const char *new); –Ostranění souboru int remove(const char *fileName); Funkce pro práci se soubory

70 Nadpis isalnum() – je číslice nebo písmeno? isalpha() – je písmeno? isdigit() – je číslice? isxdigit() – je hexadecimální číslice? iscntrl() – je řídicí znak? islower() – je malé písmeno? isupper() – je velké písmeno? isspace() – je mezera? tolower() – převod na malé písmeno toupper() – převod na velké písmeno Práce se znaky –

71 Nadpis Goniometrické funkce: sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan(x, y), sinh(x), cosh(x), tanh(x) Exponenciální funkce: exp(x) = e x Přirozený logaritmus: log(x) Dekadický logaritmus: log10(x) Umocnění: pow(x, y) = x y Druhá odmocnina: sqrt(x) Zaokrouhlení nahoru: ceil(x) Zaokrouhlení dolů: floor(x) Absolutní hodnota: fabs(x) Reálný zbytek po dělení x/y: fmod(x,y) Matematické funkce –

72 Nadpis Práce se soubory fopen(), fclose(), remove(), rename(), fprintf(), fscanf(), fgetc(), fgets(), fputc(), fputs(), ungetc(), fread(), fwrite(), fseek(), ftell(), rewind(), fgetpos(), fsetpos(), feof() Práce se standardním vstupem a výstupem printf(), scanf(), getc(), gets(), putc(), puts(), getchar(), putchar(), Práce s řetězci sprintf(), sscanf(), Funkce pro vstup a výstup

73 Nadpis Konverzní funkce –atof() – konverze řetězce na double –atoi() – konverze řetězce na int –atol() – konverze řetězce na long int –strtod() – konverze řetězce na double –strtol() – konverze řetězce na long int –strtoul() – konverze řetězce na unsigned long int Generování náhodných čísel –rand() – generování náhodného čísla –srand() – inicializace generátoru náhodných čísel Práce s dynamicky alokovanou pamětí –calloc() – alokace dynamické paměti s inicializací –malloc() – alokace dynamické paměti –realloc() – realokace dynamické paměti –free() – uvolnění dynamicky alokované paměti Standardní knihovna 1/2

74 Nadpis Ukončení programu –abort() – nestandardní ukončení programu –exit() – standardní ukonční programu –atexit() – registrace ukončovací funkce Matematické funkce –abs() – absolutní hodnota typu int –labs() – absolutní hodnota typu long int –div(x, y) – x/y a x%y současně pro typ int –ldiv(x, y) – x/y a x%y současně pro typ long int Systémové funkce –system() – volání systémového příkazu –getenv() – poskytnutí informace o systémové proměnné Třídění –bsearch() – binární vyhledávání –qsort() – řazení algoritmem quick-sort Standardní knihovna 2/2

75 Nadpis Počet tiků procesoru: clock() Počet sekund od 1. ledna 1970: time() Rozdíl dvou časů: difftime() Práce s položkami času: mktime() Konverze času do řetězce: asctime() Konverze počtu sekund do řetězce: ctime() Práce s GMT: gmtime() Výpočet složek času z počtu sekund: localtime() Formátová konverze složek času do řetězce: strftime() Funkce pro práci s časem

76 Nadpis text Dynamické datové struktury – seznam


Stáhnout ppt "Název prezentace Algoritmizace a programování Cvičení Jan Kordas D400 2008."

Podobné prezentace


Reklamy Google