Obsah. KAPITOLA 1 Dříve než začneme 19 Kdysi dávno aneb střípky z historie algoritmických strojů 20 1801 21 1833 21 1890 22 třicátá léta 22



Podobné dokumenty
PROGRAMOVÁNÍ. Cílem předmětu Programování je seznámit posluchače se způsoby, jak algoritmizovat základní programátorské techniky.

Fakulta přírodovědně-humanitní a pedagogická. Okruhy otázek pro státní závěrečné zkoušky. Bakalářské studium

Obsah. Úvodem 9 Komu je kniha určena 9 Forma výkladu 9 Konkrétní postup výuky 10 Příklady ke knize 11

Základní škola Fr. Kupky, ul. Fr. Kupky 350, Dobruška 5.2 MATEMATIKA A JEJÍ APLIKACE MATEMATIKA A JEJÍ APLIKACE Matematika 9.

Výstupy Učivo Téma. Čas. Základní škola a mateřská škola Hať. Školní vzdělávací program. Průřezová témata, kontexty a přesahy,další poznámky

Učební osnovy Vzdělávací oblast: Matematika a její aplikace Vzdělávací obor: Volitelný předmět Matematický seminář ročník 8.

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

Profilová část maturitní zkoušky 2015/2016

Vyučovací předmět / ročník: Matematika / 5. Učivo

brmiversity: Um lá inteligence a teoretická informatika

a m1 a m2 a mn zobrazení. Operaci násobení u matic budeme definovat jiným způsobem.

Metodický list pro první soustředění kombinovaného studia. předmětu MATEMATIKA A

Algoritmizace a programování

Matematika. Charakteristika vyučovacího předmětu. Výchovné a vzdělávací strategie pro rozvíjení klíčových kompetencí žáků

Výchovné a vzdělávací strategie pro rozvoj klíčových kompetencí žáků

Maturitní témata pro obor Agropodnikání

5.2.1 Matematika povinný předmět

SMĚRNICE Zjednodušená analýza rizika blesku

Dijkstrův algoritmus (připomenutí)

Přípravné kurzy pro zájemce o studium

4.3 Operace nad ordin ln mi datov mi typy Operace nad logick m datov m typem Operace nad celo seln mi datov mi typy

Priority orientovaného výzkumu, experimentálního vývoje a inovací Západočeské univerzity v Plzni

Člověk a příroda - Přírodopis - 9. ročník. POZNÁMKY (průřezová témata, mezipředmětové vztahy) PŘEDMĚTOVÉ KOMPETENCE OČEKÁVANÉ VÝSTUPY UČIVO

P - 2. stupeň. rozmanitost životních podmínek přírodniny živé přírodniny neživé botanika zoologie přírodní děje

ŠVP Školní očekávané výstupy

Profilová část maturitní zkoušky 2015/2016

Mikromarz. CharGraph. Programovatelný výpočtový měřič fyzikálních veličin. Panel Version. Stručná charakteristika:

Programování 1. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

ŠVP - učební osnovy - Vzdělání pro život - rozšířená výuka matematiky, přírodovědných předmětů a informatiky

řádově různě rostoucí rostou řádově stejně rychle dvě funkce faktor izomorfismus neorientovaných grafů souvislý graf souvislost komponenta

Principy počítačů I Propojovací systémy

Nabídka povinných a nepovinných zkoušek maturitní zkoušky, konané v jarním termínu 2016

Č část četnost. 部 分 频 率 relativní četnost 率, 相 对 频 数

( x ) 2 ( ) Další úlohy s kvadratickými funkcemi. Předpoklady: 2501, 2502

Distribuované algoritmy

Modul Řízení objednávek.

Příloha č. 1. Specifikace jednotlivých e-learningových výukových kurzů:

ROZCVIČKY. (v nižší verzi může být posunuta grafika a špatně funkční některé odkazy).

Algoritmizace a programování

Akademie múzických umění Fakulta filmová a televizní. Katedra filmové a televizní kamery. Ročník I. Magisterské studium

Tematické okruhy otázek ke státním závěrečným zkouškám DIDC

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Digitální učební materiál

2015 Evidenční číslo:

SBÍRKA PŘÍKLADŮ PRO OPAKOVÁNÍ NA PŘIJÍMACÍ ZKOUŠKY 2

Soubory a databáze. Soubor označuje množinu dat, která jsou kompletní k určitému zpracování a popisují vybrané vlastnosti reálných objektů

Obsah. Obsah. Úvod Makra v Excelu Nahrávání maker První setkání s editorem jazyka Visual Basic... 31

