Quick sort, spojové struktury
|
|
- Agnieszka Kalinowska
- 5 lat temu
- Przeglądów:
Transkrypt
1 Quick sort, spojové struktury BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı České vysoké učení technické v Praze xvagner@fit.cvut.cz, vogeljos@fit.cvut.cz 12., 21. a 22. prosince 2017
2 Přehled Datový typ struct (struktura, záznam) připomenutí. Algoritmus quick sort. Knihovní implementace quick sort, ukazatel na funkci. Spojové seznamy. Obousměrné spojové seznamy. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 2/39
3 Struktury opakování Deklarace struktury: struct jméno_struktury { položky seznam_proměnných; jméno struktury je jméno datového typu struct (nepovinné), seznam proměnných je seznam deklarovaných proměnných, proměnné odděleny čárkami (nepovinné), položky jsou jakéhokoli datového typu, s výjimkou struktury samé (rekurzivní deklarace struktury je zakázána), avšak položkou může být ukazatel na strukturu samou (struct jméno struktury * jmeno polozky). Deklarace proměnné: struct jméno_struktury seznam_proměnných; /* ok */ jméno_struktury seznam_proměnných; /* chybně v C */ M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 3/39
4 Struktury opakování Zkráceně může být datový typ struktura také deklarován: typedef struct jméno_struktury { položky jméno_typu; /* deklarace proměnných: */ jméno_typu seznam_proměnných; /* také ok: */ struct jméno_struktury jiný_seznam_proměnných; jméno typu je zkratka pro struct jméno struktury, jméno struktury je nepovinné ve výše uvedené deklaraci, jméno typu není povinné, ale použití typedef je podezřelé, když jméno typu není použito. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 4/39
5 Struktury příklad typedef struct TComplex { double real, imag; TCOMPLEX; TCOMPLEX a, *pa; struct TComplex b; Položky struktury jsou přístupné použitím dvou operátorů: tečka. se použije k přístupu k položce struktury, šipka -> se použije pro přístup k položce přes ukazatel na proměnnou typu struktura. a.real = 10; a.imag = a.real + 5; pa = &b; pa->real = 230; pa->imag = pa->real + a.imag; a = *pa; /* ok, kopie obsahu */ (*pa).real = (&a)->imag; /* ok, ale neobvyklé */ M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 5/39
6 Algoritmus Quick sort Merge sort má časovou složitost O(n log n). To je asymptoticky optimální, avšak má dvě nevýhody: skrytá multiplikativní konstanta není malá, algoritmus potřebuje další pamět ový prostor pole řazených prvků ještě jednou. Algoritmus Quick sort nemá tato omezení: skrytá multiplikativní konstanta je velmi malá, algoritmus nepotřebuje žádný další prostor, na druhé straně, v nejhorším případě je časová složitost O(n 2 ). Vstupní data musí mít speciální pořadí, aby se dosáhl nejhorší případ. Průměrná složitost je O(n log n). Empiricky je Quick sort nejrychlejší volbou. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 6/39
7 Algoritmus Quick princip Vybere se pivot. Ideálně má pivot hodnotu mediánu prvků pole. Algoritmus rozděĺı pole na dvě části a prohodí prvky tak, aby: dolní část obsahovala prvky menší než pivot, horní část obsahovala prvky větší nebo rovné pivotu. Obě části se řadí rekurzivně. Výběr pivota je rozhodující výběr je dobrý, když obě části jsou stejně velké. Při takové volbě je algoritmus nejrychlejší. Při špatném výběru je velikost pole zmenšena pouze o jeden prvek a algoritmus degraduje na kvadratickou složitost. Optimální hodnota pivota je medián, ale ten není znám, dokud pole neni seřazeno. Dobré implementace proto používají třeba medián z náhodně vybraných tří prvků pole. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 7/39
8 Algoritmus Quick sort příklad Pivot: Pivot: 5 Pivot: Pivot: 4 Pivot: 11 Pivot: Pivot: M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 8/39
9 Knihovní funkce pro Quick sort Standardní knihovna C obsahuje implementaci algoritmu Quick sort. Prototyp funkce je obsažen v stdlib.h. Implementace je generická prvky pole, které jsou algoritmem řazeny, mohou být libovolného typu. Funkce qsort je kompletní implementací algoritmu Quick sort, až na vlastní porovnání: prvky pole musí být porovnány a zaměněny mezi sebou, záměna se provede bajt po bajtu, porovnání je různorodé, závisí na typu prvků pole a řadicím kritériu. Funkci, která porovnává dva prvky pole mezi sebou, dodává aplikační programátor v podobě ukazatele na funkci. Kdykoliv potřebuje algoritmus Quick sort porovnat nějaké prvky, zavolá tuto uživatelskou funkci. Volání probíhá prostřednictvím předaného ukazatele. Porovnávací funkci jsou dodány ukazatele na oba porovnávané prvky pole. Návratová hodnota je kladná, nulová nebo záporná pro hodnoty první větší než druhý, resp. rovné nebo menší. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 9/39
10 Knihovní funkce pro Quick sort #include <stdlib.h> int main( void ) { int a[9] = {1,5,9,3,6,4,89,23,11; int i; qsort( (void*)a, 9, sizeof(a[0]), intcompare ); /* intcompare je porovnávací funkce */ for(i = 0; i < 9 ; i ++ ) printf ( "%3d ",a[i] ); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 10/39
11 Knihovní funkce pro Quick sort int intcompare ( const void *a, const void *b ) { int * aa, *bb; aa = (int*) a; bb = (int*) b; /* a b jsou ukazatele na porovnávané prvky pole, typ ukazatele - void * - musí být přetypován na typ ukazatele podle skutečného prvku pole, (zde int - ukazatele aa a bb) */ if ( *aa < *bb ) return -1; if ( *bb < *aa ) return 1; return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 11/39
12 Knihovní funkce pro Quick sort int intcompare ( const void *a, const void *b ) { int * aa, *bb; aa = (int*) a; bb = (int*) b; return *aa - *bb; /* kratší, často správné, ale není 100% OK */ M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 12/39
13 Knihovní funkce pro Quick sort int intcompare ( const void *a, const void *b ) { int * aa, *bb; aa = (int*) a; bb = (int*) b; return *aa - *bb; /* kratší, často správné, ale není 100% OK */ int intcompare ( const void *a, const void *b ) { return *(int*)a - *(int*)b; /* ještě kratší, ale opět není 100% OK */ M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 12/39
14 Knihovní funkce pro Quick sort /* Proč parametry const void *? Ty skutečně v naší implementaci ukazují na celá čísla */ int intcompare ( const int *a, const int *b ) { return *a - *b; /* pěkné - jednodušeji už nelze, ale stále není 100% OK */ /* Ale knihovní funkce qsort předpokládá jiné rozhraní funkce. Ok, přesvědčme kompilátor, že ten mišmaš funkčních ukazatelů je naše přání */... qsort( (void*)a, 9, sizeof(a[0]), ( int(*)(const void *, const void *) ) intcompare ); /* ukazatel na funkci je přetypován, aby se shodovaly očekávané typy */... M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 13/39
15 Quick sort porovnávací funkce, pro zvídavé Můžeme si dovolit přetypovat ukazatele na funkci dle libosti? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 14/39
16 Quick sort porovnávací funkce, pro zvídavé Můžeme si dovolit přetypovat ukazatele na funkci dle libosti? Ne. Kompilátor naše přetypování sice akceptuje, ale při neuváženém přetypování je pravděpodobný pád programu. Proč tedy zde přetypování funguje? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 14/39
17 Quick sort porovnávací funkce, pro zvídavé Můžeme si dovolit přetypovat ukazatele na funkci dle libosti? Ne. Kompilátor naše přetypování sice akceptuje, ale při neuváženém přetypování je pravděpodobný pád programu. Proč tedy zde přetypování funguje? Protože to není libovolné přetypování: funkce qsort připraví pro porovnávací funkci dva parametry typu ukazatel (odkazují na porovnávané prvky). Skutečně volaná funkce má také dva parametry typu ukazatel, liší se typy ukazatelů na prvky, ale jejich pamět ová reprezentace za běhu je stejná (4/8 B v paměti), funkce qsort zavolá funkci odkazovanou předaným ukazatelem na funkci, námi dodaný ukazatel odkazuje na platnou funkci, očekává se návratová hodnota typu int, námi dodaná funkce vrací typ int. Co tedy toto přetypování ukazatele na funkci fakticky udělá? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 14/39
18 Quick sort porovnávací funkce, pro zvídavé Můžeme si dovolit přetypovat ukazatele na funkci dle libosti? Ne. Kompilátor naše přetypování sice akceptuje, ale při neuváženém přetypování je pravděpodobný pád programu. Proč tedy zde přetypování funguje? Protože to není libovolné přetypování: funkce qsort připraví pro porovnávací funkci dva parametry typu ukazatel (odkazují na porovnávané prvky). Skutečně volaná funkce má také dva parametry typu ukazatel, liší se typy ukazatelů na prvky, ale jejich pamět ová reprezentace za běhu je stejná (4/8 B v paměti), funkce qsort zavolá funkci odkazovanou předaným ukazatelem na funkci, námi dodaný ukazatel odkazuje na platnou funkci, očekává se návratová hodnota typu int, námi dodaná funkce vrací typ int. Co tedy toto přetypování ukazatele na funkci fakticky udělá? Nic. Ve výsledném programu se toto přetypování neprojeví žádným výkonným kódem. Přetypování pouze potlačí chybu/varování kompilátoru. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 14/39
19 Quick sort porovnávací funkce, pro zvídavé Opravdu lze v porovnávací funkci odečítat místo porovnání? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 15/39
20 Quick sort porovnávací funkce, pro zvídavé Opravdu lze v porovnávací funkci odečítat místo porovnání? Obecně nelze. Pokud dochází k přetékání, výsledné pole nebude správně seřazené. Zkuste si pro pole celých čísel s hodnotami pobĺıž horního a dolního limitu typu int. Lze trik s odečítáním použít pro desetinná čísla? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 15/39
21 Quick sort porovnávací funkce, pro zvídavé Opravdu lze v porovnávací funkci odečítat místo porovnání? Obecně nelze. Pokud dochází k přetékání, výsledné pole nebude správně seřazené. Zkuste si pro pole celých čísel s hodnotami pobĺıž horního a dolního limitu typu int. Lze trik s odečítáním použít pro desetinná čísla? Nelze. Pokud je výsledkem odečítání číslo v intervalu (-1,+1), bude v návratovém typu převedeno na hodnotu 0 int, tedy taková desetinná čísla budou pro porovnání shodná. Lze trik s odečítáním použít pro typy char / short int? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 15/39
22 Quick sort porovnávací funkce, pro zvídavé Opravdu lze v porovnávací funkci odečítat místo porovnání? Obecně nelze. Pokud dochází k přetékání, výsledné pole nebude správně seřazené. Zkuste si pro pole celých čísel s hodnotami pobĺıž horního a dolního limitu typu int. Lze trik s odečítáním použít pro desetinná čísla? Nelze. Pokud je výsledkem odečítání číslo v intervalu (-1,+1), bude v návratovém typu převedeno na hodnotu 0 int, tedy taková desetinná čísla budou pro porovnání shodná. Lze trik s odečítáním použít pro typy char / short int? Obecně nelze, ale téměř jistě to bude vždy správně fungovat. Podle normy jazyka se před odečtením char / short int musí rozšířít na celé číslo (integer promotion) a v datovém typu int se provede vlastní operace. Pokud je rozsah char / short int menší než rozsah typu int, nemůže dojít k přetečení. I tak je ale lepší se triku vyhnout. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 15/39
23 Quick sort porovnávací funkce, pro zvídavé int intcmpwrong ( const int * a, const int * b ) { return *a - *b; int dblcmpwrong ( const double * a, const double * b ) { return *a - *b; int a[]={ , , , ; qsort ( a, sizeof ( a ) / sizeof ( a[0] ), sizeof ( a[0] ), (int(*)(const void *, const void *)) intcmpwrong ); /* */ double b [] = { 1.2, 1.3, 1.8, 1.5, 1.7, 1.1, 1.4 ; qsort ( b, sizeof ( b ) / sizeof ( b[0] ), sizeof ( b[0] ), (int(*)(const void *, const void *)) dblcmpwrong ); /* */ M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 16/39
24 Quick sort porovnávací funkce, pro zvídavé Proč se tedy trik s odečítáním ukazuje? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 17/39
25 Quick sort porovnávací funkce, pro zvídavé Proč se tedy trik s odečítáním ukazuje? Kód lze často najít v existujícím software a literatuře. Vše funguje, dokud nedojde k přetečení. Tím je trik zákeřný většinou funguje, ale není 100% správný. Vyhněte se mu. Jak tedy správně? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 17/39
26 Quick sort porovnávací funkce, pro zvídavé Proč se tedy trik s odečítáním ukazuje? Kód lze často najít v existujícím software a literatuře. Vše funguje, dokud nedojde k přetečení. Tím je trik zákeřný většinou funguje, ale není 100% správný. Vyhněte se mu. Jak tedy správně? int intcompare ( const int *a, const int *b ) { return ( *b < *a ) - ( *a < *b ); /* OK! */ int dblcompare ( const double *a, const double *b ) { return ( *b < *a ) - ( *a < *b ); /* OK! */ int shortcompare ( const short *a, const short *b ) { return ( *b < *a ) - ( *a < *b ); /* OK! */ M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 17/39
27 Seřazení studentů knihovní funkcí qsort () Seřazení pole studentů podle průměrného prospěchu: #include <stdlib.h> typedef struct TStudent { char name[name_max], surname [NAME_MAX]; double avg; TSTUDENT; int studentcompare ( TSTUDENT *a, TSTUDENT *b ) { return (b->avg < a->avg) - (a->avg < b->avg); void sortstudents (TSTUDENT a[], int n ) { qsort ( (void*)a, n, sizeof(a[0]), (int(*) (const void *, const void *)) studentcompare ); M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 18/39
28 Seřazení studentů knihovní funkcí qsort () Seřazení pole studentů podle průměrného prospěchu: #include <stdlib.h> typedef struct TStudent { char name[name_max], surname [NAME_MAX]; double avg; TSTUDENT; int studentcompare ( TSTUDENT *a, TSTUDENT *b ) { return (b->avg < a->avg) - (a->avg < b->avg); void sortstudents (TSTUDENT a[], int n ) { qsort ( (void*)a, n, sizeof(a[0]), (int(*) (const void *, const void *)) studentcompare ); Pořadí studentů se stejným průměrem není po seřazení definováno, může být stejné i obrácené než bylo v původním poli (Quick sort může pořadí zachovat, ale může i prvky prohodit). Takové řazení se nazývá nestabilní. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 18/39
29 Seřazení studentů knihovní funkcí qsort () Pokud bychom chtěli, aby dalším kritériem pro pořadí bylo navíc abecední pořadí příjmení a jména, museli bychom porovnání upravit třeba takto: #include <string.h> int studentcompare ( TSTUDENT *a, TSTUDENT *b ) { int res = (b->avg < a->avg) - (a->avg < b->avg); if (res) return res; if (( res = strncmp ( a->surname, b->surname, NAME_MAX ))) return res; return strncmp ( a->name, b->name, NAME_MAX ); M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 19/39
30 Spojové struktury seznam Problém: program čte celá čísla ze vstupu (až do EOF). Vstup je pak zobrazen v obráceném pořadí. Rekurzivní řešení (hloubka rekurze). Uložení do pole (musí být dána velikost pole). Uložení do zřetězeného seznamu: struktura je dynamicky alokována pro každé vstupující číslo, struktura obsahuje hodnotu čísla a ukazatel na strukturu obsahující předchozí číslo ze sekvence (následující v řetězu). struktura obsahující první číslo (poslední v řetězu) má prázdný ukazatel (hodnota NULL). Input sequence: 56, 8, 5 Head Dynamically allocated structures M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 20/39
31 Spojový seznam typedef struct TElement { int val; struct TElement *next; TELEMENT; TELEMENT * createelement ( int val, TELEMENT * next ) { TELEMENT * n; n = (TELEMENT *)malloc ( sizeof (*n) ); n->val = val; n->next = next; return n; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 21/39
32 Spojový seznam Problém obrácení vstupní sekvence: začátek s prázdným seznamem, čtení čísla ze vstupu, přidání čísla přidání do seznamu dopředu (na první pozici), opakuje se až do konce vstupu, zobrazí se hodnoty ze seznamu (seznam je už obrácený). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 22/39
33 Spojový seznam int main ( void ) { TELEMENT * st = NULL, *p; int x; printf ( "Napis sekvenci cisel:\n" ); while ( scanf ( "%d", &x ) == 1 ) st = createelement ( x, st ); printf ( "Obracene:\n" ); p = st; while ( p ) { printf ( "%d ", p->val ); p = p->next; printf ( "\n" ); return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 23/39
34 Spojový seznam Potřebujeme další ukazatel (p) pro čtení hodnot?... printf ( "Obracene:\n" ); while (st) { printf ( "%d ", st->val ); st = st->next; /* jejda */... Když je hlava seznamu ztracena (ukazatel st je změněn), neexistuje žádný způsob, jak najít hlavu seznamu. Seznam je ztracen. Čtení spojového seznamu tedy vždy využívá pomocný ukazatel na prvek seznamu. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 24/39
35 Spojový seznam Jak uvolnit pamět alokovanou spojovým seznamem? Špatné řešení:... while ( st ) { free ( st ); st = st->next; /* může selhat - přistupuje k již uvolněné paměti */ Správné řešení:... while ( st ) { TELEMENT * p = st->next; /* ukazatel je zachován */ free ( st ); st = p; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 25/39
36 Spojový seznam Jiný problém: Čtení sekvence celých čísel, jejich uložení do zřetězeného seznamu. Sekvence bude zakončena EOF. Duplikované hodnoty se neukládají. Hodnoty budou uloženy v obráceném pořadí. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 26/39
37 Spojový seznam void printlist ( TELEMENT *st ) { while ( st ) { printf ( "%d ", st->val ); st = st->next; /* ok - modifikujeme jen lokální proměnnou */ printf ( "\n" ); int isinlist (TELEMENT * st, int x) { while ( st && st->val!= x ) st = st->next; return st!= NULL; void freelist ( TELEMENT * st ) { while ( st ) { TELEMENT * p = st->next; free ( st ); st = p; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 27/39
38 Spojový seznam int main ( void ) { TELEMENT *st = NULL, *p; int x; printf ( "Napis sekvenci:\n" ); while ( scanf ( "%d", &x ) == 1 ) if (! isinlist ( st, x ) ) st = createelement (x, st); printf ( "Obracene, duplicity odstraneny:\n"); printlist ( st ); freelist ( st ); st = NULL; /* trochu paranoidní */ return 0; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 28/39
39 Spojový seznam Vytvořili jsme nový seznam a nový prvek jsme zařadili na začátek seznamu. Proto seznam obsahuje hodnoty v obráceném pořadí. Modifikujme program tak, abychom prvky přidávali na jeho konec (pořadí zachováno): Když je seznam prázdný, tak prvek nahradí hodnotu NULL, je-li neprázdný, musíme najít poslední prvek a zde připojit prvek s novou hodnotou. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 29/39
40 Spojový seznam TELEMENT * appendend ( TELEMENT *st, int x ) { TELEMENT * tmp; /* prázdný seznam */ if (! st ) return createelement ( x, NULL ); /* neprázdný - najít poslední prvek */ for ( tmp = st; tmp->next; tmp = tmp->next ) { tmp->next = createelement ( x, NULL ); return st;... while ( scanf ( "%d", &x ) == 1 ) if (! isinlist ( st, x ) ) st = appendend (st, x); M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 30/39
41 Spojový seznam Vložení prvého prvku potřebuje konstantní čas O(1). Připojení dalšího prvku vyžaduje nalezení konce seznamu O(n), kde n je délka seznamu. Když vynecháme hledání duplicit (které má lineární složitost O(n)), můžeme algoritmus optimalizovat na konstantní složitost O(1). K tomu použijeme další ukazatel, který ukazuje na poslední prvek seznamu: ukazatel bude na počátku nastaven na NULL pro prázdný seznam, ukazatel bude aktualizován při při každém přidání prvku na konec seznamu. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 31/39
42 Spojový seznam int main ( void ) { TELEMENT *st = NULL, *en = NULL, *p; int x; printf ( "Napis sekvenci:\n" ); while ( scanf ( "%d", &x ) == 1 ) { p = createelement ( x, NULL ); if ( en == NULL ) st = p; /* prázdný seznam */ else en->next = p; en = p; /* aktualizace ukazatele na poslední prvek */... M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 32/39
43 Spojový seznam zarážka Zarážka je jeden prvek navíc na konci spojového senzamu. Neobsahuje užitečná data, pouze zjednodušuje některé operace: např. lze vypustit if v cyklu. Tím se program trochu urychĺı (nikoli však z hlediska asymptotické složitosti) a také zcela zmizí problém prvého vložení do seznamu. Operace připojení, vkládání a mazání musí zachovat zarážku na konci seznamu. Čtecí operace musí zarážku přeskočit. Prázdný seznam je reprezentován jediným prvkem zarážkou. st Linked list with sentinel Input sequence: 5, 8 5 8?? en M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 33/39
44 Spojový seznam zarážka int main ( void ) { TELEMENT *st, *en; int x; /* inicializace seznamu se zarážkou */ st = en = malloc ( sizeof(*en) ); printf ( "Napis sekvenci cisel:\n" ); while ( scanf ( "%d", &x ) == 1 ) en = appendend ( x, en ); printlist ( st, en ); freelist ( st, en ); TELEMENT * appendend ( int x, TELEMENT * en ) { TELEMENT *p = en; en = malloc ( sizeof(*en) ); p->val = x; p->next = en; return en; M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 34/39
45 Spojový seznam zarážka void printlist ( TELEMENT * st, TELEMENT * en ) { while ( st!= en ) { printf ( "%d ", st->val ); st = st->next; printf ( "\n" ); void freelist ( TELEMENT * st, TELEMENT * en) { while ( st!= en ) { TELEMENT * p = st->next; free ( st ); st = p; free ( en ); M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 35/39
46 Spojový seznam Údržba seřazeného spojového seznamu vyžaduje vkládání prvků kamkoli v seznamu (na začátek, na konec, dovnitř) Tato operace vyžaduje čas O(n). Neexistuje žádný jednoduchý trik, jak tento algoritmus urychlit. Při vložení prvku budeme vždy modifikovat dva ukazatele. Když udržujeme ukazatel na poslední prvek, musíme modifikovat ještě tento ukazatel, je-li nový prvek je poslední v seznamu. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 36/39
47 Spojový seznam int main ( void ) { TELEMENT *st = NULL, *en = NULL, *tmp, *prev; int x; printf ( "Napis sekvenci:\n" ); while ( scanf ( "%d", &x ) == 1 ) { prev = NULL; for ( tmp = st; tmp && tmp->val <= x; tmp = tmp->next ) prev = tmp; if ( prev == NULL ) { /* první v seznamu */ st = createelement ( x, st ); if (! en ) en = st; else { /* dovnitř nebo na konec */ prev->next = createelement ( x, prev->next ); if ( prev == en ) en = en->next;... M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 37/39
48 Spojové struktury Spojové seznamy jsou jednoduché spojové struktury. Spoje propojují prvky spojové struktury. Spoje vytvářejí relaci předchůdce následník. Spojové seznamy jsou lineární struktury každý prvek má nejvíce jednoho následníka. Single linked list Cyclic single linked list Double linked list M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 38/39
49 Otázky a odpovědi Otázky... M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Spojové struktury, BI-PA1 39/39
TGH01 - Algoritmizace
TGH01 - Algoritmizace Jan Březina Technical University of Liberec 28. února 2017 Co je to algoritmus? Porovnávání algoritmů Porovnávání algoritmů Co je to algoritmus? Který algoritmus je lepší? Záleží
Bardziej szczegółowoReprezentace dat. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner
Reprezentace dat BI-PA1 Programování a Algoritmizace I. Ladislav Vagner Katedra teoretické informatiky Fakulta informačních technologíı ČVUT v Praze xvagner@fit.cvut.cz 9., 11. a 12. října 2017 Obsah Dvojková
Bardziej szczegółowoTGH01 - Algoritmizace
TGH01 - Algoritmizace Jan Březina Technical University of Liberec 31. března 2015 Metainformace materiály: jan.brezina.matfyz.cz/vyuka/tgh (./materialy/crls8.pdf - Introduction to algorithms) SPOX: tgh.spox.spoj.pl
Bardziej szczegółowoKomplexní analýza. Martin Bohata. Katedra matematiky FEL ČVUT v Praze Martin Bohata Komplexní analýza Mocninné řady 1 / 18
Komplexní analýza Mocninné řady Martin Bohata Katedra matematiky FEL ČVUT v Praze bohata@math.feld.cvut.cz Martin Bohata Komplexní analýza Mocninné řady 1 / 18 Posloupnosti komplexních čísel opakování
Bardziej szczegółowoAproximace funkcí 1,00 0,841 1,10 0,864 1,20 0,885. Body proložíme lomenou čarou.
Příklad Známe následující hodnoty funkce Φ: u Φ(u) 1,00 0,841 1,10 0,864 1,20 0,885 Odhadněte přibližně hodnoty Φ(1,02) a Φ(1,16). Možnosti: Vezmeme hodnotu v nejbližším bodě. Body proložíme lomenou čarou.
Bardziej szczegółowoNumerické metody 8. května FJFI ČVUT v Praze
Obyčejné diferenciální rovnice Numerické metody 8. května 2018 FJFI ČVUT v Praze 1 Úvod Úvod Základní metody Pokročilejší metody Soustava Vyšší řád Program 1 Úvod Úvod - Úloha Základní úloha, kterou řešíme
Bardziej szczegółowoEdita Pelantová, katedra matematiky / 16
Edita Pelantová, katedra matematiky seminář současné matematiky, září 2010 Axiomy reálných čísel Axiomy tělesa Axiom 1. x + y = y + x a xy = yx (komutativní zákon). Axiom 2. x + (y + z) = (x + y) + z a
Bardziej szczegółowoKristýna Kuncová. Matematika B2 18/19
(6) Určitý integrál Kristýna Kuncová Matematika B2 18/19 Kristýna Kuncová (6) Určitý integrál 1 / 28 Newtonův integrál Zdroj: https://kwcalculus.wikispaces.com/integral+applications Kristýna Kuncová (6)
Bardziej szczegółowo(1) Derivace. Kristýna Kuncová. Matematika B2 17/18. Kristýna Kuncová (1) Derivace 1 / 35
(1) Derivace Kristýna Kuncová Matematika B2 17/18 Kristýna Kuncová (1) Derivace 1 / 35 Růst populací Zdroj : https://www.tes.com/lessons/ yjzt-cmnwtvsq/noah-s-ark Kristýna Kuncová (1) Derivace 2 / 35 Růst
Bardziej szczegółowoFunkce zadané implicitně. 4. března 2019
Funkce zadané implicitně 4. března 2019 Parciální derivace druhého řádu Parciální derivace druhého řádu funkce z = f (x, y) jsou definovány: Parciální derivace 2 f 2 = ( ) f 2 f 2 = ( ) f 2 f a 2 f 2 f
Bardziej szczegółowoMartin Pergel. 26. února Martin Pergel
26. února 2017 Užitečné informace Navážeme na Programování I, změníme jazyk na C#, podrobnosti o C# budou v navazujícím kurzu, soustředíme se na totéž, co v zimě, tedy: technické programování, návrh a
Bardziej szczegółowoLogika V. RNDr. Kateřina Trlifajová PhD. Katedra teoretické informatiky Fakulta informačních technologíı BI-MLO, ZS 2011/12
Logika V. RNDr. Kateřina Trlifajová PhD. Katedra teoretické informatiky Fakulta informačních technologíı České vysoké učení technické v Praze c Kateřina Trlifajová, 2010 BI-MLO, ZS 2011/12 Evropský sociální
Bardziej szczegółowoÚvodní informace. 18. února 2019
Úvodní informace Funkce více proměnných Cvičení první 18. února 2019 Obsah 1 Úvodní informace. 2 Funkce více proměnných Definiční obor Úvodní informace. Komunikace: e-mail: olga@majling.eu nebo olga.majlingova@fs.cvut.cz
Bardziej szczegółowo5. a 12. prosince 2018
Integrální počet Neurčitý integrál Seminář 9, 0 5. a. prosince 08 Neurčitý integrál Definice. Necht funkce f (x) je definovaná na intervalu I. Funkce F (x) se nazývá primitivní k funkci f (x) na I, jestliže
Bardziej szczegółowoLinea rnı (ne)za vislost
[1] Lineární (ne)závislost Skupiny, resp. množiny, vektorů mohou být lineárně závislé nebo lineárně nezávislé... a) zavislost, 3, b) P. Olšák, FEL ČVUT, c) P. Olšák 2010, d) BI-LIN, e) L, f) 2009/2010,
Bardziej szczegółowoMatematika (KMI/PMATE)
Matematika (KMI/PMATE) Úvod do matematické analýzy Limita a spojitost funkce Matematika (KMI/PMATE) Osnova přednášky lineární funkce y = kx + q definice lineární funkce význam (smysl) koeficientů lineární
Bardziej szczegółowoElementární funkce. Edita Pelantová. únor FJFI, ČVUT v Praze. katedra matematiky, FJFI, ČVUT v Praze
Elementární funkce Edita Pelantová FJFI, ČVUT v Praze Seminář současné matematiky katedra matematiky, FJFI, ČVUT v Praze únor 2013 c Edita Pelantová (FJFI) Elementární funkce únor 2013 1 / 19 Polynomiální
Bardziej szczegółowoNecht je funkce f spojitá v intervalu a, b a má derivaci v (a, b). Pak existuje bod ξ (a, b) tak, že f(b) f(a) b a. Geometricky
Monotónie a extrémy funkce Diferenciální počet - průběh funkce Věta o střední hodnotě (Lagrange) Necht je funkce f spojitá v intervalu a, b a má derivaci v (a, b). Pak existuje bod ξ (a, b) tak, že f (ξ)
Bardziej szczegółowoKapitola 4: Soustavy diferenciálních rovnic 1. řádu
Sbírka příkladů Matematika II pro strukturované studium Kapitola 4: Soustavy diferenciálních rovnic 1 řádu Chcete-li ukončit prohlížení stiskněte klávesu Esc Chcete-li pokračovat stiskněte klávesu Enter
Bardziej szczegółowoInverzní Z-transformace
Modelování systémů a procesů (11MSP) Bohumil Kovář, Jan Přikryl, Miroslav Vlček Ústav aplikované matematiky ČVUT v Praze, Fakulta dopravní 9. přednáška 11MSP úterý 16. dubna 2019 verze: 2019-04-15 12:25
Bardziej szczegółowoPowyższe reguły to tylko jedna z wersji gry. Istnieje wiele innych wariantów, można też ustalać własne zasady. Miłej zabawy!
Krykiet W krykieta może grać od 2 do 4 osób, którzy albo grają każdy przeciw każdemu, albo dzielą się na dwie drużyny. Bramki oraz palik startowy i powrotne umieszcza się tak, jak pokazano na rysunku.
Bardziej szczegółowoMatematika 2, vzorová písemka 1
Matematika 2, vzorová písemka Pavel Kreml 9.5.20 Přesun mezi obrazovkami Další snímek: nebo Enter. Zpět: nebo Shift + Enter 2 3 4 Doporučení Pokuste se vyřešit zadané úlohy samostatně. Pokud nebudete vědět
Bardziej szczegółowoCo nám prozradí derivace? 21. listopadu 2018
Co nám prozradí derivace? Seminář sedmý 21. listopadu 2018 Derivace základních funkcí Tečna a normála Tečna ke grafu funkce f v bodě dotyku T = [x 0, f (x 0 )]: y f (x 0 ) = f (x 0 )(x x 0 ) Normála: y
Bardziej szczegółowoGeometrická nelinearita: úvod
Geometrická nelinearita: úvod Opakování: stabilita prutů Eulerovo řešení s využitím teorie 2. řádu) Stabilita prutů Ritzovou metodou Stabilita tenkých desek 1 Geometrická nelinearita Velké deformace průhyby,
Bardziej szczegółowowykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,
, Programowanie, uzupełnienie notatek: dr Jerzy Białkowski , 1 2 3 4 , Wczytywanie liczb , Wczytywanie liczb 1 #include 2 #include < s t d l i b. h> 3 4 int main ( ) { 5 int rozmiar, numer
Bardziej szczegółowoMATEMATIKA 3. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci
MATEMATIKA 3 Dana Černá http://www.fp.tul.cz/kmd/ Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci Osnova: Komplexní funkce - definice, posloupnosti, řady Vybrané komplexní funkce
Bardziej szczegółowoStruktury czyli rekordy w C/C++
Struktury czyli rekordy w C/C++ Wprowadzenie do programowania w języku C struktury. pola bitowe, unie Struktury (rekordy) są złożonymi zmiennymi, składającymi się z elementów różnych typów zwanych polami,
Bardziej szczegółowoKristýna Kuncová. Matematika B2
(3) Průběh funkce Kristýna Kuncová Matematika B2 Kristýna Kuncová (3) Průběh funkce 1 / 26 Monotonie (x 2 ) = 2x (sin x) = cos x Jak souvisí derivace funkce a fakt, zda je funkce rostoucí nebo klesající?
Bardziej szczegółowoNumerické metody minimalizace
Numerické metody minimalizace Než vám klesnou víčka - Stříbrnice 2011 12.2. 16.2.2011 Emu (Brkos 2011) Numerické metody minimalizace 12.2. 16.2.2011 1 / 19 Obsah 1 Úvod 2 Základní pojmy 3 Princip minimalizace
Bardziej szczegółowo1 Soustava lineárních rovnic
Soustavy lineárních rovnic Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Soustava lineárních rovnic 2 Řešitelnost soustavy lineárních rovnic 3 Gaussova eliminační metoda 4 Jordanova eliminační
Bardziej szczegółowoB0B99PRPA Procedurální programování
B0B99PRPA Procedurální programování Řidící struktury, výrazy Stanislav Vítek Katedra radioelektroniky Fakulta elektrotechnická České vysoké učení v Praze 1/48 Přehled témat Část 1 Řídicí struktury Kódovací
Bardziej szczegółowoInternet a zdroje. (Zdroje na Internetu) Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17.
Internet a zdroje (Zdroje na Internetu) Mgr. Petr Jakubec Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17. listopadu 12 26. listopadu 2010 (KFC-INTZ) Databáze, citování 26. listopadu 2010
Bardziej szczegółowoZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA PEDAGOGICKÁ Katedra matematiky. Dudek Martin. obor Matematická studia
ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA PEDAGOGICKÁ Katedra matematiky BAKALÁŘSKÁ PRÁCE Některé řadící algoritmy Dudek Martin obor Matematická studia Vedoucí práce: PhDr. Lukáš HONZÍK, Ph.D. Plzeň 2018
Bardziej szczegółowoWykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe
Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)
Bardziej szczegółowoVlastnosti. Příprava. Czech - 2 -
Obsah Vlastnosti... 2 Úvod... 2 Příprava... 2 Bezpečnostní opatření... 3 Obsah balení... 4 Informace o životním prostředí... 5 Tlačítka dálkového ovládání... 6 LCD TV a Ovládací tlačítka... 7 Přehled zapojení
Bardziej szczegółowoPARADIGMATA PROGRAMOVÁNÍ 1B
KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO PARADIGMATA PROGRAMOVÁNÍ 1B JAN KONEČNÝ, VILÉM VYCHODIL VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM
Bardziej szczegółowoTemat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Bardziej szczegółowoWstęp do programowania 1
Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short
Bardziej szczegółowoNÁVOD K POUŽITÍ KEZELÉSI KÉZIKÖNYV INSTRUKCJA OBSŁUGI NÁVOD NA POUŽÍVANIE. Česky. Magyar. Polski. Slovensky
CANON INC. 30-2 Shimomaruko 3-chome, Ohta-ku, Tokyo 146-8501, Japan Europe, Africa & Middle East CANON EUROPA N.V. PO Box 2262, 1180 EG Amstelveen, The Netherlands For your local Canon office, please refer
Bardziej szczegółowoObsah Atributová tabulka Atributové dotazy. GIS1-2. cvičení. ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie
ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie září 2010 prezentace 1 2 Obecně otevření atributové tabulky (vlastnosti vrstvy Open Attribute Table) řádky v tabulce jednotlivé záznamy (objekty)
Bardziej szczegółowoAutomatové modely. Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Automatové modely Stefan Ratschan Katedra číslicového návrhu Fakulta informačních technologíı České vysoké učení technické v Praze Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Stefan
Bardziej szczegółowoTVL 26925 LED NÁVOD K POUŽITÍ NÁVOD NA POUŽITIE
TVL 26925 LED NÁVOD K POUŽITÍ NÁVOD NA POUŽITIE BAREVNÝ TELEVIZNÍ PŘÍJÍMAČ S DÁLKOVÝM OVLÁDÁNÍM FAREBNÝ TELEVÍZNY PRIJÍMAČ S DIALKOVÝM OVLÁDÁNÍM TELEWIZOR KOLOROWY Z PILOTEM Obsah Vlastnosti... 2 Úvod...
Bardziej szczegółowoTypy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1
Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy
Bardziej szczegółowoWYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5
WYKŁAD 10 Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne
Bardziej szczegółowoTablice, funkcje - wprowadzenie
Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład
Bardziej szczegółowoTVL 22800 UMP2 NÁVOD K POUŽITÍ NÁVOD NA POUŽITIE
TVL 22800 UMP2 NÁVOD K POUŽITÍ NÁVOD NA POUŽITIE 50193148 BAREVNÝ TELEVIZNÍ PŘÍJÍMAČ S DÁLKOVÝM OVLÁDÁNÍM FAREBNÝ TELEVÍZNY PRIJÍMAČ S DIALKOVÝM OVLÁDÁNÍM TELEWIZOR KOLOROWY Z PILOTEM Obsah Obsah balení...
Bardziej szczegółowoFunkcja (podprogram) void
Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji
Bardziej szczegółowoWskaźniki w C. Anna Gogolińska
Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik
Bardziej szczegółowopodle přednášky doc. Eduarda Fuchse 16. prosince 2010
Jak souvisí plochá dráha a konečná geometrie? L ubomíra Balková podle přednášky doc. Eduarda Fuchse Trendy současné matematiky 16. prosince 2010 (FJFI ČVUT v Praze) Konečná geometrie 16. prosince 2010
Bardziej szczegółowoProgramowanie Proceduralne
Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami
Bardziej szczegółowoWskaźniki. Programowanie Proceduralne 1
Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres
Bardziej szczegółowoWykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik
Wykład X Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2016 c Copyright 2016 Janusz Słupik Drzewa binarne Drzewa binarne Drzewo binarne - to drzewo (graf spójny bez cykli) z korzeniem (wyróżnionym
Bardziej szczegółowoIJC Jazyk C. Petr Peringer peringer AT fit.vutbr.cz. (Verze: ) Božetěchova 2, Brno. Úvod ISO C libc C99 11 Debug C++ Link Opt...
Úvod ISO C libc C99 11 Debug C++ Link Opt... IJC Jazyk C 1/271 IJC Jazyk C Petr Peringer peringer AT fit.vutbr.cz Vysoké učení technické v Brně Fakulta informačních technologií, Božetěchova 2, 612 66 Brno
Bardziej szczegółowoULS4805FE. Návod k použití Návod na použitie Instrukcja obsługi Instruction Manual Használatı utasítás. Licensed by Hyundai Corporation, Korea
ULS4805FE Návod k použití Návod na použitie Instrukcja obsługi Instruction Manual Használatı utasítás Licensed by Hyundai Corporation, Korea Obsah Bezpečnostní informace...2 Označení na produktu...2 Informace
Bardziej szczegółowoB0B99PRPA Procedurální programování. Stanislav Vítek
3. Základní řidící struktury B0B99PRPA Procedurální programování Stanislav Vítek Katedra radioelektroniky Fakulta elektrotechnická České vysoké učení v Praze 1/40 Přehled témat Y Část 1 Programování v
Bardziej szczegółowoggplot2 Efektní vizualizace dat v prostředí jazyka R Martin Golasowski 8. prosince 2016
ggplot2 Efektní vizualizace dat v prostředí jazyka R Martin Golasowski 8. prosince 2016 Jak vizualizovat? Požadované vlastnosti nástroje opakovatelnost, spolehlivost separace formy a obsahu flexibilita,
Bardziej szczegółowoB0B99PRPA Procedurální programování
B0B99PRPA Procedurální programování Základní řidící struktury Stanislav Vítek Katedra radioelektroniky Fakulta elektrotechnická České vysoké učení v Praze 1/40 Přehled témat Část 1 Programování v C Zdrojové
Bardziej szczegółowoPetr Křemen FEL ČVUT. Petr Křemen (FEL ČVUT) Vysvětlování modelovacích chyb 133 / 156
Vysvětlování modelovacích chyb Petr Křemen FEL ČVUT Petr Křemen (FEL ČVUT) Vysvětlování modelovacích chyb 133 / 156 Co nás čeká 1 Konjunktivní dotazy 2 Vyhodnocování konjunktivních dotazů v jazyce ALC
Bardziej szczegółowoHL24285SMART. Návod k použití Návod na použitie Instrukcja obsługi Használatı utasítás. Licensed by Hyundai Corporation, Korea
HL24285SMART Návod k použití Návod na použitie Instrukcja obsługi Használatı utasítás Licensed by Hyundai Corporation, Korea Obsah Bezpečnostní opatření... 1 Informace o životním prostředí... 2 Zahrnuté
Bardziej szczegółowoDFT. verze:
Výpočet spektra signálu pomocí DFT kacmarp@fel.cvut.cz verze: 009093 Úvod Signály můžeme rozdělit na signály spojité v čase nebo diskrétní v čase. Další možné dělení je na signály periodické nebo signály
Bardziej szczegółowoPA152,Implementace databázových systémů 2 / 25
PA152 Implementace databázových systémů Pavel Rychlý pary@fi.muni.cz Laboratoř zpracování přirozeného jazyka http://www.fi.muni.cz/nlp/ 19. září 2008 PA152,Implementace databázových systémů 1 / 25 Technické
Bardziej szczegółowoCharakteristika jazyka C
Pravidla Literatura Úvod Pravidla Literatura Pravidla IJC Jazyk C Petr Peringer peringer AT fit.vutbr.cz Vysoké učení technické v Brně Fakulta informačních technologií, Božetěchova 2, 612 66 Brno (Verze:
Bardziej szczegółowoVybrané kapitoly z matematiky
Vybrané kapitoly z matematiky VŠB-TU Ostrava 2018-2019 Vybrané kapitoly z matematiky 2018-2019 1 / 11 Křivkový integrál Vybrané kapitoly z matematiky 2018-2019 2 / 11 Parametricky zadaná křivka v R 3 :
Bardziej szczegółowoRegister and win! www.kaercher.com
Register and win! www.kaercher.com A B A, B A B 2 6 A régi készülékek értékes újrahasznosítható anyagokat tartalmaznak, amelyeket tanácsos újra felhasználni. Szárazelemek, olaj és hasonló anyagok ne kerüljenek
Bardziej szczegółowoPetr Hasil. c Petr Hasil (MUNI) Nekonečné řady MA III (M3100) 1 / 187
Nekonečné řady Petr Hasil Přednáška z Matematické analýzy III c Petr Hasil (MUNI) Nekonečné řady MA III (M3100) 1 / 187 Obsah 1 Nekonečné číselné řady Základní pojmy Řady s nezápornými členy Řady s libovolnými
Bardziej szczegółowoUzupełnienie dot. przekazywania argumentów
Uzupełnienie dot. przekazywania argumentów #include #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct nowa x); reprezentant.k=17;
Bardziej szczegółowoProgramowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory
Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Pętla while Pętla while Pętla
Bardziej szczegółowoPliki. Informacje ogólne. Obsługa plików w języku C
Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych. Może posiadać określone atrybuty, a odwołanie do niego odbywa się poprzez nazwę. Każdy plik ma skończoną
Bardziej szczegółowoPodstawy programowania w języku C++
Podstawy programowania w języku C++ Część jedenasta Przetwarzanie plików amorficznych Konwencja języka C Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie
Bardziej szczegółowoNávod k použití BUBNOVÁ SUŠIČKA
Návod k použití BUBNOVÁ SUŠIČKA CZ Česky, 1 SK Slovenčina, 52 TCD 83B HU Magyar, 18 TR Türkçe, 69 PL Polski, 35 Při prvním zapnutí sušičky musíte zvolit preferovaný jazyk, viz str. 6 Obsah Důležité informace,
Bardziej szczegółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoRovnice proudění Slapový model
do oceánského proudění Obsah 1 2 3 Co způsobuje proudění v oceánech? vyrovnávání rozdílů v teplotě, salinitě, tlaku, ρ = ρ(p, T, S) vítr - wind stress F wind = ρ air C D AU 2 10 slapy produkují silné proudy,
Bardziej szczegółowo(2) Funkce. Kristýna Kuncová. Matematika B2. Kristýna Kuncová (2) Funkce 1 / 25
(2) Funkce Kristýna Kuncová Matematika B2 Kristýna Kuncová (2) Funkce 1 / 25 Sudá a lichá funkce Určete, které funkce jsou sudé a které liché: liché: A, D, E sudé: B Kristýna Kuncová (2) Funkce 2 / 25
Bardziej szczegółowoZwój Prawoskrętny. Vinutí Pravé
SPRĘŻYNY NACISKOWE TYP TLAČNÉ PRUŽINY Sprężyny naciskowe SPEC są wykonywane precyzyjnie i wydajnie. Stosowanie sprężyn SPEC wpływa na obniżkę kosztów z uwagi na oszczędność czasu wynikającą z braku potrzeby
Bardziej szczegółowo// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.
Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy
Bardziej szczegółowoObsah Před zahájením instalace a používání si prosím pečlivě přečtěte návod k použití.
Obsah Před zahájením instalace a používání si prosím pečlivě přečtěte návod k použití. Bezpečnostní informace...1 Začínáme...3 Upozornění, funkce a příslušenství...3 Vlastnosti...3 Ovládací tlačítka na
Bardziej szczegółowoLineární algebra - iterační metody
Lineární algebra - iterační metody Numerické metody 7. dubna 2018 FJFI ČVUT v Praze 1 Úvod Úvod Rozdělení Metody Zastavení SOR Programy 1 Úvod Úvod - LAR Mějme základní úlohu A x = b, (1) kde A R n,n je
Bardziej szczegółowoWykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim
Bardziej szczegółowonávod k použití instrukcja obsługi
návod k použití instrukcja obsługi Pračka Pralka EWF 106510 W 2 electrolux OBSAH Electrolux. Thinking of you. Více o nás naleznete na adrese www.electrolux.com Bezpečnostní informace 2 Popis spotřebiče
Bardziej szczegółowoMATEMATIKA 3 NUMERICKÉ METODY. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci
MATEMATIKA 3 NUMERICKÉ METODY Dana Černá http://kmd.fp.tul.cz Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci INFORMACE O PŘEDMĚTU Konzultační hodiny: ÚT 11:00-12:00, budova G,
Bardziej szczegółowoZápadočeská univerzita v Plzni Fakulta aplikovaných věd. Katedra matematiky. Semestrální práce - matematika a byznys
Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra matematiky Obor: Matematické inženýrství Optimální výrobní program Semestrální práce - matematika a byznys Vypracovala: Radka Zahradníková
Bardziej szczegółowoStruktury. Przykład W8_1
Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla
Bardziej szczegółowoDXDB 215 NÁVOD K POUŽITÍ NÁVOD NA POUŽITIE INSTRUKCJA OBSŁUGI USER MANUAL
DXDB 215 NÁVOD K POUŽITÍ NÁVOD NA POUŽITIE INSTRUKCJA OBSŁUGI USER MANUAL KOMBINOVANÝ PŘEHRÁVAČ DVD/DVB-T KOMBINOVANÝ PREHRÁVAČ DVD/DVB-T KOMBINOWANY ODTWARZACZ DVD/DVB-T DVD\DVB-T COMBO PLAYER Podpora
Bardziej szczegółowoLaplaceova transformace
Laplaceova transformace Modelování systémů a procesů (11MSP) Bohumil Kovář, Jan Přikryl, Miroslav Vlček Ústav aplikované matematiky ČVUT v Praze, Fakulta dopravní 5. přednáška 11MSP 219 verze: 219-3-17
Bardziej szczegółowoPříručka k rychlé instalaci: NWD2105. Základní informace. 1. Instalace softwaru
Příručka k rychlé instalaci: NWD2105 Základní informace NWD2105 je bezdrátový USB adaptér určený pro použití s počítačem. NWD2105 je kompatibilní s technologií WPS (Wi-Fi Protected Setup). A: LED kontrolka
Bardziej szczegółowoCo to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).
Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154
Bardziej szczegółowoCauchyova úloha pro obyčejnou diferenciální rovnici
Řešení ODR v MATLABu Přednáška 3 15. října 2018 Cauchyova úloha pro obyčejnou diferenciální rovnici y = f (x, y), y(x 0 ) = y 0 Víme, že v intervalu a, b existuje jediné řešení. (f (x, y) a f y jsou spojité
Bardziej szczegółowoObsah. Zobrazení na osmistěn. 1 Zobrazení sféry po částech - obecné vlastnosti 2 Zobrazení na pravidelný konvexní mnohostěn
Obsah 1 2 3 Použití Zobrazení rozsáhlého území, ale hodnoty zkreslení nesmí přesáhnout určitou hodnotu Rozdělením území na menší části a ty pak zobrazíme zvlášť Nevýhodou jsou však samostatné souřadnicové
Bardziej szczegółowonowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof
nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof 1 adres zmiennej Do pobrania adresu zmiennej używa się jednoargumentowego operatora & (uwaga & może mieć także znaczenie dwuargumentowego
Bardziej szczegółowoTablice w argumentach funkcji. Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku
Tablice w argumentach funkcji Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku Przykład: char str[] = abcdef ;... fun(str); // argument faktyczny to id
Bardziej szczegółowoPodstawy programowania w języku C++
Podstawy programowania w języku C++ Część trzynasta Tablice struktur, pliki struktur Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści
Bardziej szczegółowofunkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)
Podstawy programowania (język C) funkcje rekurencyjne Wykład 12. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Funkcje rekurencyjne (1) W języku C funkcja moŝe wywoływać samą siebie.
Bardziej szczegółowoJęzyki i metodyka programowania. Wskaźniki i tablice.
Wskaźniki i tablice. Zmienna1 Zmienna2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana
Bardziej szczegółowoWskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17
Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8
Bardziej szczegółowokontaktní modely (Winklerův, Pasternakův)
TÉMA 7: Pružný poloprostor, modely podloží pružný poloprostor základní předpoklady pružný poloprostor Boussinesqueovo řešení kontaktní modely (Winklerův, Pasternakův) 1 Pružný poloprostor (1) vychází z
Bardziej szczegółowoPojem množiny nedefinujeme, pouze připomínáme, že množina je. Nejprve shrneme pojmy a fakta, které znáte ze střední školy.
1 Kapitola 1 Množiny 1.1 Základní množinové pojmy Pojem množiny nedefinujeme, pouze připomínáme, že množina je souhrn, nebo soubor navzájem rozlišitelných objektů, kterým říkáme prvky. Pro známé množiny
Bardziej szczegółowoParadoxy geometrické pravděpodobnosti
Katedra aplikované matematiky 1. června 2009 Úvod Cíle práce : Analýza Bertrandova paradoxu. Tvorba simulačního softwaru. Osnova 1 2 3 4 Osnova 1 2 3 4 Osnova 1 2 3 4 Osnova 1 2 3 4 V rovině je zadán kruh
Bardziej szczegółowoNávod k použití Instrukcja obsługi Návod na používanie
CS Návod k použití 2 Chladnička s mrazničkou PL Instrukcja obsługi 21 Chłodziarko-zamrażarka SK Návod na používanie 42 Chladnička s mrazničkou SCZ71800F1 2 OBSAH 1. BEZPEČNOSTNÍ INFORMACE... 3 2. BEZPEČNOSTNÍ
Bardziej szczegółowoProgramowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.
Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411b Plan wykładu Operacje wejścia-wyjścia Dostęp do plików Struktury
Bardziej szczegółowoShrnutí. Vladimír Brablec
Řešení problému SAT s využitím lokálního prohledávání Vladimír Brablec Seminář z umělé inteligence II, 2010 Motivace Obsah referátů Články, podle nichž je prezentace vytvořena 1 Selman B., Kautz H., Cohen
Bardziej szczegółowo