Algoritmizace a programování
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
F7PBKALP | Z,ZK | 6 | 2P+2C | česky |
- Vztahy:
- Úspěšná klasifikace předmětu F7PBKALP je podmínkou pro následnou klasifikaci předmětu F7PBKNVMA-C
- Úspěšná klasifikace předmětu F7PBKALP je podmínkou pro následnou klasifikaci předmětu F7PBKAZC-C
- Úspěšná klasifikace předmětu F7PBKALP je podmínkou pro následnou klasifikaci předmětu F7PBKNVM-C
- Úspěšná klasifikace předmětu F7PBKALP je podmínkou pro následnou klasifikaci předmětu F7PBKMTB-C
- Garant předmětu:
- Pavel Smrčka
- Přednášející:
- Tomáš Funda, Lenka Hanáková, Pavel Smrčka, Tomáš Veselý
- Cvičící:
- Tomáš Funda, Lenka Hanáková, Pavel Smrčka, Tomáš Veselý
- Předmět zajišťuje:
- katedra informačních a komunikačních technologií v lékařství
- Anotace:
-
Cílem předmětu je seznámit s praktickými základy algoritmizace se zaměřením na oblast biomedicínského inženýrství. Osvojení základních programátorských technik, nezbytných pro pochopení vnitřního fungování moderních softwarových systémů. Důraz je kladen na praktickou a samostatnou aplikaci nejpoužívanějších algoritmů, bezprostředně využitelných v biomedicínském inženýrství. Vstupní požadavky předmětu jsou znalost matematiky a logiky na středoškolské úrovni. Student získá následující výstupní znalosti, dovednosti, schopnosti a kompetence: student zvládne specifikaci algoritmické úlohy, bude schopen provést její analýzu, dekompozici metodou top-down a navrhnout, implementovat a odladit jednoduché řešení v jazyce ISO C resp. C++. Osvojí si základní datové a řídicí struktury, zejména výrazy, operátory, přiřazení, elementární i strukturované datové typy, podmínky, cykly, realizaci datových vstupů a výstupů. Bude chápat paradigma strukturovaného programování a znát vybrané základní algoritmy.
- Požadavky:
-
Povinná účast na cvičeních, realizace průběžných úloh s minimálním ziskem 20 bodů (maximum 40), absolvování testů s celkovým minimálním ziskem 30 bodů (maximum 60). Celkové hodnocení: 50-59 bodů = E (3), 60-69 bodů = D (2.5), 70-79 bodů = C (2), 80-89 bodů = B (1.5), 90-100 bodů = A (1)
- Osnova přednášek:
-
Osnova přednášek:
1. Algoritmus: intuitivní zavedení pojmu, vymezující vlastnosti. Způsoby zápisu algoritmu. Etapy řešení problému, metoda top-down. Základní datové a řídicí struktury, datové typy, výrazy a operátory, složené příkazy.
2. Pole proměnných, vektory, matice. Logická proměnná, podmíněný příkaz. Větvení, cykly (indukční, iterační).
3. Fáze vývoje programů v jazyce C. Výrazy, operátory, přiřazení. Data - typy, proměnné, deklarace.
4.. Řídicí struktury - příkazy: výrazový příkaz, blok, podmíněný příkaz, přepínač, příkazy cyklu, příkaz skoku.
5. Odvozené datové typy - struktura, sjednocení, ukazatel, pole. Uživatelem definované typy. Podprogramy.
6. Řízení preprocesoru jazyka C: vkládání souborů, expanze maker, podmíněný překlad. Debugger. Práce se soubory.
7. Dynamické přidělování paměti, ukazatele na složené datové typy.
8. Úvod do 2D vektorové grafiky - pojmy. Vektorová a rastrová grafika, přehled knihoven pro práci s 2D grafikou.
9. Grafické uživatelské rozhraní (GUI). Událostmi řízené programování. Základy tvorby GUI v GTK+.
10. Numerické algoritmy I. Aproximace metodou nejmenších čtverců. Numerická derivace a integrace.
11. Numerické algoritmy II. Algebraické a transcendentní rovnice, iterační metody.
12. Úvod do třídění a vyhledávání - vlastnosti metod, princip a srovnání základních algoritmů.
13. Úvod do objektově orientovaného programování (OOP) v jazyce C++.
14. Rekurzivní a iterační algoritmy, vzájemná konverze. Posuzování kvality algoritmu. Funkce časové náročnosti algoritmu, asymptotická složitost.
- Osnova cvičení:
-
Osnova cvičení:
1. Slovní a grafický zápis algoritmů, základy syntaxe jazyka C - proměnná, data, výraz, přiřazovací příkaz, vstup a výstup.
2. Rozhodování, podmínky, větvení programu. Využití relačních operátorů a logických spojek.
3. Typizované cykly: s podmínkou před tělem, za tělem, s pevným počtem opakování.
4. Jednorozměrná a dvourozměrná pole, struktury.
5. Ukazatele. Dynamické přidělování paměti.
5. Tvorba podprogramů: uživatelem definované funkce, ukázky předávání parametrů hodnotou a ukazatelem.
6 Praktické základy práce se soubory: otevírání, zavírání, načítání a zápis strukturovaných dat.
7. Využití stávajícího kódu v projektu - vlastní tvorba a praktické využití knihoven v jazyce C.
8. Kontrolní úloh a jejich vyhodnocení.
9. Ukázka a využití zdrojového kódu knihovny pro základní metody třídění dat.
10. Příklad použití binárního rozhodovacího stromu. Ukázka algoritmů numerické derivace a integrace. Interpolace a aproximace funkcí a experimentálních dat. Metoda nejmenších čtverců.
11. Iterační metody hledání kořenů rovnic - ukázka a srovnání elementárních metod.
12. Ukázky využití služeb operačního systému v aplikačním programu. Tvorba objektově orientovaného programu v C++, vlastní definice a použití třídy.
13. Ukázka událostmi řízeného programu s grafickým uživatelským rozhraním sestaveným pomocí knihovny GTK.
14. Kontrolní úloh a jejich vyhodnocení, udělení zápočtu.
- Cíle studia:
- Studijní materiály:
-
Povinná literatura:
[1] PROKOP, Jiří. Algoritmy v jazyku C a C++. 3., aktualizované a rozšířené vydání. Praha: Grada, 2015. ISBN 978-80-247-5467-3.
[2] VIRIUS, Miroslav. Programovací jazyk C ++. 1. díl. V Praze: České vysoké učení technické v Praze, 2016. ISBN 978-80-01-05961-6.
[3] VIRIUS, Miroslav. Programovací jazyk C ++. 2. díl. V Praze: České vysoké učení technické v Praze, 2016. ISBN 978-80-01-06050-6.
[4] VIRIUS, Miroslav. Programovací jazyk C++. 3. díl. V Praze: České vysoké učení technické, 2017. ISBN 978-80-01-06089-6.
Doporučená literatura:
[1] VIRIUS, Miroslav. Programování v C++: od základů k profesionálnímu použití. Praha: Grada Publishing, 2018. ISBN 978-80-271-0502-1.
[2] SEDGEWICK, Robert. Algoritmy v C. Praha: SoftPress, 2003. ISBN 80-864-9756-9.
[3] WRÓBLEWSKI, Piotr. Algoritmy: datové struktury a programovací techniky. Přeložil Marek MICHÁLEK, přeložil Bogdan KISZKA. Brno: Computer Press, 2004. ISBN 80-251-0343-9.
[4] HEROUT, Pavel. Učebnice jazyka C. 6. vyd. České Budějovice: Kopp, 2009. ISBN 978-80-7232-383-8.
Studijní pomůcky:
Ukázkové příklady dostupné na stránkách předmětu a v Mooodlu.
- Poznámka:
- Rozvrh na zimní semestr 2024/2025:
-
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Po Út St Čt Pá - Rozvrh na letní semestr 2024/2025:
- Rozvrh není připraven
- Předmět je součástí následujících studijních plánů:
-
- Bakalářská studijní specializace Biomedicínská informatika (povinný předmět)
- Bakalářská studijní specializace Informační a komunikační technologie (povinný předmět)
- Bakalářský studijní program Informatika a kybernetika ve zdravotnictví - společný první ročník (povinný předmět)
- Bakalářská studijní specializace Biomedicínská informatika (povinný předmět)
- Bakalářská studijní specializace Informační a komunikační technologie (povinný předmět)