Příloha č. 7. ročník 9. 1h 1x za 14 dní. dotace. nepovinný. povinnost

3. Polynomy Verze 338.

6600 Odbor správy majetku

POŽADAVKY KE STÁTNÍ ZÁVĚREČNÉ ZKOUŠCE MAGISTERSKÉ STUDIUM POČÍTAČOVÉ MODELOVÁNÍ VE VĚDĚ A TECHNICE (NAVAZUJÍCÍ STUDIUM I DOBÍHAJÍCÍ 5-LETÉ STUDIUM)

Výuka algoritmizace patří především do informatiky

BENCHMARKING VE VEŘEJNÉ SPRÁVĚ

Příprava na 1. čtvrtletní písemku pro třídu 1EB

1.3 Druhy a metody měření

Obsah. Zelinka: UI v problémech globální optimalizace BEN technická literatura 3

Předmět: Člověk a jeho svět

Registrační číslo projektu: CZ.1.07/1.5.00/ Základ pro poskytování ošetřovatelské péče. Vyšetřovací metody - úvod, biologický materiál

c sin Příklad 2 : v trojúhelníku ABC platí : a = 11,6 dm, c = 9 dm, α = Vypočtěte stranu b a zbývající úhly.

Příloha č. 1 - Anotace kurzů Kompetence+

OBSAH. Úvod do digitální fotografie 11. Fotografujeme digitálním fotoaparátem 19

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Kód uchazeče ID:... Varianta: 15

ROZKLIKÁVACÍ ROZPOČET - ONLINE ZVEŘEJŇOVÁNÍ EKONOMICKÝCH DAT ÚŘADU

Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem.

KONCERTNÍ SÍŇ ČESKÉ BUDĚJOVICE DIPLOMOVÁ PRÁCE

Pokyn D Sdělení Ministerstva financí k rozsahu dokumentace způsobu tvorby cen mezi spojenými osobami

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Maturitní témata z předmětu Programování a databázové systémy. pro šk. rok 2012/2013

ŠKOLNÍ VZDĚLÁVACÍ PROGRAM

Objektově orientované databáze

Radek Pelánek. Programátorská cvičebnice

VYUŽITÍ NEURONOVÝCH SÍTÍ PROSTŘEDÍ MATLAB K PREDIKCI HODNOT NÁKLADŮ PRO ELEKTRICKÉ OBLOUKOVÉ PECE

Zásady správné manipulace s pacientem po cévní mozkové příhodě jako metoda prevence poškození zdraví pacienta a personálu

Předmluva 13 Typografická konvence použitá v knize 14. Tabulkový model 17 Netabulkový model 19

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: jan.skrbek@tul.cz tel.: Konzultace: úterý

Zvyšování kvality výuky technických oborů

Aritmetika s didaktikou II.

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

účetních informací státu při přenosu účetního záznamu,

MINISTERSTVO VNITRA. ředitelství Hasičského záchranného sboru ČR. kurz manipulace se zvířaty při mimořádných událostech

Seminář z matematiky. 2 hodiny ve 3. ročníku, 4 hodiny ve 4. ročníku. Charakteristika předmětu

edm t: POZEMNÍ STAVBY A ARCH. TVORBA 2014/2015

Zápis č. 7 ze zasedání zastupitelstva obce Služátky konaného dne ve Služátkách čp. 8 - místnost obecního úřadu.

Studie proveditelnosti. Marketingová analýza trhu

Strojové uení. typy učení: Metody učení: učení se znalostem (knowledge acquisition) učení se dovednostem (skill refinement).

Školní vzdělávací program pro základní vzdělávání - VLNKA Učební osnovy / Člověk a příroda / Z

WELLNESS PRAKTIK. Obsah programu vychází ze 3 základních zdrojů:

ČESKÁ TECHNICKÁ NORMA

Rodina - kulturní odlišnosti mezi národy Metodický list

Elektromagnet, elektromotor

Základní informace o vzdělávacím kurzu

Přehled právních předpisů ve vztahu k energetice

Vzdělávací oblast: ČLOVĚK A PŘÍRODA Vyučovací předmět: Zeměpis Ročník: 6.

Umělá inteligence I. Roman Barták, KTIML.

VYHODNOCENÍ DOTAZNÍKŮ SPOKOJENOSTI UŽIVATELŮ SE SLUŽBOU SOCIÁLNÍ REHABILITACE CENTRA ANIMA OPAVA ZA ROK 2015

Jak jednat. se stavebním úřadem. Michal Lalík. e s. stavebnímu zákonu z praxe

V rámci předmětu Seminář z chemie jsou rozvíjena tato průřezová témata:

