Rekurze. Jan Hnilica Počítačové modelování 12
|
|
- Václav Sedlák
- před 6 lety
- Počet zobrazení:
Transkript
1 Rekurze Jan Hnilica Počítačové modelování 12 1
2 Rekurzivní charakter úlohy Výpočet faktoriálu faktoriál : n! = n (n - 1) (n - 2) (0! je definován jako 1) můžeme si všimnout, že výpočet n! obsahuje vnořené výpočty dalších faktoriálů: 6! = ! = ! =... pro n 1 můžeme napsat: n! = n (n - 1)! Rekurzivní úloha řešení úlohy obsahuje řešení dílčích podúloh stejného charakteru podobný rekurzivní chrakter bychom nalezli v řadě úloh - ciferný součet: CS(n) = n % 10 + CS(n / 10) // dokud n 0 - celočíselná mocnina Mocnina(n, exp) = n Mocnina(n, exp - 1) // dokud exp > 0 - průchod lineárním seznamem atd... Jan Hnilica Počítačové modelování 12 2
3 Rekurzivní funkce jazyk C (a řada dalších jazyků) umožňuje vytvářet tzv. rekurzivní funkce rekurzivní funkce = funkce, která ve svém těle volá sebe samu Rekurzivní funkce pro výpočet faktoriálu: vyjdeme z rekurzivní definice: n! = 1 // pro n == 0 = n (n - 1)! // pro n > 0 kterou ve funkci opíšeme : int Faktorial(int n) if (n < 2) return 1; return n * Faktorial(n - 1); Důležité: funkce má definovanou ukončovací podmínku, při jejímž splnění se další rekurzivní volání už neprovede při rekurzivním volání se mění parametry volané funkce, vždy dochází ke zjednodušení (zmenšení) úlohy Jan Hnilica Počítačové modelování 12 3
4 Co se děje při rekurzivním volání funkce totéž co u normálního volání funkcí, tzn. při volání funkce je na systémovém zásobníku vytvořen záznam, obsahující lokální proměnné volané funkce, návratovou adresu výsledku atd... volající funkce zastaví provádění kódu a čeká, až volaná funkce dokončí svou činnost poté co volaná funkce skončí, pokračuje volající funkce ve svém kódu při rekurzivním volání volající funkce zavolá svou rekurzivní odnož a čeká, až ta dokončí svoji práci volaná rekurzivní odnož postupuje úplně stejně, také volá další odnož a čeká, takto se postupuje dál, dokud čerstvě volaná funkce nenarazí na ukončovací podmínku najednou je rozpracováno více úloh, které všechny postupují podle téhož kódu při návratu nejdříve skončí funkce, volaná jako poslední, ta vrací řízení předposledně volané funkci... nejpozději skončí ta funkce, která byla volána jako první každá funkce má na zásobníku vlastní záznam (vlastní lokální proměnné atd.) jednotlivé funkce nemají přístup k lokálním proměnným jiných funkcí, můžou ale sdílet proměnné předávané odkazem (nebo globální proměnné) Jan Hnilica Počítačové modelování 12 4
5 F (4) čeká F (3) čeká F (2) čeká Co se děje při rekurzivním volání funkce Faktorial(4) čas = 4 Faktorial(3) = 3 Faktorial(2) = 2 Faktorial(1) 1 24 F(3) končí 6 F(2) končí 2 F(1) končí F(4) končí Poznámka: Nákres ilustruje fakt, že funkce, která byla volána jako první, dokončí svou práci jako poslední a naopak! (systém zásobníku) Jan Hnilica Počítačové modelování 12 5
6 Ilustrace rekurzivních volání void Pozpatku() char znak = getchar(); if (znak!= '\n') Pozpatku(); putchar(znak); 1. funkce načte znak na vstupu 2. načtený znak je - konec řádku => funkce končí - něco jiného => funkce volá sebe samu a až poté, co je vráceno řízení, vypíše načtený znak (později volané funkce mezitím načetly a vypsaly vstupní znaky až do konce řádku) výsledkem je otočení řetězce zadaného na vstupu: vstup: abcd výstup: bcda Jan Hnilica Počítačové modelování 12 6
7 Příklady jednoduchých rekurzivních funkcí Euklidův algoritmus pro výpočet největšího společného dělitele (NSD) jsou zadána dvě celá čísla A a B, úkolem je nalézt jejich NSD - největší číslo, které beze zbytku dělí jak A, tak B pro výpočet NSD se nabízí několik postupů 1. postupné zkoušení všech možných dělitelů 2. vypočítat prvočíselné rozklady A a B, NSD je jejich největší společná část např. 126 = = NSD (126, 78) = 6 3. Euklidův algoritmus: pokud A == B NSD(A, B) = A pokud A > B NSD(A, B) = NSD(A - B, B) pokud B > A NSD(A, B) = NSD(A, B - A) NSD(126, 78) = NSD(48, 78) = NSD(48, 30) = NSD(18, 30) = NSD(18, 12) = = NSD(6, 12) = NSD (6, 6) = 6 Jan Hnilica Počítačové modelování 12 7
8 Příklady jednoduchých rekurzivních funkcí Euklidův algoritmus pro výpočet největšího společného dělitele (NSD) rekurzivní předpis algoritmu: pokud A == B NSD(A, B) = A pokud A > B NSD(A, B) = NSD(A - B, B) pokud B > A NSD(A, B) = NSD(A, B - A) snadno přepíšeme na rekurzivní funkci: int NSD(int a, int b) if (a == b) return a; if (a > b) return NSD(a - b, b); else return NSD(a, b - a); Jan Hnilica Počítačové modelování 12 8
9 Příklady jednoduchých rekurzivních funkcí Průchod lineárním seznamem uvažujme jednoduchý LS sestavený z prvků: typedef struct prvek char znak; struct prvek * dalsi; Prvek; průchod seznamem (spojený např. s výpisem prvků) lze napsat takto: void VypisSeznam(Prvek * S) if (S!= NULL) printf("%c ", S->znak); VypisSeznam(S->dalsi); Jan Hnilica Počítačové modelování 12 9
10 Použití rekurze rekurze se obvykle nepoužívá k řešení úloh, které jdou snadno vyřešit cyklem všechny dosud uvedené funkce jdou snadno napsat i bez rekurze Euklidův NSD: int NSD(int a, int b) while (a!= b) if (a > b) a = a - b; else b = b - a; return a; Faktoriál: int Faktorial(int n) int f = 1; for (int i = n; i > 1; i--) f = f * i; return f; Jan Hnilica Počítačové modelování 12 10
11 Použití rekurze je nutné si uvědomit, že volání rekurzivních funkcí sebou nese určité náklady na čas a paměť (vytvoření proměnných na zásobníku, návratová adresa, skok do funkce, návrat z funkce...) lze-li úlohu jednoduše řešit bez použití rekurze, je takové řešení efektivnější v ne-rekurzivních algoritmech se většinou také snáze hledají chyby rekurze se obvykle používá v těchto případech: úlohy typu "vygeneruj všechny možnosti" prohledávání do hloubky (backtracking) algoritmy "rozděl a panuj" Jan Hnilica Počítačové modelování 12 11
12 Kombinatorické úlohy (generování všech možností) pro nácvik rekurze se dobře hodí úlohy na generování základních kombinatorických struktur, zároveň jde také o úlohy, kde je rekurze přirozeným a jednoduchým řešením problému, který by šel iterací řešit jen velmi těžko nejprve připomenutí základních pojmů: - máme n-prvkovou množinu, v našem případě čísla 1, 2,.., n - z této množiny budeme provádět k-prvkové výběry (k n), přičemž rozlišujeme: variace - ve výběru záleží na pořadí prvků, tzn. (1, 2, 3) je jiná variace než (1, 3, 2) kombinace - ve výběru na pořadí prvků nezáleží, tzn. (1, 2, 3) a (1, 3, 2) jsou tytéž kombinace u variací i kombinací dále rozlišujeme varianty a) s opakováním - prvky ve výběru se mohou opakovat (např. 1, 1, 2, 3) b) bez opakování - prvky se opakovat nemohou permutace - jsou variace bez opakování pro n = = k - jinak řečeno jde o záměny pořadí původní množiny prvků Jan Hnilica Počítačové modelování 12 12
13 Kombinatorické úlohy (generování všech možností) Příklad: n = 4, k = 2, provádíme tedy 2-prvkové výběry z množiny 1, 2, 3, 4 variace s opakováním (1,1) (1,2) (1,3) (1,4) (2,1) (2,2) (2,3) (2,4) (3,1) (3,2) (3,3) (3,4) (4,1) (4,2) (4,3) (4,4) variace bez opakování (1,2) (1,3) (1,4) (2,1) (2,3) (2,4) (3,1) (3,2) (3,4) (4,1) (4,2) (4,3) kombinace s opakováním (1,1) (1,2) (1,3) (1,4) (2,2) (2,3) (2,4) (3,3) (3,4) (4,4) kombinace bez opakování (1,2) (1,3) (1,4) (2,3) (2,4) (3, 4) Jan Hnilica Počítačové modelování 12 13
14 Kombinatorické úlohy (generování všech možností) Variace s opakováním úloha: vygenerovat všechny k-prvkové variace z množiny čísel 1, 2,..., n postup: na každou z k pozic postupně umístíme všechny hodnoty 1... n úloha řešitelná pomocí vnoření k cyklů, ale pouze za předpokladu, že k a n jsou předem pevně zadány: for (int c1 = 1; c1 <= n; c1++) for (int c2 = 1; c2 <= n; c2++) for (int c3 = 1; c3 <= n; c3++)... for (int ck = 1; ck <= n; ck++) printf("%i %i %i...%i", c1, c2, c3,..., ck); pokud jsou k a n vstupními parametry programu, nelze vnořené cykly použít (není předem známo, kolik jich do kódu napsat a do jaké meze mají probíhat) Jan Hnilica Počítačové modelování 12 14
15 Kombinatorické úlohy (generování všech možností) Variace s opakováním rekurzivní funkce řeší problém jednoduše parametry funkce: n, k... parametry variace variace...pole délky k, do kterého ukládáme výsledek index... pozice v poli variace, na kterou právě zapisujeme void VariaceSO(int n, int k, int variace[], int index) if (index == k) // hotová variace výpis a konec VypisPole(variace, k); else for (int i = 1; i <= n; i++) // postupně použijeme všechna čísla variace[index] = i; // umístíme číslo na danou pozici VariaceSO(n, k, variace, index + 1); // necháme vygenerovat zbytek rekurzivně volaná funkce stejným způsobem zpracuje další políčko variace analýza funkce je na další straně Jan Hnilica Počítačové modelování 12 15
16 Kombinatorické úlohy (generování všech možností) Variace s opakováním analýza funkce funkce obhospodařuje vždy jedno políčko vytvářené variace (s indexem index) o o o o v cyklu od 1 do n (tedy přes všechny přípustné hodnoty) do tohoto políčka zapíše aktuální hodnotu a zavolá rekurzivní funkci (svou vlastní kopii) kopie tak dostane ke zpracování pole, kde je políčko index už vyplněné a sama bude stejným způsobem vyplňovat další políčko (proto ji voláme s parametrem index + 1) a sama bude také volat své rekurzivní kopie rekurzivní volání končí ve chvíli, kdy volaná kopie dostane ke zpracování vyplněnou variaci (index == k), kterou jenom vypíše a vrátí řízení řízení se tak vrací k čekajícím funkcím, které pokračují ve svých cyklech a do příslušných polí vyplňují další čísla v pořadí funkci v programu voláme s parametrem index = 0 (začínáme s prázdnou variací) VariaceSO(n, k, variace, 0); Technická poznámka: pole variace je do funkcí předáváno odkazem (jako vždy v jazyce C, u polí si funkce nevyrábí lokální kopii, ale pracují přímo s předaným polem, změny v poli se tak projeví i mimo funkci) všechny rekurzivní exempláře tedy pracují nad tím samým polem v paměti. Jan Hnilica Počítačové modelování 12 16
17 Kombinatorické úlohy (generování všech možností) Variace s opakováním analýza funkce průběh volání pro n = 3, k = 2, tvoříme tedy 2-prvkové variace z množiny 1, 2, 3 v závorkách funkce je uveden pouze parametr index (červeně), zelené číslo v kroužku udává pořadí, v jakém byla funkce volána, zároveň je znázorněn stav pole variace 1 VO(0) VO(1) VO(2) VO(2) VO(2) výpis výpis výpis 2 6 VO(1) VO(2) výpis VO(1) VO(2) výpis VO(2) výpis VO(2) 8 VO(2) 9 výpis výpis VO(2) výpis Jan Hnilica Počítačové modelování 12 17
18 Kombinatorické úlohy (generování všech možností) Variace bez opakování řešíme obdobně jako variace s opakováním, ale před zapsáním čísla i na j-tou pozici je potřeba zjistit, jestli číslo i už není zapsáno na jedné z předchozích pozic [0]..[j - 1] to lze provést několika způsoby a) před zapsáním čísla prohledat doposud vygenerovanou část (od 0 do index - 1) b) jako parametr funkce přidat pomocné pole příznaků (0/1) signalizujících, jestli dané číslo ve variaci je či není, zápis čísla do variace pak může vypadat takto: // zápis čísel do variace for (int i = 1; i <= n; i++) if (!pouzite[i]) // pokud číslo ve variaci zatím není variace[index] = i; // zapíšeme ho pouzite[i] = 1; // oznacime ho jako použité VariaceBO(n, k, index + 1, pouzite, variace); // vygenerujeme zbytek pouzite[i] = 0; // číslo před návratem nahoru uvolníme pro další variace Jan Hnilica Počítačové modelování 12 18
19 Kombinatorické úlohy (generování všech možností) Kombinace s opakováním řešíme podobně jako variace, ale aby nedošlo k vygenerování stejných kombinací (lišících se pouze pořadím prvků), generujeme pouze neklesající (či nerostoucí) posloupnosti při zápisu čísla do kombinace tedy musíme zjistit minimální (či maximální) hodnotu, kterou na danou pozici můžeme zapsat (prohledat dosud zapsanou část kombinace, předávat minimum jako parametr funkce...) Kombinace bez opakování stejné jako kombinace s opakováním, ale generujeme pouze ostře rostoucí (či klesající) posloupnosti Jan Hnilica Počítačové modelování 12 19
20 Generování všech možností Palindromy palindrom = slovo, které se čte z obou stran stejně (např. madam) úloha: máme zadaný řetězec, cílem je vygenerovat všechny palindromy, které lze získat vyškrtáním některých znaků řetězce telepatie => epe telepatie => tat telepatie => telet... Řešení rekurzivní generování všech pod-řetězců, testování na palindromicitu, výpis palindromů pro řetězec délky n je 2 n možných pod-řetězců (každý ze znaků v pod-řetězci buďto je a nebo není) generování pod-řetězců: - použijeme pole příznaků, udávajících jestli je znak v aktuálním pod-řetězci obsažen - každý znak postupně použijeme (příznak = 1) nebo nepoužijeme (příznak = 0) a zavoláme tutéž funkci, která takto ošetří další znak v pořadí - vždy po nastavení celé n-tice příznaků pod-řetězec otestujeme Jan Hnilica Počítačové modelování 12 20
21 Kdy rekurzi nepoužívat Fibonacciho posloupnost je nekonečná posloupnost přirozených čísel F i (pro i = 0, 1, ), kde platí F i = i pro i = 0, 1 F i = F i 1 + F i 2 pro i > 1 prvními dvěma členy jsou 0 a 1, každý další člen pak získáme jako součet dvou předchozích: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, Úloha: napišme funkci, která spočítá n-tý člen Fibonacciho posloupnosti rekurzivní definice F i = F i 1 + F i 2 přímo svádí k napsání rekurzivní funkce, která by mohla vypadat takto: int Fibonacci(int n) if (n <= 1) return n; return Fibonacci(n - 1) + Fibonacci(n - 2); Jan Hnilica Počítačové modelování 12 21
22 Kdy rekurzi nepoužívat Fibonacciho posloupnost funkce z předchozí strany počítá správně, ale pomalu, zkuste n > 40 (pozor, do 4-bytového int se vejde maximálně F 46, do unsigned int pak F 47 ) důvodem je opakované počítání stejných funkčních hodnot F 5 F 4 F 3 F 3 F 2 F 2 F 1 F 2 F 1 F 1 F 0 F 1 F 0 Obrázek ukazuje větvení rekurzivních volání při výpočtu F 5. Funkce F 2 je během výpočtu volána 3-krát, funkce F 1 dokonce 5-krát. Při výpočtu vyšších členů posloupnosti bude počet opakovaných volání stejných funkcí dramaticky narůstat. F 1 F 0 Jan Hnilica Počítačové modelování 12 22
23 Kdy rekurzi nepoužívat Fibonacciho posloupnost časová složitost rekurzivního algoritmu je O(2 n ) - při volání F i (i > 1) se výpočet vždy rozdělí na dvě větve - větvení skončí když jsou volány funkce F0 a F1, což při výpočtu F n nastane v n-tém zanoření řešení 1: použít pomocné pole a zaznamenávat si do něj již spočtené hodnoty, při výpočtu F i se nejprve podívat, jestli už hodnota nebyla spočtena => O(n) rešení 2: počítat od spoda a úlohu tak vyřešit prostým cyklem => O(n) int Fibonacci(int n) if (n <= 1) return n; int f0 = 0, f1 = 1, fn; for (int i = 2; i <= n; i++) fn = f0 + f1; f0 = f1; f1 = fn; return fn; (a ušetříme rekurzivní volání) Jan Hnilica Počítačové modelování 12 23
24 Poznámky Kdy rekurzi používat? pokud nevede k extrémním časovým nárokům algoritmu pokud rekurzivní funkce významně zjednoduší zápis algoritmu pokud ne-rekurzivní řešení úlohy neznáme Rekurzivní algoritmus bez rekurzivní funkce rekurzivní algoritmy využívají systémového zásobníku, ale datovou strukturu zásobník si můžeme naprogramovat sami program pracuje pomocí běžného cyklu, ze zásobníku vždy odebere ke zpracování dílčí úlohu a uloží do něj nové úlohy zniklé rekurzivním dělením odebrané úlohy, algoritmus končí vyprázdněním zásobníku (pracnější na naprogramování, ale efektivnější vyhneme se volání funkcí) Nepřímá rekurze rekurzivní volání může být skryto - funkce A volá ve svém těle funkci B, která zase volá funkci A Jan Hnilica Počítačové modelování 12 24
Rekurze. Pavel Töpfer, 2017 Programování 1-8 1
Rekurze V programování ve dvou hladinách: - rekurzivní algoritmus (řešení úlohy je definováno pomocí řešení podúloh stejného charakteru) - rekurzivní volání procedury nebo funkce (volá sama sebe přímo
VíceFunkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr
Funkce pokročilé možnosti Úvod do programování 2 Tomáš Kühr Funkce co už víme u Nebo alespoň máme vědět... J u Co je to funkce? u Co jsou to parametry funkce? u Co je to deklarace a definice funkce? K
Více4. Rekurze. BI-EP1 Efektivní programování Martin Kačer
4. Rekurze BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze
VíceRekurze. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.
Rekurze doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Rekurze 161 / 344 Osnova přednášky
VíceLineární spojový seznam (úvod do dynamických datových struktur)
Lineární spojový seznam (úvod do dynamických datových struktur) Jan Hnilica Počítačové modelování 11 1 Dynamické datové struktury Definice dynamické struktury jsou vytvářeny za běhu programu z dynamicky
VíceRekurzivní algoritmy
Rekurzivní algoritmy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA) ZS
VíceProhledávání do šířky = algoritmus vlny
Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé
VíceStruktura programu v době běhu
Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů
VíceFunkce, intuitivní chápání složitosti
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 Funkce, intuitivní
VíceImplementace LL(1) překladů
Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku
VíceZačínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů
Začínáme vážně programovat Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Podmínky a cykly Dokončení stručného přehledu řídících struktur jazyka C. Složený příkaz, blok Pascalské
VícePointery II. Jan Hnilica Počítačové modelování 17
Pointery II 1 Pointery a pole Dosavadní způsob práce s poli zahrnoval: definici pole jakožto kolekce proměnných (prvků) jednoho typu, umístěných v paměti za sebou int pole[10]; práci s jednotlivými prvky
VíceJe n O(n 2 )? Je n 2 O(n)? Je 3n 5 +2n Θ(n 5 )? Je n 1000 O(2 n )? Je 2 n O(n 2000 )? Cvičení s kartami aneb jak rychle roste exponenciála.
Příklady: Je n O(n 2 )? Je n 2 O(n)? Je 3n 5 +2n 3 +1000 Θ(n 5 )? Je n 1000 O(2 n )? Je 2 n O(n 2000 )? Cvičení s kartami aneb jak rychle roste exponenciála. Další pojmy složitosti Složitost v nejlepším
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íceProgramování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace
Programování: základní konstrukce, příklady, aplikace IB111 Programování a algoritmizace 2011 Připomenutí z minule, ze cvičení proměnné, výrazy, operace řízení výpočtu: if, for, while funkce příklady:
VíceBinární soubory (datové, typované)
Binární soubory (datové, typované) - na rozdíl od textových souborů data uložena binárně (ve vnitřním tvaru jako v proměnných programu) není čitelné pro člověka - všechny záznamy téhož typu (může být i
VíceStromy. Jan Hnilica Počítačové modelování 14
Stromy Jan Hnilica Počítačové modelování 14 1 Základní pojmy strom = dynamická datová struktura, složená z vrcholů (uzlů, prvků) propojených hranami hrany chápeme jako orientované, tzn. vedou z uzlu A
Více8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy
VíceÚvod do programování 10. hodina
Úvod do programování 10. 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 Syntax Dvojrozměrné pole
VíceČtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:
Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury
Více3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem
ČVUT FEL X36PAA - Problémy a algoritmy 3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem Jméno: Marek Handl Datum: 1. 1. 2009 Cvičení: Pondělí 9:00 Zadání Naprogramujte
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Úvod do programování. Lekce 5
I N V E S T I C E D O R O Z V O J E V Z D Ě L Á V Á N Í Inovace a zvýšení atraktivity studia optiky reg. č.: CZ.1.07/2.2.00/07.0289 Úvod do programování Lekce 5 Tento projekt je spolufinancován Evropským
VíceAlgoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu
VíceDynamické programování
Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)
Vícefor (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
VíceKOMBINATORIKA (4.ročník I.pololetí DE, 2.ročník I.pololetí NS)
KOMBINATORIKA (4.ročník I.pololetí DE,.ročník I.pololetí NS) Kombinatorika je část matematiky, zabývající se uspořádáváním daných prvků podle jistých pravidel do určitých skupin a výpočtem množství těchto
Více1. Implementace funkce počet vrcholů. Předmět: Algoritmizace praktické aplikace (3ALGA)
Předmět: Algoritmizace praktické aplikace (3ALGA) Vytvořil: Jan Brzeska Zadání: Vytvoření funkcí na stromech (reprezentace stromu směrníky). Zadané funkce: 1. Počet vrcholů 2. Počet listů 3. Součet 4.
Více2 Datové typy v jazyce C
1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,
VícePole a Funkce. Úvod do programování 1 Tomáš Kühr
Pole a Funkce Úvod do programování 1 Tomáš Kühr (Jednorozměrné) pole u Datová struktura u Lineární u Homogenní = prvky stejného datového typu u Statická = předem určený počet prvků u Pole umožňuje pohodlně
VíceStromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy
Stromy úvod Stromy Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy Neorientovaný strom Orientovaný strom Kořenový orientovaný
VíceFunkce, podmíněný příkaz if-else, příkaz cyklu for
Funkce, podmíněný příkaz if-else, příkaz cyklu for Definice funkce Funkce je pojmenovaná část programu, kterou lze dále zavolat v jiné části programu. V Pythonu je definována klíčovým slovem def. Za tímto
Více6 Příkazy řízení toku
6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní
VíceDefinice funkcí a procedur. Mnoho operací provozujeme opakovaně, proto je hloupé programovat je při každém použití znovu.
Definice funkcí a procedur Mnoho operací provozujeme opakovaně, proto je hloupé programovat je při každém použití znovu. Definice funkcí a procedur Mnoho operací provozujeme opakovaně, proto je hloupé
VíceŘešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C
Hanojské věže - 3 kolíky A, B, C - na A je N disků různé velikosti, seřazené od největšího (dole) k nejmenšímu (nahoře) - kolíky B a C jsou prázdné - úkol: přenést všechny disky z A na B, mohou se odkládat
Víceint ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N
Struktura (union) - struktura a union jsou složené typy, které "v sobě" mohou obsahovat více proměnných - struktura obsahuje v každém okamžiku všechny své proměnné, union obsahuje (=je "aktivní") pouze
Více6. Příkazy a řídící struktury v Javě
6. Příkazy a řídící struktury v Javě Příkazy v Javě Příkazy v Javě Řídicí příkazy (větvení, cykly) Přiřazovací příkaz = Řízení toku programu (větvení, cykly) Volání metody Návrat z metody - příkaz return
VíceŘídicí struktury. alg3 1
Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení
VíceLogo2 operace, rekurze, větvení výpočtu
Operace Logo2 operace, rekurze, větvení výpočtu Je naše vlastní operace, jejím výsledkem je nějaká hodnota. Na určení tohoto výsledku musíme použít základní příkaz jazyka Imagine logo. A tím je výsledek.
VíceZákladní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě
Metody přidělování paměti Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě Důležitá hlediska jazykových konstrukcí: Dynamické typy Dynamické
VícePro kontrolu správného formátu hodnoty N použijeme metodu try-catch.
1. ŘEŠENÉ PŘÍKLADY 1.2 PŘÍKLAD 24-2-8-2_DOKONALÉ ČÍSLO Napište program, který má na vstupu přirozené číslo N > 1. Výstupem je informace o tom, zda toto číslo je/není dokonalé. (Dokonalé číslo je takové
VíceIAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);
Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());
VíceObecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012
Obecná informatika Přednášející Putovních přednášek Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Podzim 2012 Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 1 / 18
VíceÚvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
VíceVyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky
Více2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013
2. úkol MI-PAA Jan Jůna (junajan) 3.11.2013 Specifikaci úlohy Problém batohu je jedním z nejjednodušších NP-těžkých problémů. V literatuře najdeme množství jeho variant, které mají obecně různé nároky
VíceProhledávání do šířky a do hloubky. Jan Hnilica Počítačové modelování 15
Prohledávání do šířky a do hloubky Jan Hnilica Počítačové modelování 15 1 Prohledávací algoritmy Úkol postupně systematicky prohledat vymezený stavový prostor Stavový prostor (SP) možné stavy a varianty
VíceÚvod do informatiky. Miroslav Kolařík
Úvod do informatiky přednáška desátá Miroslav Kolařík Zpracováno dle R. Bělohlávek, V. Vychodil: Diskrétní matematika 2, http://phoenix.inf.upol.cz/esf/ucebni/dm2.pdf P. Martinek: Základy teoretické informatiky,
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íceProgramování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné
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íceZPRO v "C" Ing. Vít Hanousek. verze 0.3
verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout
VíceZákladní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě
Metody přidělování paměti Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě Důležitá hlediska jazykových konstrukcí: Dynamické typy Dynamické
VíceLekce 01 Úvod do algoritmizace
Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů Lekce 01 Úvod do algoritmizace Tento projekt CZ.1.07/1.3.12/04.0006 je spolufinancován Evropským sociálním
VícePoslední nenulová číslice faktoriálu
Poslední nenulová číslice faktoriálu Kateřina Bambušková BAM015, I206 Abstrakt V tomto článku je popsán a vyřešen problém s určením poslední nenulové číslice faktoriálu přirozeného čísla N. Celý princip
Více- jak udělat konstantu long int: L long velka = 78L;
Konstanty (konstatní hodnoty) Např.: - desítkové: 25, 45, 567, 45.678 - osmičkové: 045, 023, 03 vždy začínají 0 - šestnáctkové: 0x12, 0xF2, 0Xcd, 0xff, 0xFF - jak udělat konstantu long int: 245566553L
Více1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
VíceVyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky
Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové
Více9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek
9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek 1/24 Editační prostření Kód programu lze editovat v jakémkoli textovém editoru. 2/24 Editační prostření Kód
VíceIII/2 Inovace a zkvalitnění výuky prostřednictvím ICT
Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň
VícePODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2
PI JE JEDNODUCHÝ IMPERATIVNÍ PROGRAMOVACÍ JAZYK OBSAHUJE PODPORU ANOTACÍ NEOBSAHUJE NĚKTERÉ TYPICKÉ KONSTRUKTY PROGRAMOVACÍCH JAZYKŮ JAKO JSOU REFERENCE, UKAZATELE, GLOBÁLNÍ PROMĚNNÉ PODOBÁ SE JAZYKU C
VíceZáklady programování (IZP)
Základy programování (IZP) Deváté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Gabriela Nečasová, inecasova@fit.vutbr.cz
Více1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
VíceZáklady programování (IZP)
Základy programování (IZP) Sedmé počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 2018/2019,
VícePokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Třídy v C++ Třídy jsou uživatelsky definované typy podobné strukturám v C, kromě datových položek (proměnných) však mohou obsahovat i funkce
VíceAlgoritmus pro generování normálních magických čtverců
1.1 Úvod Algoritmus pro generování normálních magických čtverců Naprogramoval jsem v Matlabu funkci, která dokáže vypočítat magický čtverec libovolného přípustného rozměru. Za pomocí tří algoritmů, které
VíceProgramování v C++ 1, 1. cvičení
Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených
VíceStandardní algoritmy vyhledávací.
Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární
VíceAlgoritmus pro hledání nejkratší cesty orientovaným grafem
1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval
VíceProgramování v jazyce C a C++
Programování v jazyce C a C++ Richter 1 Petyovský 2 1. března 2015 1 Ing. Richter Miloslav, Ph.D., UAMT FEKT VUT Brno 2 Ing. Petyovský Petr, UAMT FEKT VUT Brno C++ Stručná charakteristika Nesdíĺı normu
VíceV každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2
Euklidův algoritmus Doprovodný materiál pro cvičení Programování I. NPRM044 Autor: Markéta Popelová Datum: 31.10.2010 Euklidův algoritmus verze 1.0 Zadání: Určete největšího společného dělitele dvou zadaných
Více8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
VíceDa D to t v o é v ty t py IB111: Datové typy
Datové typy IB111: Datové typy Data a algoritmizace jaká data potřebuji pro vyřešení problému? jak budu data reprezentovat? jaké operaci s nimi potřebuji provádět? Navržení práce s daty je velice důležité
VíceProgramy a algoritmy pracující s čísly. IB111 Úvod do programování skrze Python
Programy a algoritmy pracující s čísly IB111 Úvod do programování skrze Python 2013 1 / 60 Připomenutí z minule proměnné, výrazy, operace řízení výpočtu: if, for, while funkce příklady: faktoriál, binární
Více14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
VíceKoncepce (větších) programů. Základy programování 2 Tomáš Kühr
Koncepce (větších) programů Základy programování 2 Tomáš Kühr Parametry a návratová hodnota main Již víme, že main je funkce A také tušíme, že je trochu jiná než ostatní funkce v programu Funkce main je
VíceImplementace seznamů do prostředí DELPHI pomocí lineárního seznamu
Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu Ukazatel a dynamické datové struktury v prostředí DELPHI Důležitým termínem a konstrukčním programovým prvkem je typ UKAZATEL. Je to vlastně
VíceVíce o konstruktorech a destruktorech
Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení
VíceČasová a prostorová složitost algoritmů
.. Časová a prostorová složitost algoritmů Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Hodnocení algoritmů Programovací techniky Časová a prostorová
VíceSyntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava
Implementace LL(1) překladů Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 6. ledna 2012 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku
VíceVÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
VíceZáklady programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP
Základy programování Úloha: Eratosthenovo síto Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Obsah 1 Zadání úkolu: 3 1.1 Zadání:............................... 3 1.2 Neformální zápis:.........................
VíceM - Kvadratické rovnice a kvadratické nerovnice
M - Kvadratické rovnice a kvadratické nerovnice Určeno jako učební tet pro studenty dálkového studia. VARIACE 1 Tento dokument byl kompletně vytvořen, sestaven a vytištěn v programu dosystem - EduBase.
VíceProgramování v C++, 2. cvičení
Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule
VíceZákladní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
VíceDatové struktury 2: Rozptylovací tabulky
Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy
VíceBI-EP1 Efektivní programování 1
BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze Evropský
Vícefor (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }
Pole Kdybychom v jazyce C++chtěli načíst větší počet čísel nebo znaků a všechny bylo by nutné všechny tyto hodnoty nadále uchovávat v paměti počítače, tak by bylo potřeba v paměti počítače alokovat stejný
VíceZáklady programování (IZP)
Základy programování (IZP) Páté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 5. týden
VíceALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)
ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) Strom / tree uzel, vrchol / node, vertex hrana / edge vnitřní uzel
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íceLogické programování I
Logické programování I PROLOG Program popisuje "svět" Prologu = databáze faktů a pravidel (tzv. klauzulí). fakta: predikát(arg1, arg2,...argn). cíle:?- predikát(arg1, arg2,...argn). pravidla: hlava :-
VíceDSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v
DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve
Více17. Projekt Trojúhelníky
Projekt Trojúhelníky strana 165 17. Projekt Trojúhelníky 17.1. Základní popis, zadání úkolu Pracujeme na projektu Trojúhelníky, který je ke stažení na java.vse.cz. Aplikace je napsána s textovým uživatelským
VíceALGORITMIZACE A PROGRAMOVÁNÍ
Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení
VíceAlgoritmy a datové struktury
Algoritmy a datové struktury 1 / 34 Obsah přednášky Základní řídící struktury posloupnost příkazů podmínka cyklus s podmínkou na začátku cyklus s podmínkou na konci cyklus s pevným počtem opakování Jednoduchá
VíceOperační systémy. Cvičení 4: Programování v C pod Unixem
Operační systémy Cvičení 4: Programování v C pod Unixem 1 Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné
VíceC# konzole Podíl dvou čísel, podmínka IF
C# konzole Podíl dvou čísel, podmínka IF Tematická oblast Datum vytvoření 2013 Ročník 3 Stručný obsah Způsob využití Autor Kód Internetové technologie, programování Výpočet podílu v konzolové aplikaci
VíceZáklady programování (IZP)
Základy programování (IZP) Deváté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 2016/2017
Více