450-2079/01 – Základy algoritmizace a programování (ZAP)

Garantující katedraKatedra kybernetiky a biomedicínského inženýrstvíKredity5
Garant předmětudoc. Ing. Michal Prauzek, Ph.D.Garant verze předmětudoc. Ing. Michal Prauzek, Ph.D.
Úroveň studiapregraduální nebo graduálníPovinnostpovinný
Ročník1Semestrletní
Jazyk výukyčeština
Rok zavedení2019/2020Rok zrušení
Určeno pro fakultyFEIUrčeno pro typy studiabakalářské
Výuku zajišťuje
Os. čís.JménoCvičícíPřednášející
PRA132 doc. Ing. Michal Prauzek, Ph.D.
ROZ132 Ing. Jan Rozhon, Ph.D.
VOZ29 prof. Ing. Miroslav Vozňák, Ph.D.
Rozsah výuky pro formy studia
Forma studiaZp.zak.Rozsah
prezenční Klasifikovaný zápočet 2+3
kombinovaná Klasifikovaný zápočet 0+21

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:

HEROUT, P. Učebnice jazyka C. Praha: [Středisko pro podporu studentů se specifickými potřebami ELSA ČVUT], 2015. HARMS, Daryl D. a Kenneth MCDONALD. Začínáme programovat v jazyce Python. 2., opr. vyd. Přeložil Ivo FOŘT, přeložil Lubomír ŠKAPA. Brno: Computer Press, 2008. ISBN 9788025121610. NEWHAM, Cameron. a Bill. ROSENBLATT. Learning the bash Shell. 3rd ed. Sesbastopol, [Calif.]: O'Reilly, c2005. ISBN 0596009658.

Doporučená literatura:

KERNIGHAN, Brian W. a Dennis M. RITCHIE. Programovací jazyk C. Brno: Computer Press, 2006.

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

Kombinovaná forma (platnost od: 2019/2020 zimní semestr)
Název úlohyTyp úlohyMax. počet bodů
(akt. za podúlohy)
Min. počet bodů
Klasifikovaný zápočet Klasifikovaný zápočet 100  51
Rozsah povinné účasti: 80% účast na cvičeních

Zobrazit historii

Výskyt ve studijních plánech

Akademický rokProgramObor/spec.Spec.FormaJazyk výuky Konz. stř.RočníkZLTyp povinnosti
2019/2020 (B0714A060010) Telekomunikační technika P čeština Ostrava 1 povinný stu. plán
2019/2020 (B0714A150001) Řídicí a informační systémy P čeština Ostrava 1 povinný stu. plán
2019/2020 (B0714A150003) Počítačové systémy pro průmysl 21. století P čeština Ostrava 1 povinný stu. plán
2019/2020 (B0714A150001) Řídicí a informační systémy K čeština Ostrava 1 povinný stu. plán
2019/2020 (B0714A060008) Mobilní technologie P čeština Ostrava 1 povinný stu. plán
2019/2020 (B0713A060004) Projektování elektrických systémů a technologií P čeština Ostrava 1 povinný stu. plán
2019/2020 (B0713A060004) Projektování elektrických systémů a technologií K čeština Ostrava 1 povinný stu. plán
2019/2020 (B0714A060010) Telekomunikační technika K čeština Ostrava 1 povinný stu. plán
2019/2020 (B0714A060008) Mobilní technologie K čeština Ostrava 1 povinný stu. plán
2019/2020 (B0713A060005) Elektroenergetika P čeština Ostrava 1 povinný stu. plán
2019/2020 (B0714A060012) Aplikovaná elektronika P čeština Ostrava 1 povinný stu. plán
2019/2020 (B0914A060001) Biomedicínská technika P čeština Ostrava 1 povinný stu. plán
2019/2020 (B0713A060005) Elektroenergetika K čeština Ostrava 1 povinný stu. plán
2019/2020 (B0914A060001) Biomedicínská technika K čeština Ostrava 1 povinný stu. plán
2019/2020 (B0714A060012) Aplikovaná elektronika K čeština Ostrava 1 povinný stu. plán

Výskyt ve speciálních blocích

Název blokuAkademický rokForma studiaJazyk výuky RočníkZLTyp blokuVlastník bloku