450-2079/01 – Základy algoritmizace a programování (ZAP)
Garantující katedra | Katedra kybernetiky a biomedicínského inženýrství | Kredity | 5 |
Garant předmětu | doc. Ing. Michal Prauzek, Ph.D. | Garant verze předmětu | doc. Ing. Michal Prauzek, Ph.D. |
Úroveň studia | pregraduální nebo graduální | Povinnost | povinný |
Ročník | 1 | Semestr | letní |
| | Jazyk výuky | čeština |
Rok zavedení | 2019/2020 | Rok zrušení | |
Určeno pro fakulty | FEI | Určeno pro typy studia | bakalářské |
Cíle předmětu vyjádřené dosaženými dovednostmi a kompetencemi
Cílem předmětu je uvést studenty do základů problematiky algoritmizace a programování a předvést implementaci představených postupů ve vyšších programovacích jazycích. Po absolvování předmětu bude student schopen algoritmizovat základní úlohy a vytvořit programy pro řešení jednoduchých úloh využívajících základní algoritmické konstrukce v obecném vývojovém prostředí. Bude rozumět vztahu mezi některými vlastnostmi prvků architektury počítače a jejich zobrazení v programovacím jazyku C, potřebnými při zpracování úloh využívajících nestandardní periferie. Bude umět analyzovat a algoritmizovat jednoduché problémy s využitím strukturovaného přístupu.
Vyučovací metody
Přednášky
Individuální konzultace
Cvičení (v učebně)
Experimentální práce v laboratoři
Projekt
Anotace
Předmět je úvodním kurzem do problematiky algoritmizace a programování využitelný ve všech elektrotechnických oborech vzhledem k široké aplikovatelnosti jazyka C. Studenti jsou seznámeni se základními hardwarovými prvky počítače a jejich vztahem k vybraným programovým konstrukcím. Probírané algoritmy a datové struktury jsou demonstrovány, přičemž jsou studenti vedeni k strukturovanému přístupu při algoritmizaci řešených úloh. Důraz je kladen na praktickou implementaci algoritmů a datových struktur. V druhé části kurzu je studentům představeno řešení běžných úloh ve vyšších programovacích jazycích s důrazem na rychlou prototypizaci a vývoj a řešení praktických úloh pomocí funkcionálního i objektového přístupu.
Povinná literatura:
Doporučená literatura:
KERNIGHAN, Brian W. a Dennis M. RITCHIE. Programovací jazyk C. Brno: Computer Press, 2006.
Další studijní materiály
Forma způsobu ověření studijních výsledků a další požadavky na studenta
Průběžná kontrola studia:
písemka
samostatný projekt
Podmínky udělení zápočtu:
Student je klasifikován na základě testů a samostatných projektů. Zápočet od 14.týdne. Celkové hodnocení 51 - 100 bodů dle studijního řádu.
E-learning
Další požadavky na studenta
Žádné další požadavky na studenta nejsou kladeny.
Prerekvizity
Předmět nemá žádné prerekvizity.
Korekvizity
Předmět nemá žádné korekvizity.
Osnova předmětu
Přednášky:
1. Úvod do algoritmizace a programování, motivace k učivu, algoritmus, architektura počítače, kompilační proces.
2. Elektronická paměť, typy paměti, proměnné, konstanty, jednoduché datové typy, základní operátory, formátovaný vstup a výstup.
3. Řídicí struktury: booleovské výraz, operátor čárky, podmíněný výraz, podmínky, cykly, přepínač, příkaz skoku.
4. Funkce: deklarace a definice funkce, parametry funkce, oblast platnosti identifikátorů, návratová hodnota funkce.
5. Paměťové třídy, typové modifikátory, typová konverze, preprocesor: makra, vkládání souboru, podmíněný překlad, oddělený překlad.
6. Ukazatele: ukazatele a funkce, adresní aritmetika, předávání parametru hodnotou a odkazem.
7. Jednorozměrná pole, vícerozměrná pole, řetězce, struktury, uniony, výčtové typy, operátor typedef, bitové operace.
8. Seznámení se skriptovacím přístupem k řešení algoritmizačních úloh. Programové prostředí - Bash, Python.
9. Struktura programu, funkce, konzolový výstup ve skriptovacím prostředí Bash a jazyce Python.
10. Pokročilé datové typy ve skriptovacích prostředích, jejich využití a výhody, optimalizace, knihovny a práce s nimi.
11. Implementace cyklů, podmínek a rekurzí ve skriptovacím prostředí jazyka Python.
12. Práce se souborovým systémem, hledání, práva, zápis a čtení. Formát JSON.
13. Stručný základ objektového přístupu k programování.
14. Diskrétní jevy a jejich simulace. Dokumentace kódu.
Laboratorní cvičení:
1. Jazyk C: programovací prostředí
2. Jazyk C: definice proměnné, jednoduché datové typy, formátovaný vstup a výstup.
3. Jazyk C: booleovské výraz, operátor čárky, podmíněný výraz, podmínky, cykly, přepínač, příkaz skoku.
4. Jazyk C: deklarace a definice funkce, parametry funkce, oblast platnosti identifikátorů, návratová hodnota funkce.
5. Jazyk C: paměťové třídy, typové modifikátory, typová konverze, preprocesor: makra, vkládání souboru, podmíněný překlad, oddělený překlad.
6. Jazyk C: ukazatele, ukazatele a funkce, adresní aritmetika, předávání parametru hodnotou a odkazem.
7. Jazyk C: jednorozměrná pole, vícerozměrná pole, řetězce, struktury, uniony, výčtové typy, operátor typedef, bitové operace.
8. Shell Bash: systémové utility a jejich využití v jednoduchých skriptech.
9. Shell Bash: řetězení utilit, práce s proměnnými, definice funkce, výstup na konzoli.
10. Jazyk Python: srovnání s Bash přístupem při definici jednoduchých skriptů. Práce s proměnnými výstup na konzoli. Formální definice struktury skriptu, formátování výstupu, funkce a jejich řetězení.
11. Jazyk Python: práce se slovníky, numerické knihovny a výpočty s nimi, ostatní běžně využívané knihovny v jazyce Python, podmínečné větvení a využití datových typů v podmínkách.
12. Jazyk Python: cykly a rekurze a jejich využití pro řešení numerických výpočtů a simulací, práce se souborovým systémem, formát JSON.
13. Jazyk Python: třídy a dědičnost, praktické příklady využití objektů ve skriptování.
14. Jazyk Python: úvod do simulací diskrétních jevů.
Podmínky absolvování předmětu
Výskyt ve studijních plánech
Výskyt ve speciálních blocích
Hodnocení Výuky