6. Matice. Algebraické vlastnosti

Transkript:

Předmluva 11 Čím se tato kniha liší od jiných příruček? 11 Proč C++? 12 Jak číst tuto knihu? 12 Čím se budeme zabývat? 13 Kapitola 1: Dříve než začneme 13 Kapitola 2: Rekurze 13 Kapitola 3: Analýza složitosti algoritmů 13 Kapitola 4: Třídicí algoritmy 13 Kapitola 5: Datové typy a struktury 13 Kapitola 6: Odstraňování rekurze a optimalizace algoritmů 13 Kapitola 7: Vyhledávací algoritmy 13 Kapitola 8: Prohledávání textů 14 Kapitola 9: Pokročilé programovací techniky 14 Kapitola 10: Prvky algoritmiky grafů 14 Kapitola 11: Numerické algoritmy 14 Kapitola 12: Mohou počítače myslet? 14 Kapitola 13: Kódování a komprese dat 14 Kapitola 14: Různé úlohy 14 Přílohy 14 Ukázkové programy 15 Typografické konvence a symboly 15 Stručné poděkování 16 Poznámky ke čtvrtému původnímu vydání 16 Zpětná vazba od čtenářů 17 Zdrojové kódy ke knize 17 Errata 17 KAPITOLA 1 Dříve než začneme 19 Kdysi dávno aneb střípky z historie algoritmických strojů 20 1801 21 1833 21 1890 22 třicátá léta 22

čtyřicátá léta 22 poválečné období 22 současnost 23 Nedávná historie aneb počátky metodologie programování 23 Proces koncepce programů 24 Úrovně abstrakce popisu a výběr jazyka 24 Správnost algoritmů 26 KAPITOLA 2 Rekurze 29 Definice rekurze 29 Ukázka principu rekurze 30 Jak pracují rekurzivní programy? 32 Rizika rekurze 34 Fibonacciho posloupnost 34 Stack overflow! 35 Další nástrahy 37 Cesta na věčnost 37 Správná definice nestačí 37 Typy rekurzivních programů 39 Rekurzivní myšlení 40 Příklad 1: Spirála 40 Příklad 2: Sudé čtverce 42 Praktické poznámky k rekurzivním technikám 43 Úlohy 44 Řešení a poznámky k úlohám 47 KAPITOLA 3 Analýza složitosti algoritmů 51 Definice a příklady 52 Funkce faktoriál znovu 55 Nulování části pole 59 Chytáme se do pasti 61 Různé typy výpočetní složitosti 62 Nový úkol: zjednodušení výpočtů 64 Analýza rekurzivních programů 64 Terminologie a definice 64 Vysvětlení metody na příkladu 66 Logaritmický rozklad 67 Změna definičního oboru rekurzivní rovnice 68 Ackermannova funkce aneb něco pro labužníky 69 Výpočetní náročnost není modla 70 Techniky optimalizace programů 71 Úlohy 72 Řešení a poznámky k úlohám 72

KAPITOLA 4 Třídicí algoritmy 75 Třídění přímým vkládáním, algoritmus třídy O(N 2 ) 76 Bublinkové třídění, algoritmus třídy O(N2) 77 Quicksort, algoritmus třídy O(N log N) 79 HeapSort třídění haldou 82 Slučování setříděných množin 85 Třídění slučováním 86 Vnější třídění 87 Praktické poznámky 91 KAPITOLA 5 Datové typy a struktury 93 Základní a složené typy 93 Znakové řetězce a texty v jazyce C++ 95 Abstraktní datové struktury 96 Jednosměrné seznamy 97 Implementace seznamů pomocí polí 122 Zásobník 127 Fronty FIFO 131 Haldy a prioritní fronty 134 Stromy a jejich reprezentace 140 Množiny 153 Úlohy 156 Řešení úloh 156 KAPITOLA 6 Odstraňování rekurze a optimalizace algoritmů 159 Jak funguje kompilátor? 160 Trocha formalizmu neuškodí 162 Několik příkladů odstraňování rekurze v algoritmech 163 Odstraňování rekurze s využitím zásobníku 166 Eliminace lokálních proměnných 167 Metoda opačných funkcí 169 Klasické postupy odstraňování rekurze 171 Schéma typu while 172 Schéma typu if-else 173 Schéma s dvojitým rekurzivním voláním 175 Shrnutí 177 KAPITOLA 7 Vyhledávací algoritmy 179 Lineární vyhledávání 179 Binární vyhledávání 180

