Část I. Rekurze. Část 1 Rekurze. Rekurze. Část 2 Příklady. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
|
|
- Kamil Valenta
- před 8 lety
- Počet zobrazení:
Transkript
1 Část Rekurze Rekurze Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 6 A0B6PR Programování Faktoriál Obrácený výpis Karel Hanojské věže Rekurze Fibonacciho posloupnost Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Část Příklady Eratosthenovo síto Rozklad na prvočinitele Část I Rekurze Řazení Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9
2 Výpočet faktoriálu Příklad výpis posloupnosti / Iterace n! = n(n )(n )... int factoriali(int n) { int f = ; for(; n > ; --n) { f *= n; return f; Rekurze n! = pro n n! = n(n )! pro n > int factorialr(int n) { int f = ; if (n > ) { f = n * factorialr(n-); return f; lec05/demofactorial.java Připomínka Vytvořte program, který přečte posloupnost čísel a vypíše ji v opačném pořadí Rozklad problému: Zavedeme abstraktní příkaz: obrať posloupnost Příkaz rozložíme do tří kroků:. Přečti číslo číslo uložíme pro pozdější obrácený výpis. Pokud není detekován konec posloupnost obrať posloupnost pokračujeme ve čtení čísel. Vypiš číslo vypíšeme uložené číslo Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 6 / 9 Příklad výpis posloupnosti / void reverse() { int v = scan.nextint(); if (scan.hasnext()) { reverse(); 5 6 System.out.printf("%d ", v); public void start() { 0 System.err.println("Enter a sequence of numbers ( use ctr+d for the end of the the sequence"); reverse(); System.out.println(""); //end of line lec06/demorevertsequence.java Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 9 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 8 / 9 Příklad výpis posloupnosti / lec06/demorevertsequence.java Vytvoření posloupností./generate_numbers.sh tr \n cat > numbers.txt javac DemoRevertSequence.java java DemoRevertSequence < numbers.txt >/dev/null > numbersr.txt java DemoRevertSequence <numbers-r.txt >/dev/null > numbers -rr.txt Příkaz pro výpis obsahu souborů for i in numbers.txt numbers-r.txt numbers-rr.txt; do echo "$i"; cat $i; echo ""; done Výpis obsahu souborů numbers.txt numbers-r.txt numbers-rr.txt Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 0 / 9
3 Robot Karel hledání beeperu Robot Karel má za úkol najít beeper v bludišti a vrátit se s ním zpět na výchozí pozici Karel se pohybuje v mřížkovém ortogonálním světě Karel umí: jít rovně o jeden krok otočit se doleva o 90 vzít / položit beeper vypnout se Karel umí zjistit, zda-li: je před ním zeď je na políčku, na kterém stojí, beeper Robot Karel Iterační řešení / Návrh řešení. Jdi podél zdi (po pravé straně) dokud není na políčku beeper a počítej počet kroků;. Seber beeper ;. Otoč se a jdi podél zdi (po levé straně) a udělej stejný počet kroků jako při hledání beeperu ;. Polož beeper a vypni se. Abstraktní příkazy pro nalezení beeperu sledování zdi na pravé straně: Otoč se doprava: turnright Zjisti, zda-li je na pravé straně zeď: iswallonright Jdi podél pravé zdi: gobyrightwall Analogické abstraktní příkazy pro pohyb podél zdi na levé straně: iswallonleft a gobyleftwall Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Robot Karel Iterační řešení / void turnright() { for (int i = 0; i < ; i++) { turnleft(); boolean iswallonright() { 8 turnright(); 9 boolean out = isinfrontofwall(); 0 turnleft(); return out; void gobyrightwall() { 5 while (!isonbeeper()) { 6 if (!wallonright()) { 7 turnright(); 8 9 while (isinfrontofwall()) { 0 turnleft(); step(); Analogicky pro zeď po levé straně Robot Karel Iterační řešení / Počet kroků je inkrementován v proceduře step Při návratu podél levé zdi Karel ujde stejný počet kroků public void execute() { gobyright(); pickbeeper(); turnaround(); 5 6 if (stepstaken > 0) { 7 gobyleft(stepstaken); putbeeper(); turnoff(); Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 5 / 9
4 Robot Karel Rekurzivní řešení / Řešení rekurzí založíme na opakovaném volání funkce, která posune robot pouze o jeden krok vpřed a následně jej vrátí zpět ve funkci go:. Pokud jsi na beeperu seber jej a otoč o 80 a ukonči hledání. Zapamatuj si svou orientaci a udělej jeden krok podél pravé zdi. go (opakuj hledání o jeden krok). Udělej jeden krok zpět (vrať se o jeden krok zpět a natoč se do původního směru) Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 6 / 9 Robot Karel Rekurzivní řešení / Hlavní procedura obsahuje pouze volání funkce go, která vrací robot na výchozí políčko void execute() { go(); putbeeper(); turnoff(); 5 Pro spuštění využijeme knihovnu KarelJRobot.jar a modifikovaný svět maze.klwd javac -cp lib/kareljrobot.jar DemoKarel.java java -cp lib/kareljrobot.jar:. DemoKarel Robot se při zpáteční cestě vrací rychleji, protože již explicitně nekontroluje, zda-li je zeď na levé straně. Uvedený demonstrační program není plným řešení úlohy ze. cvičení lec06/demokarel.java Robot Karel Rekurzivní řešení / void go() { if (isonbeeper()) { pickbeeper(); 5 turnaround(); //turn back return; 6 7 int numberturnright = 0; 8 if (!iswallonright()) { 9 0 turnright(); numberturnright++; while (isinfrontofwall()) { 5 turnleft(); numberturnright--; 6 7 move(); //move forward 8 go(); 9 move(); //move backward 0 numberturnright = (numberturnright + ) % ; for (int i = 0; i < numberturnright; ++i) { turnleft(); //revert the turns 5 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 7 / 9 Příklad Hanojské věže Přemístit disky na druhou jehlu s použitím třetí (pomocné) jehly za dodržení pravidel:. V každém kroku můžeme přemístit pouze jeden disk a to vždy z jehly na jehlu Disky nelze odkládat mimo jehly. Položit větší disk na menší není dovoleno Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 8 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 0 / 9
5 Hanojské věže disk Hanojské věže disk Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Hanojské věže disk Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Hanojské věže disky Hotovo Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9
6 Hanojské věže disky Hanojské věže disky Přesunutý disk z jehly na jehlu. Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 5 / 9 Hanojské věže disky Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 6 / 9 Hanojské věže disky Hotovo Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 7 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 8 / 9
7 Hanojské věže disky Hanojské věže disky Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 9 / 9 Hanojské věže disky Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 0 / 9 Hanojské věže disky Přesunutý disk z jehly na jehlu. Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9
8 Hanojské věže disky Hanojské věže disky Přesunutý disk z jehly na jehlu. Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Hanojské věže disky Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Hanojské věže disky Přesunutý disk z jehly na jehlu. Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 5 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 6 / 9
9 Hanojské věže disky Hanojské věže disky Hotovo Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 7 / 9 Hanojské věže disky Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 8 / 9 Hanojské věže disky Přesunutý disk z jehly na jehlu. Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 9 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 0 / 9
10 Hanojské věže disky Hanojské věže disky Přesunutý disk z jehly na jehlu. Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Hanojské věže disky Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Hanojské věže disky Přesunutý disk z jehly na jehlu. Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze / 9
11 Hanojské věže disky Hanojské věže disky Přesunutý disk z jehly na jehlu. Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 5 / 9 Hanojské věže disky Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 6 / 9 Hanojské věže disky Přesunutý disk z jehly na jehlu. Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 7 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 8 / 9
12 Hanojské věže disky Hanojské věže disky Přesunutý disk z jehly na jehlu. Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 9 / 9 Hanojské věže disky Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 50 / 9 Hanojské věže disky Přesunutý disk z jehly na jehlu. Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 5 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 5 / 9
13 Hanojské věže disky Hanojské věže disky Hotovo Přesunutý disk z jehly na jehlu. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 5 / 9 Hanojské věže 5 disků Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 5 / 9 Návrh řešení 5? 5 Zavedeme abstraktní příkaz movetower(n,,, ) realizující přesun n disků z jehly na jehlu s použitím jehly. Pro n > 0 můžeme příkaz rozložit na tři jednodušší příkazy. movetower(n-,,, ) přesun n disků z jehly na jehlu. přenes disk z jehly na jehlu přesun největšího disku na cílovou pozici abstraktní příkaz. movetower(n-,,, ) přesun n disků na cílovou pozici Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 55 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 56 / 9
14 Příklad řešení void movetower(int n, int from, int to, int tmp) { if (n > 0) { movetower(n -, from, tmp, to); //move to tmp System.out.println("Move disc from " + from + " to " + to); 5 movetower(n -, tmp, to, from); //move from tmp void start() { 0 int numberofdiscs = 5; movetower(numberofdiscs,,, ); lec06/demotowersofhanoi.java Příklad výpisu lec06/demotowersofhanoi.java java DemoTowersOfHanoi Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to java DemoTowersOfHanoi Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Move disc from to Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 57 / 9 Rekurzivní algoritmy Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 58 / 9 Rekurzivní vs iteračními algoritmy Rekurzivní funkce jsou přímou realizací rekurzivních algoritmů Rekurzivní algoritmus předepisuje výpočet shora dolů v závislosti na velikosti vstupních dat Pro nejmenší (nejjednodušší) vstup je výpočet předepsán přímo Pro obecný vstup je výpočet předepsán s využitím téhož algoritmu pro menší vstup Výhodou rekurzivních funkcí je jednoduchost a přehlednost Nevýhodou rekurzivních algoritmů může být časová náročnost způsobená např. zbytečným opakováním výpočtu Řadu rekurzivních algoritmů lze nahradit iteračními, které počítají výsledek zdola nahoru, tj. od menších (jednodušších) vstupních dat k větším (složitějším). Pokud algoritmus výpočtu zdola nahoru nenajdeme, např. při řešení problému Hanojských věží, lze rekurzivitu odstranit pomocí zásobníku. Např. zásobník využijeme pro uložení stavu řešení problému. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 60 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 6 / 9
15 Rekurze Elegance vs obtížnost rekurze To iterate is human, to recurse divine. L. Peter Deutsch I ve often heard people describe understanding recursion as one of those got it moments, when the universe opened its secret stores of knowledge and gifted the mind of a burgeoning developer with a very powerful tool. For me, recursion has always been hard. Each time I m able to peer more into its murky depths, I am humbled to see how little I feel like I really appreciate and understand its power and elegance. Rick Winfrey, 0 to-iterate-is-human-to-recurse-divine Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 6 / 9 Fibonacciho posloupnost,,,, 5, 8,,,, 55,... F n = F n + F n pro F =, F = Nebo 0,,,,, 5,... Nebo F = 0, F = Nekonečná posloupnost přirozených čísel, kde každé číslo je součtem dvou předchozích. Limita poměru dvou následujících čísel Fibonacciho posloupnosti je rovna zlatému řezu. Sectio aurea ideální poměr mezi různými délkami Rozdělení úsečky na dvě části tak, že poměr větší části ku menší je stejný jako poměr celé úsečky k větší části ϕ = + 5, Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 6 / 9 Fibonacciho posloupnost historie Indičtí matematici (50 nebo 00 BC) Leonardo Pisano (75 50) popis růstu populace králíků italský matematik známý také jako Fibonacci F n velikost populace po n měsících za předpokladu První měsíc se narodí jediný pár. Narozené páry jsou produktivní od. měsíce svého života. Každý měsíc zplodí každý produktivní pár jeden další pár. Králíci nikdy neumírají, nejsou nemocní atd. Henry E. Dudeney (857 90) popis populace krav Jestliže každá kráva vyprodukuje své první tele (jalovici) za rok a poté každý rok jednu další jalovici, kolik budete mít krav za let, jestliže žádná nezemře a na počátku budete mít jednu krávu? Po let je k dispozici jeden či více býků Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 65 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 66 / 9
16 Fibonacciho posloupnost rekurzivně Platí: f 0 = f = f n = f n + f n, pro n > int fibonacci(int n) { return n <? : fibonacci(n - ) + fibonacci(n - ); 5 Zápis je elegantní, jak je však takový výpočet efektivní? Fibonacciho posloupnost příklad / Počet operací při výpočtu Fibonacciho čísla n long counter; long fibonnacir(int n) { counter++; 5 return n <? : fibonnacir(n-) + fibonnacir(n-); long fibonnacii(int n) { 9 long fibm = l; 0 long fibm = l; long fib = l; for (int i = ; i <= n; ++i) { fibm = fibm; fibm = fib; 5 fib = fibm + fibm; 6 counter += ; 7 8 return fib; 9 lec06/demofibonacci.java Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 67 / 9 Fibonacciho posloupnost rekurzivně / public void start(string[] args) { int n = args.length > 0? Integer.parseInt(args[0]) : 5; counter = 0; 5 long fibr = fibonnacir(n); long counter = counter; 6 7 counter = 0; 8 9 long fibi = fibonnacii(n); long countei = counter; 0 System.out.println("Fibonacci number recursive: " + fibr); System.out.println("Fibonacci number iteration: " + fibi); System.out.println("Counter recursive: " + counter); System.out.println("Counter recursive: " + countei); 5 javac DemoFibonacci.java java DemoFibonacci 0 Fibonacci number recursive: 669 Fibonacci number iteration: 669 Counter recursive: 6957 Counter iteration: 8 lec06/demofibonacci.java Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 69 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 68 / 9 Fibonacciho posloupnost rekurzivně vs iteračně Rekurzivní výpočet Složitost roste exponenciálně s n n Iterační algoritmus Počet operací je proporcionální n n Skutečný počet operací závisí na konkrétní implementaci, programovacím jazyku, překladači a hardware Složitost algoritmů proto vyjadřujeme asymptoticky jako funkci velikosti vstupu Například v tzv. Big O notaci rekurzivní algoritmus výpočtu má složitost O( n ) iterační algoritmus výpočtu má složitost O(n) Efektivní algoritmy mají polynomiální složitost Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 70 / 9
17 Část II Příklady Pole reprezentující množinu prvočísel Vypsat všechna prvočísla menší nebo rovna zadané hodnotě max Algoritmus:. Vytvoříme množinu obsahující všechna přirozená čísla od do max. Z množiny vypustíme násobky čísla. Najdeme nejbližší číslo k tomu, jehož násobky jsme v předchozím kroku vypustili, a vypustíme všechny násobky tohoto čísla. Opakujeme krok, dokud číslo, jehož násobky jsme vypustili, není větší než odmocnina z max 5. Čísla, která v množině zůstanou, jsou hledaná prvočísla Pro reprezentaci množiny čísel použijeme pole prvků typu boolean, kde prvek pole sieve[i] udává, zda-li je celé číslo i v množině (true) nebo není (false), tj. zda-li je nebo není prvočíslem Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 7 / 9 Eratosthenovo síto / boolean[] createsieve(int max) { boolean[] sieve = new boolean[max + ]; for (int i = ; i <= max; ++i) { sieve[i] = true; 5 6 int p = ; 7 int pmax = (int)math.sqrt(max); 8 do { 9 for(int i = p + p; i <= max; i += p) { 0 sieve[i] = false; do { p++; while (!sieve[p]); 5 while (p <= pmax); 6 return sieve; 7 lec06/demosieveoferatosthenes.java Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 7 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 7 / 9 Eratosthenovo síto / void print(boolean[] sieve) { for(int i = ; i < sieve.length; ++i) { if (sieve[i]) { System.out.print(i + " "); void start(int max) { 0 boolean[] sieve = createsieve(max); System.out.print("Prime numbers from to " + max + ": "); print(sieve); System.out.println(""); javac DemoSieveOfEratosthenes.java java DemoSieveOfEratosthenes Prime numbers from to 00: java DemoSieveOfEratosthenes 0 Prime numbers from to 0: lec06/demosieveoferatosthenes.java Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 75 / 9
18 Rozklad na prvočinitele / Rozklad přirozeného čísla n na součin prvočísel Řešení: Dělit, pak, pak 5 a dalšími prvočísly, až n Každé dělení beze zbytku dodá jednoho prvočinitele Příklad: 60 / 0 / 5 / 5 / 5 60 má prvočinitele,,, 5 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 77 / 9 Řazení pole Problém seřadit množinu prvků podle klíče (celého čísla) Posloupnost prvků q = a,..., a n Délka posloupnosti q je q = n Posloupnost q je seřazená, právě tehdy když q < q klíč(a ) klíč(a ) a posloupnost a,... neobsahuje prvek a. Řazení polí je řazením na místě Pro jednoduchost v příkladech třídíme jen celá čísla, prakticky však zpravidla třídíme klíče datových položek. Rozklad na prvočinitele / Iterační algoritmus void getprimesi(int x) { int d = ; while (d < x) { while (d < x && x % d!= 0) { d++; System.out.print(d + " "); x = x / d; void start(int n) { Rekurzivní algoritmus System.out.println("Decomposition of " System.out.print("Iterative algorithm: "); getprimesi(n); System.out.println(""); System.out.print("Recursive algorithm: "); getprimesr(n, ); System.out.println(""); void getprimesr(int x, int d) { if (d < x) { while (d < x && x % d!= 0) { d++; System.out.print(d + " "); getprimesr(x / d, d); + n + " to primies"); lec06/demoprimes.java Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 78 / 9 Třídění přímým vkládáním Insert Sort / Příklad - Třídění přímým vkládáním Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 80 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 8 / 9
19 Třídění přímým vkládáním Insert Sort / for i, n vlož a i na patřičné místo mezi a,..., a i Příklad - Algoritmus void insertsort(int[] array) { int x; int j; for (int i = ; i < array.length; i++) { 5 6 x = array[i]; j = i - ; 7 while (j >= 0 && x < array[j]) { 8 9 array[j + ] = array[j]; j--; 0 array[j + ] = x; Řazení přímým výběr Select Sort / for i, n { najdi index k nejmenšího prvku v a i,..., a n, a k = min a i,... a n, zaměň prvky a i, a k Třídění binárním vkládáním - vkládání provádíme do již zatříděného pole a,..., a i. Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 8 / 9 Řazení přímým výběr Select Sort / Příklad - Řazení přímým výběrem Select Sort Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 8 / 9 Řazení přímým výběr Select Sort / Příklad implementace void selectsort(int[] array) { for (int i = 0; i < array.length-; ++i) { int minidx = i; for (int j = i + ; j < array.length; ++j) { 5 if (array[minidx] > array[j]) { 6 minidx = j; swap(minidx, i, array); 0 Zde pro jednoduchost třídíme jen celá čísla, prakticky však zpravidla třídíme klíče datových položek. Složitost O(n ), kde n je počet položek Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 8 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 85 / 9
20 Řazení rozdělováním Quick Sort Nejvýznamnější výměny jsou ty na velké vzdálenosti. Pole rozdělíme nějakým prvkem x (pivot). Nalevo od prvku x umístíme všechny prvky menší než x. Napravo od prvku x umístíme všechny prvky větší než x. Rozdělení opakujeme pro pole tvořené prvky nalevo od x a pro pole napravo od x. Postup opakujeme dokud nerozdělujeme jednoprvkové úseky. Strategie rozděl a panuj. Tuto strategii můžeme implementovat rekurzí Rozdělení pole Příklad - rozdělení Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 86 / 9 Řazení rozdělením Quick Sort / void qsortpart(int l, int h, int[] array) { int i = l; //lower index int j = h; //higher index int pivot = array[l + (h - l) / ]; 5 while (i <= j) { 6 while(array[i] < pivot) { 7 i++; 8 9 while(array[j] > pivot) { 0 j--; if (i <= j) { swap(i++, j--, array); 5 6 if (l < j) { 7 qsortpart(l, j, array); 8 9 if (i < h) { 0 qsortpart(i, h, array); Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 88 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 87 / 9 Řazení rozdělením Quick Sort / void quicksort(int[] array) { qsortpart(0, array.length-, array); Složitost pro nejnepříznivější případ je O(n ) Vhodně zvolený pivot výrazně snižuje časovou náročnost Randomizovaná varianta (vstupní pole permutováno a pivot je volen náhodně) O(nlog n) Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 89 / 9
21 Řazení Select Sort vs Quick Sort Příklad spuštění Select Sort vs Quick Sort javac DemoSort.java && java DemoSort 0 Values: Values Select Sort: Values Quick Sort: java DemoSort 0000 Select Sort required time 5 ms Quick Sort required time 0 ms lec06/demosort.java Jednoduchý test výpočetní náročnosti můžeme udělat porovnáním výpočetních časů Např. využitím System.currentTimeMillis Skutečné výpočetní nároky se mohou lišit podle vstupních dat Zkuste zjistit počet operací pro vstupní pole setříděné sestupně Asymptotická složitost udává očekávané výpočetní nároky pro velké vstupy Reálné testování v tzv. mikro benchmarks může být zvláště v Javě zavádějící (HotSpot) Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 90 / 9 Diskutovaná témata Zápis algoritmu Quick Sort Implementace Quick Sort v programovacím jazyku Haskell qsort [] = [] qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs) Pro zajímavost Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 9 / 9 Diskutovaná témata Diskutovaná témata Shrnutí přednášky Rekurze a rekurzivní algoritmy Příklady rekurzivních algoritmů: Výpočet faktoriálu Výpis posloupnosti čísel Hanojské věže Fibonacciho posloupnost Reprezentace množiny polem Příklad implementace v algoritmu Eratosthenovo síto Rozklad na prvočinitele Příklad rekurze v řazení Příště: Objektově orientované programování v Javě Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 9 / 9 Jan Faigl, 0 A0B6PR Přednáška 6: Rekurze 9 / 9
Rekurze. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 6 A0B36PR1 Programování 1
Rekurze Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 6 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 6: Rekurze 1 / 90 Část 1 Rekurze
VíceRekurze. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 6 A0B36PR1 Programování 1
Rekurze Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 6 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 6: Rekurze 1 / 90 Část 1 Rekurze
Více8. Rekurze. doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 8 1 Základy algoritmizace 8. Rekurze doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Jiří Vokřínek,
Více5. přednáška - Rozklad problému na podproblémy
5. přednáška - Rozklad problému na podproblémy Obsah přednášky: Rozklad problému na podproblémy. Rekurze. Algoritmizace (Y36ALG), Šumperk - 5. přednáška 1 Rozklad problému na podproblémy Postupný návrh
VíceRozklad problému na podproblémy
Rozklad problému na podproblémy Postupný návrh programu rozkladem problému na podproblémy zadaný problém rozložíme na podproblémy pro řešení podproblémů zavedeme abstraktní příkazy s pomocí abstraktních
Více2.4.11 Nerovnice s absolutní hodnotou
.. Nerovnice s absolutní hodnotou Předpoklady: 06, 09, 0 Pedagogická poznámka: Hlavním záměrem hodiny je, aby si studenti uvědomili, že se neučí nic nového. Pouze používají věci, které dávno znají, na
Více2.8.9 Parametrické rovnice a nerovnice s absolutní hodnotou
.8.9 Parametrické rovnice a nerovnice s absolutní hodnotou Předpoklady: 0,, 806 Pedagogická poznámka: Opět si napíšeme na začátku hodiny na tabuli jednotlivé kroky postupu při řešení rovnic (nerovnic)
VíceStandardní knihovny C. Rekurze.
Standardní knihovny C. Rekurze. Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 08 B0B36PRP Procedurální programování Jan Faigl, 2018 B0B36PRP Přednáška
VíceRozklad problému na podproblémy, rekurze
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Rozklad problému na podproblémy, rekurze BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních
VíceRozklad problému na podproblémy, rekurze
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Rozklad problému
VíceČást I. Část 1 Standardní knihovny, čtení/zápis ze souboru. Přehled témat. Standardní knihovny C. Rekurze. Standardní knihovny
Přehled témat Standardní knihovny C. Rekurze. Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 08 B0B36PRP Procedurální programování Část 1 Standardní
VíceStandardní knihovny C. Rekurze.
Standardní knihovny C. Rekurze. Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 08 B0B36PRP Procedurální programování Jan Faigl, 2017 B0B36PRP Přednáška
VíceKvadratické rovnice pro učební obory
Variace 1 Kvadratické rovnice pro učební obory Autor: Mgr. Jaromír JUŘEK Kopírování a jkaékoliv další využití výukového materiálu je povoleno pouze s uvedením odkazu na www.jarjurek.cz. 1. Kvadratické
Více5 Rekurze a zásobník. Rekurzivní volání metody
5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení
Více{ } 9.1.9 Kombinace II. Předpoklady: 9108. =. Vypiš všechny dvoučlenné kombinace sestavené z těchto pěti prvků. Urči počet kombinací pomocí vzorce.
9.1.9 Kombinace II Předpoklady: 9108 Př. 1: Je dána pěti prvková množina: M { a; b; c; d; e} =. Vypiš všechny dvoučlenné kombinace sestavené z těchto pěti prvků. Urči počet kombinací pomocí vzorce. Vypisujeme
VíceKvantové počítače algoritmy (RSA a faktorizace čísla) http://marble.matfyz.cz
Kvantové počítače algoritmy (RSA a faktorizace čísla) http://marble.matfyz.cz 14. 4. 2004 1. Algoritmus RSA Asymetrické šifrování. Existuje dvojice tajného a veřejného klíče, takže není nutné předat klíč
Více2.7.2 Mocninné funkce se záporným celým mocnitelem
.7. Mocninné funkce se záporným celým mocnitelem Předpoklady: 70 Mocninné funkce se záporným celým mocnitelem: znamená? 3 y = = = = 3 y y y 3 = ; = ; = ;.... Co to Pedagogická poznámka: Nechávám studenty,
VíceČást 1 Standardní knihovny, čtení/zápis ze/do souboru
C.. Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 08 B0B6PRP Procedurální programování Přehled témat Část, čtení/zápis ze/do souboru Práce se soubory
VíceProgramování 4. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015
Programování 4. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Stromy Reprezentace Binární vyhledávací
Více1. Programování, typy programovacích jazyků, historie.
1. Programování, typy programovacích jazyků, historie. třída Console metody Write, WriteLina, ReadLine, ResetColor vlastnosti ForegroundColor, Backgroundcolor třída Form objekt Label vlastnost Text význam
VíceA4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.
A4B33ALG 2010/05 ALG 07 Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated Quicksort Stabilita řazení 1 Selection sort Neseřazeno Seřazeno Start T O U B J R M A K D Z E min
VíceČíselné soustavy Ing. M. Kotlíková, Ing. A. Netrvalová Strana 1 (celkem 7) Číselné soustavy
Číselné soustavy Ing. M. Kotlíková, Ing. A. Netrvalová Strana (celkem 7) Polyadické - zobrazené mnohočlenem desítková soustava 3 2 532 = 5 + 3 + 2 + Číselné soustavy Číslice tvořící zápis čísla jsou vlastně
Více( ) 2.4.4 Kreslení grafů funkcí metodou dělení definičního oboru I. Předpoklady: 2401, 2208
.. Kreslení grafů funkcí metodou dělení definičního oboru I Předpoklady: 01, 08 Opakování: Pokud jsme při řešení nerovnic potřebovali vynásobit nerovnici výrazem, nemohli jsme postupovat pro všechna čísla
VíceFunkce a procedury. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 5 A0B36PR1 Programování 1
Funkce a procedury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 5 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 5: Funkce a procedury
VíceKvadratické rovnice pro studijní obory
Variace 1 Kvadratické rovnice pro studijní obory Autor: Mgr. Jaromír JUŘEK Kopírování a jakékoliv další využití výukového materiálu je povoleno pouze s uvedením odkazu na www.jarjurek.cz. 1. Kvadratické
VíceDopravní úloha. Jiří Neubauer. Katedra ekonometrie FEM UO Brno
Přednáška č. 9 Katedra ekonometrie FEM UO Brno Distribuční úlohy Budeme se zabývat 2 typy distribučních úloh dopravní úloha přiřazovací problém Dopravní úloha V dopravním problému se v typickém případě
Více3.2.4 Podobnost trojúhelníků II
3..4 odobnost trojúhelníků II ředpoklady: 33 ř. 1: Na obrázku jsou nakresleny podobné trojúhelníky. Zapiš jejich podobnost (aby bylo zřejmé, který vrchol prvního trojúhelníku odpovídá vrcholu druhého trojúhelníku).
VíceČást 1 Funkce, lokální proměnné a přidělování paměti. Funkce a procedury. Část 2 Cykly a řízení jejich průchodu. Část 3 Příklady
Část 1 Funkce, lokální proměnné a přidělování paměti Funkce a procedury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 5 A0B36PR1 Programování 1 Jména
VíceParadigmata programování 1
Paradigmata programování 1 Akumulace Vilém Vychodil Katedra informatiky, PřF, UP Olomouc Přednáška 7 V. Vychodil (KI, UP Olomouc) Akumulace Přednáška 7 1 / 33 Přednáška 7: Přehled 1 Akumulace pomocí foldr
VíceAlgoritmizace a programování
Algoritmizace a programování Procedurální programování Rekurze Jazyk C České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Procedurální programování - zásady Postupný návrh programu
VíceHledání k-tého nejmenšího prvku
ALG 14 Hledání k-tého nejmenšího prvku Randomized select CLRS varianta Partition v Quicksortu 0 Hledání k-tého nejmenšího prvku 1. 2. 3. Seřaď seznam/pole a vyber k-tý nejmenší, složitost (N*log(N)). Nevýhodou
Více3. Ve zbylé množině hledat prvky, které ve srovnání nikdy nejsou napravo (nevedou do nich šipky). Dát do třetí
DMA Přednáška Speciální relace Nechť R je relace na nějaké množině A. Řekneme, že R je částečné uspořádání, jestliže je reflexivní, antisymetrická a tranzitivní. V tom případě značíme relaci a řekneme,
VíceZákonitosti, vztahy a práce s daty
20mate matematika Jednotlivé kapitoly mají rozsah čtyř stran a každá kapitola je obohacena o rozšiřující učivo. sčítání a odčítání Zákonitosti, vztahy a práce s daty 1 Vyřeš úlohy. a) Součet všech čísel
VícePř. 3: Dláždíme čtverec 12 x 12. a) dlaždice 2 x 3 12 je dělitelné 2 i 3 čtverec 12 x 12 můžeme vydláždit dlaždicemi 2 x 3.
1..20 Dláždění III Předpoklady: 01019 Př. 1: Najdi n ( 84,96), ( 84,96) D. 84 = 4 21 = 2 2 7 96 = 2 = 4 8 = 2 2 2 2 2 D 84,96 = 2 2 = 12 (společné části rozkladů) ( ) n ( 84,96) = 2 2 2 2 2 7 = 672 (nejmenší
VíceTřídy a objekty -příklady
Třídy a objekty -příklady doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Příklad 1 Kvadratická rovnice static void
Více1.3.1 Kruhový pohyb. Předpoklady: 1105
.. Kruhový pohyb Předpoklady: 05 Předměty kolem nás se pohybují různými způsoby. Nejde pouze o přímočaré nebo křivočaré posuvné pohyby. Velmi často se předměty otáčí (a některé se přitom pohybují zároveň
VíceSTEREOMETRIE. Vzdálenost bodu od přímky. Mgr. Jakub Němec. VY_32_INOVACE_M3r0113
STEREOMETRIE Vzdálenost bodu od přímky Mgr. Jakub Němec VY_32_INOVACE_M3r0113 VZDÁLENOST BODU OD PŘÍMKY V PROSTORU Při hledání vzdálenosti bodu od geometrického útvaru v prostoru je nutné si vždy úlohu
Více= musíme dát pozor na: jmenovatel 2a, zda je a = 0 výraz pod odmocninou, zda je > 0, < 0, = 0 (pak je jediný kořen)
.8.7 Kvadratické rovnice s parametrem Předpoklady: 507, 803 Pedagogická poznámka: Na první pohled asi každého zarazí, že takřka celá hodina je psána jako příklady a studenti by ji měli vypracovat samostatně.
VíceFiltrace snímků ve frekvenční oblasti. Rychlá fourierova transformace
Filtrace snímků ve frekvenční oblasti Rychlá fourierova transformace semestrální práce z předmětu KIV/ZVI zpracoval: Jan Bařtipán A03043 bartipan@students.zcu.cz Obsah Úvod....3 Diskrétní Fourierova transformace
VíceZvyšování kvality výuky technických oborů
Zvyšování kvality výuky technických oborů Klíčová aktivita IV. Inovace a zkvalitnění výuky směřující k rozvoji matematické gramotnosti žáků středních škol Téma IV.. Kvadratické funkce, rovnice a nerovnice
VíceAlgoritmizace a programování
Algoritmizace a programování Procedurální programování Rekurze Jazyk C České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Procedurální programování - zásady Postupný návrh programu
VíceINŽENÝRSKÁ MATEMATIKA LOKÁLNÍ EXTRÉMY
INŽENÝRSKÁ MATEMATIKA LOKÁLNÍ EXTRÉMY FUNKCÍ DVOU PROMĚNNÝCH Robert Mařík 2. října 2009 Obsah z = x 4 +y 4 4xy + 30..................... 3 z = x 2 y 2 x 2 y 2........................ 18 z = y ln(x 2 +y)..........................
VíceOperační systém teoreticky
Přednášky o výpočetní technice Operační systém teoreticky Adam Dominec 2010 Rozvržení Operační systém Uživatelské účty Správa RAM Plánování procesů Knihovny Okna Správa zařízení Rozvržení Operační systém
Více16. února 2015, Brno Připravil: David Procházka
16. února 2015, Brno Připravil: David Procházka Skrývání implementace Základy objektového návrhu Připomenutí návrhu použitelných tříd Strana 2 / 17 Obsah přednášky 1 Připomenutí návrhu použitelných tříd
VícePrincipy překladačů. Architektury procesorů. Jakub Yaghob
Principy překladačů Architektury procesorů Jakub Yaghob Architektury procesorů Architektura procesoru představuje cílový jazyk Platí pro překladače do kódu konkrétního procesoru Ovlivňuje celý backend
VíceDynamické datové struktury III.
Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované
Více4.2.7 Voltampérová charakteristika rezistoru a žárovky
4.2.7 Voltampérová charakteristika rezistoru a žárovky Předpoklady: 4205 Pedagogická poznámka: Tuto hodinu učím jako běžnou jednohodinovku s celou třídou. Některé dvojice stihnou naměřit více odporů. Voltampérová
VíceIntervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.
Intervalové stromy Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme průběžně provádět tyto dvě operace: 1. Změna jednoho čísla v posloupnosti. 2. Zjištění součtu čísel
Více( ) 2.5.7 Neúplné kvadratické rovnice. Předpoklady: 020501
..7 Neúplné kvadratické rovnice Předpoklady: Pedagogická poznámka: Tato hodina patří mezi vzácné výjimky, kdy naprostá většina studentů skončí více než pět minut před zvoněním. Nechávám je dělat něco jiného
VíceStromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.
Stromy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2018, B6B36DSA 01/2018, Lekce 9 https://cw.fel.cvut.cz/wiki/courses/b6b36dsa/start
VíceKalendář je nástroj, který vám pomůže zorganizovat si pracovní čas. Zaznamenáváme do něj události jako schůzky, termíny odevzdání práce a podobně.
III. je nástroj, který vám pomůže zorganizovat si pracovní čas. Zaznamenáváme do něj události jako schůzky, termíny odevzdání práce a podobně. V levé spodní části okna Outlook si stisknutím tlačítka zobrazíme
VícePracovní ukázka vstupního testu DSA 1.
Pracovní ukázka vstupního testu DSA 1. Celkem můžete získat 6 bodů, k úspěšnému vyřešení testu je nutno získat alespoň 4 body. V úloze 1. získáte 1 bod za každou správně určenou hodnotu. V úlohách 2. a
VícePingpongový míček. Petr Školník, Michal Menkina. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií
Petr Školník, Michal Menkina TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií Tento materiál vznikl v rámci projektu ESF CZ.1.7/../7.47, který je spolufinancován
Více4.6.6 Složený sériový RLC obvod střídavého proudu
4.6.6 Složený sériový LC obvod střídavého proudu Předpoklady: 41, 4605 Minulá hodina: odpor i induktance omezují proud ve střídavém obvodu, nemůžeme je však sčítat normálně, ale musíme použít Pythagorovu
VíceDobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3
DobSort Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 V roce 1980 navrhl Dobosiewicz variantu (tzv. DobSort),
Více( ) ( ) ( ) 2 ( ) 2.7.16 Rovnice s neznámou pod odmocninou II. Předpoklady: 2715
.7.6 Rovnice s neznámou pod odmocninou II Předpoklady: 75 Př. : Vyřeš rovnici y + + y = 4 y + + y = 4 / ( y + + y ) = ( 4) y + + 4 y + y + 4 y = 6 5y + 4 y + y = 8 5y + 4 y + y = 8 - v tomto stavu nemůžeme
VíceTvorba trendové funkce a extrapolace pro roční časové řady
Tvorba trendové funkce a extrapolace pro roční časové řady Příklad: Základem pro analýzu je časová řada živě narozených mezi lety 1970 a 2005. Prvním úkolem je vybrat vhodnou trendovou funkci pro vystižení
VíceMatematika a její aplikace. Matematika a její aplikace
Šablona č. 5, sada č. 2 Vzdělávací oblast Vzdělávací obor Tematický okruh Matematika a její aplikace Matematika a její aplikace Početní operace násobení a dělení Téma Násobení a dělení čísly 2, 3, 4, 5
VíceMobilní aplikace pro ios
Předběžná zadávací dokumentace k projektu: Mobilní aplikace pro ios Kontaktní osoba: Jan Makovec, makovec@ckstudio.cz Obsah Cíl projektu... 2 Obrazovky aplikace... 2 Základní prostředí aplikace... 2 Intro...
VíceGymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto
Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT Mgr. Jana
Víceint t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ;
Pole Příklad: přečíst teploty naměřené v jednotlivých dnech týdnu, vypočítat průměrnou teplotu a pro každý den vypsat odchylku od průměrné teploty Řešení s proměnnými typu int: int t1, t2, t3, t4, t5,
VícePostup práce s elektronickým podpisem
Obsah 1. Obecné informace o elektronickém podpisu... 2 2. Co je třeba nastavit, abyste mohli používat elektronický podpis v MS2014+... 2 2.1. Microsoft Silverlight... 2 2.2. Zvýšení práv pro MS Silverlight...
VícePlán předmětu Název předmětu: Školní rok: Ročník: Semestr: Typ předmětu: Rozsah předmětu: Počet kreditů: Přednášející: Cvičící: Cíl předmětu
Plán předmětu Název předmětu: Algoritmizace a programování (PAAPP) Školní rok: 2009/2010 Ročník: I Semestr: II. (letní) Typ předmětu: povinný Rozsah předmětu: 3 3 z, zk Počet kreditů: 6 Přednášející: RNDr.
VícePříklady a návody. Databázová vrstva
Příklady a návody Databázová vrstva Konceptuální datový model Popis dat.struktur pomocí entit, atributů, vazeb a integritních omezení ER-model nebo OO-diagramy (class diagram) ER model zdůrazňuje vztahy
VíceDUM téma: KALK Výrobek sestavy
DUM téma: KALK Výrobek sestavy ze sady: 2 tematický okruh sady: Příprava výroby a ruční programování CNC ze šablony: 6 Příprava a zadání projektu Určeno pro : 3 a 4 ročník vzdělávací obor: 23-41-M/01 Strojírenství
VíceIB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)
IB108 Sada 1, Příklad 1 ( ) Složitost třídícího algoritmu 1/-Sort je v O n log O (n.71 ). Necht n = j i (velikost pole, které je vstupním parametrem funkce 1/-Sort). Lehce spočítáme, že velikost pole předávaná
Vícepřirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:
Metody řazení ve vnitřní a vnější paměti. Algoritmy řazení výběrem, vkládáním a zaměňováním. Heapsort, Shell-sort, Radix-sort, Quicksort. Řazení sekvenčních souborů. Řazení souborů s přímým přístupem.
Více9.2.5 Sčítání pravděpodobností I
9.2.5 Sčítání pravděpodobností I Předpoklady: 9203 Pedagogická poznámka: Následující problém sice zadávám jako příklad, ale minimálně na začátku s žáky počítám na tabuli. I kvůli tomu, aby jejich úprava
Více1.1.1 Kvadratické rovnice (dosazení do vzorce) I
.. Kvadratické rovnice (dosazení do vzorce) I Předpoklady: základní početní operace Rovnicí se nazývá vztah rovnosti mezi dvěma výrazy obsahujícími jednu nebo více neznámých. V této kapitole se budeme
VíceVýsledky testování školy. Druhá celoplošná generální zkouška ověřování výsledků žáků na úrovni 5. a 9. ročníků základní školy. Školní rok 2012/2013
Výsledky testování školy Druhá celoplošná generální zkouška ověřování výsledků žáků na úrovni 5. a 9. ročníků základní školy Školní rok 2012/2013 Základní škola Ústí nad Orlicí, Komenského 11 Termín zkoušky:
VíceDSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)
Indukcí dokažte následující výrok: pokud lef t a right jsou parametry funkce f a platí left right, pak volání f(array, left, right) vrátí minimální hodnotu z hodnot všech prvků v poli array na indexech
VíceStřední průmyslová škola strojnická Olomouc, tř.17. listopadu 49
Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49 Výukový materiál zpracovaný v rámci projektu Výuka moderně Registrační číslo projektu: CZ.1.07/1.5.00/34.0205 Šablona: III/2 Informační
VíceSada 2 - MS Office, Excel
S třední škola stavební Jihlava Sada 2 - MS Office, Excel 20. Excel 2007. Kontingenční tabulka Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284
VíceJAK PŘIDAT UŽIVATELE PRO ADMINISTRÁTORY
JAK PŘIDAT UŽIVATELE PRO ADMINISTRÁTORY Po vytvoření nové společnosti je potřeba vytvořit nové uživatele. Tato volba je dostupná pouze pro administrátory uživatele TM s administrátorskými právy. Tento
Více1.2.26 Přepočet přes jednotku - podruhé II
1.2.26 Přepočet přes jednotku - podruhé II Předpoklady: 010225 Pedagogická poznámka: První příklad nechávám řešit žáky, pak diskutujeme důvodech dělení. Př. 1: Za 0,85 hodiny zalévání spotřebovalo zavlažovací
VíceGoogle Apps. pošta 2. verze 2012
Google Apps pošta verze 0 Obsah Obsah... Úvod... Přečtení emailu... Napsání emailu... Odpověď na email... 6 Úvod V dnešní době chce mít každý své informace po ruce. Díky Internetu a online aplikacím je
VíceSemestrální práce NÁVRH ÚZKOPÁSMOVÉHO ZESILOVAČE. Daniel Tureček zadání číslo 18 cvičení: sudý týden 14:30
Semestrální práce NÁVRH ÚZKOPÁSMOVÉHO ZESILOVAČE Daniel Tureček zadání číslo 18 cvičení: sudý týden 14:30 1. Ověření stability tranzistoru Při návrhu úzkopásmového zesilovače s tranzistorem je potřeba
VíceIMPORT A EXPORT MODULŮ V PROSTŘEDÍ MOODLE
Nové formy výuky s podporou ICT ve školách Libereckého kraje IMPORT A EXPORT MODULŮ V PROSTŘEDÍ MOODLE Podrobný návod Autor: Mgr. Michal Stehlík IMPORT A EXPORT MODULŮ V PROSTŘEDÍ MOODLE 1 Úvodem Tento
VíceNáplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění
Náplň v.0.03 16.02.2014 - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Spojení dvou samostatně setříděných polí void Spoj(double apole1[], int adelka1, double
VíceAritmetika s didaktikou I.
Katedra matematiky PF UJEP Aritmetika s didaktikou I. KM1 / 0001 Přednáška 03 Operace v množině, vlastnosti binárních operací O čem budeme hovořit: zavedení pojmu operace binární, unární a další operace
VíceKapitola 7: Integrál. 1/14
Kapitola 7: Integrál. 1/14 Neurčitý integrál. Definice: Necht f je funkce definovaná na intervalu I. Funkci F definovanou na intervalu I, pro kterou platí F (x) = f (x) x I nazýváme primitivní funkcí k
Více15 s. Analytická geometrie lineárních útvarů
5 s Analytická geometrie lineárních útvarů ) Na přímce: a) Souřadnice bodu na přímce: Bod P nazýváme počátek - jeho souřadnice je P [0] Nalevo od počátku leží čísla záporná, napravo čísla kladná. Každý
Více2.7.1 Mocninné funkce s přirozeným mocnitelem
.7. Mocninné funkce s přirozeným mocnitelem Předpoklad: 0 Pedagogická poznámka: K následujícím třem hodinám je možné přistoupit dvěma způsob. Já osobně doporučuji postupovat podle učebnice. V takovém případě
VíceNa začátku rozdělíme práci a určíme, které podproblémy je potřeba vyřešit. Tyto
Kapitola 1 Rozděl a panuj Rozděl a panuj je programovací metoda. Často se označuje latinsky Divide et Empera nebo anglicky Divide and Conquer. Vychází z toho, že umíme zadaný problém rozložit na menší
VíceTřídění a vyhledávání Searching and sorting
Třídění a vyhledávání Searching and sorting Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 1 / 33 Vyhledávání Třídění Třídící algoritmy 2 / 33 Vyhledávání Searching Mějme posloupnost (pole)
VíceDůkazové metody. Teoretická informatika Tomáš Foltýnek
Důkazové metody Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz Matematický důkaz Jsou dány axiomy a věta (tvrzení, teorém), o níž chceme ukázat, zda platí. Matematický důkaz je nezpochybnitelné
VíceVýsledky testování školy. Druhá celoplošná generální zkouška ověřování výsledků žáků na úrovni 5. a 9. ročníků základní školy. Školní rok 2012/2013
Výsledky testování školy Druhá celoplošná generální zkouška ověřování výsledků žáků na úrovni 5. a 9. ročníků základní školy Školní rok 2012/2013 Gymnázium, Šternberk, Horní náměstí 5 Termín zkoušky: 13.
VícePoužívání IS Carsystem
Používání IS Carsystem Filtrování dat se SW Carsys Jak řadit a filtrovat data v agendách... 1 I. Používání filtrů... 1 II. Uložené filtry... 2 III. Vyvolávání filtrů... 3 Jak zobrazit potřebná data...
VíceStromy. Základní pojmy
Základní pojmy Strom je matematická abstrakce organizace dynamických množin, kterou v běžném životě používáme (možná nevědomě) velice často. Příkladem může být rodokmen, tedy například struktura z druhé
Více(a) = (a) = 0. x (a) > 0 a 2 ( pak funkce má v bodě a ostré lokální maximum, resp. ostré lokální minimum. Pokud je. x 2 (a) 2 y (a) f.
I. Funkce dvou a více reálných proměnných 5. Lokální extrémy. Budeme uvažovat funkci f = f(x 1, x 2,..., x n ), která je definovaná v otevřené množině G R n. Řekneme, že funkce f = f(x 1, x 2,..., x n
VíceTabulky Word 2007 - egon. Tabulky, jejich formátování, úprava, změna velikosti
Tabulky Word 2007 - egon Tabulky, jejich formátování, úprava, změna velikosti Jan Málek 26.7.2010 Tabulky Tabulky nám pomáhají v pochopení, jak mezi sebou souvisí určité informace, obohacují vzhled dokumentu
VíceJméno autora: Mgr. Zdeněk Chalupský Datum vytvoření: 5. 9. 2012 Číslo DUM: VY_32_INOVACE_13_FY_A
Jméno autora: Mgr. Zdeněk Chalupský Datum vytvoření: 5. 9. 2012 Číslo DUM: VY_32_INOVACE_13_FY_A Ročník: I. Fyzika Vzdělávací oblast: Přírodovědné vzdělávání Vzdělávací obor: Fyzika Tematický okruh: Mechanika
VíceAUTORKA Barbora Sýkorová
ČÍSLO SADY III/2 AUTORKA Barbora Sýkorová NÁZEV SADY: Číslo a proměnná číselné označení DUM NÁZEV DATUM OVĚŘENÍ DUM TŘÍDA ANOTACE PLNĚNÉ VÝSTUPY KLÍČOVÁ SLOVA FORMÁT (pdf,, ) 1 Pracovní list číselné výrazy
VíceMetodika - Postupy optimálního využití moderních komunikačních kanálů
Informatika v telemedicíně FBMI ČVUT Metodika - Postupy optimálního využití moderních komunikačních kanálů Kolektiv autorů: David Gillar, Jiří Brada, Mikuláš Miček, Miroslav Poledňák, Marie Tichá, Martin
VíceBubble sort. příklad. Shaker sort
Bubble sort pseudokód function bubblesort(array a) for i in 1 -> a.length - 1 do for j in 1 -> a.length - i - 1 do if a[j] < a[j+1] prohoď(a[j], a[j+1]); //razeni od nejvyssiho function bubblesort(int[]
VíceDualita v úlohách LP Ekonomická interpretace duální úlohy. Jiří Neubauer. Katedra ekonometrie FEM UO Brno
Přednáška č. 6 Katedra ekonometrie FEM UO Brno Uvažujme obecnou úlohu lineárního programování, tj. úlohu nalezení takového řešení vlastních omezujících podmínek a 11 x 1 + a 1 x +... + a 1n x n = b 1 a
VíceSvobodná chebská škola, základní škola a gymnázium s.r.o. Zlomky sčítání a odčítání. Dušan Astaloš. samostatná práce, případně skupinová práce
METODICKÝ LIST DA2 Název tématu: Autor: Předmět: Zlomky sčítání a odčítání Dušan Astaloš Matematika Ročník:. Učebnice: Kapitola, oddíl: Metody výuky: Formy výuky: Cíl výuky: Získané dovednosti: Stručný
VícePŘÍRUČKA K POUŽÍVÁNÍ APLIKACE HELPDESK
PŘÍRUČKA K POUŽÍVÁNÍ APLIKACE HELPDESK Autor: Josef Fröhlich Verze dokumentu: 1.1 Datum vzniku: 4.4.2006 Datum poslední úpravy: 10.4.2006 Liberecká IS, a.s.;jablonecká 41; 460 01 Liberec V; IČ: 25450131;
VícePHP formátování řetězců
PHP formátování řetězců V této části se budeme zabývat relativně podrobně formátováním řetězců v PHP. Kdy se nám může formátování řetězců hodit? Například při generování loginů, jako jednoznačných identifikátorů
VíceNázev: VY_32_INOVACE_PG3309 Booleovské objekty ve 3DS Max - sčítání a odčítání objektů
Název: VY_32_INOVCE_PG3309 ooleovské objekty ve 3DS Max - sčítání a odčítání objektů utor: Mgr. Tomáš Javorský Datum vytvoření: 05 / 2012 Ročník: 3 Vzdělávací oblast / téma: 3D grafika, počítačová grafika,
Více