Hešování 181 Hledání funkce H 182 Nejznámější funkce H 183 Řešení kolizí 185 Návrat ke kořenům 186 Návrat k polím 187 Lineární pokusy 187 Dvojité hešování 189 Využití hešování 190 Shrnutí metod hešování 190 KAPITOLA 8 Prohledávání textů 193 Algoritmus vyhledávání hrubou silou 193 Nové vyhledávací algoritmy 195 Algoritmus K-M-P 196 Boyer-Mooreův algoritmus 200 Karp-Rabinův algoritmus 202 KAPITOLA 9 Pokročilé programovací techniky 205 Programování typu rozděl a panuj 206 Vyhledávání minima a maxima v číselném poli 207 Násobení matic s rozměry N N 209 Násobení celých čísel 212 Jiné známé algoritmy typu rozděl a panuj 213 Hladové algoritmy 213 Problém batohu aneb těžký život pěšího turisty 214 Dynamické programování 216 Fibonacciho posloupnost 218 Rovnice s více proměnnými 218 Nejdelší společný podřetězec 220 Jiné programovací techniky 222 Bibliografické poznámky 225 KAPITOLA 10 Prvky algoritmiky grafů 227 Základní definice a pojmy 228 Cykly v grafech 231 Způsoby reprezentace grafů 233 Reprezentace pomocí pole 233 Slovníky uzlů 235 Seznamy kontra množiny 235 Základní operace s grafy 236 Součet grafů 236 Kompozice grafů 236 Mocnina grafu 237

Roy-Warshallův algoritmus 238 Floyd-Warshallův algoritmus 240 Dijkstrův algoritmus 243 Bellman-Fordův algoritmus 245 Minimální rozpínavý strom 245 Kruskalův algoritmus 246 Primův algoritmus 247 Prohledávání grafů 247 Strategie do hloubky (sestupné prohledávání) 248 Strategie do šířky 249 Jiné strategie prohledávání 251 Problém vhodného výběru 252 Shrnutí 256 Úlohy 256 KAPITOLA 11 Numerické algoritmy 259 Vyhledávání nulových bodů funkcí 259 Iterativní výpočet hodnot funkce 261 Interpolace funkcí Lagrangeovou metodou 262 Derivování funkcí 263 Integrování funkcí Simpsonovou metodou 265 Řešení soustav lineárních rovnic Gaussovou metodou 267 Závěrečné poznámky 269 KAPITOLA 12 Mohou počítače myslet? 271 Přehled oblastí zájmu umělé inteligence 272 Expertní systémy 272 Neuronové sítě 274 Reprezentace problémů 276 Cvičení 1 277 Hry pro dvě osoby a stromy her 277 Algoritmus mini-max 278 KAPITOLA 13 Kódování a komprese dat 285 Kódování dat a aritmetika velkých čísel 287 Symetrické šifrování 287 Asymetrické šifrování 289 Primitivní metody 294 Luštění šifer 296 Techniky komprese dat 296 Komprese pomocí matematického modelování 298 Komprese metodou RLE 299

Komprese dat Huffmanovou metodou 299 Kódování LZW 305 Princip slovníkového kódování na příkladech 305 Popis formátu GIF 308 KAPITOLA 14 Různé úlohy 311 Texty úloh 311 Řešení úloh 313 PŘÍLOHA A Seznámení s jazykem C++ 317 Prvky jazyka C++ na příkladech 317 První program 317 Direktiva #include 318 Podprogramy 318 Procedury 319 Funkce 319 Aritmetické operace 320 Logické operace 321 Ukazatele a dynamické proměnné 322 Odkazy 323 Složené typy 323 Pole 323 Záznamy 324 Příkaz switch 324 Iterace 325 Rekurzivní struktury 326 Parametry programu main() 326 Operace se soubory v jazyce C++ 326 Objektové programování v jazyce C++ 327 Terminologie 328 Objekty na příkladech 328 Statické složky tříd 331 Konečné metody tříd 332 Dědičnost vlastností 332 Podmíněný kód v jazyce C++ 335 PŘÍLOHA B Úvod do číselných soustav 337 Několik definic 337 Dvojková soustava 337 Aritmetické operace s dvojkovými čísly 339 Logické operace s dvojkovými čísly 339 Osmičková soustava 341

Šestnáctková soustava 341 Proměnné v paměti počítače 342 Kódování znaků 343 PŘÍLOHA C Kompilování ukázkových programů 347 Obsah archivu ZIP ke stažení 347 Bezplatně dostupné kompilátory C++ 347 Kompilace a spouštění 348 GCC 348 Visual C++ Express Edition 349 Dev C++ 353 Literatura 355 Rejstřík 357