Detail předmětu
Počítače a programování 2
FEKT-BPC2AAk. rok: 2018/2019
Předmět je zaměřen na získání základních znalostí programovacího jazyka C a programátorských zkušeností.
Získané znalosti: základy jazyka C, standardní knihovny jazyka, mechanismus správy paměti v jazyce C a ukazatele, složené datové typy jazyka, práce se soubory, návrh vlastních knihoven jazyka, implementace základních algoritmů, programovací styly, kultura správy zdrojových souborů. Seznámení s testováním a hodnocením bezpečnosti programu. Rozšíření a odlišnosti jazyka C pro embedded zařízení, normy jazyka: C99, C1X.
Jazyk výuky
Počet kreditů
Garant předmětu
Zajišťuje ústav
Výsledky učení předmětu
- provést rozbor úlohy pomocí vývojového diagramu;
- vyjmenovat základní klíčová slova a operátory a umět je použít (vytvořit příklad a vysvětlit jejich základní vlastnosti)
- správně určit datový typ pro daný typ výpočtu (základní datové typy, typ ukazatel na datový typ, a složený datový typ);
- pracovat s dynamicky alokovanou pamětí (získání a uvolnění paměti, manipulace s daty v alokované paměti);
- pracovat se standardními vstupy a výstupy;
- pracovat se soubory;
- využívat základní knihovny jazyka C;
- napsat jednoduchý program pomocí funkcí;
- umí základní algoritmy třídění, vyhledávání, lineární seznamy;
- orientovat se v cizích zdrojových textech, připsat část kódu.
Prerekvizity
Plánované vzdělávací činnosti a výukové metody
Způsob a kritéria hodnocení
Studenti získají až 90 bodů ze tří testů, které proběhnou v rámci semestru, během cvičení. Každý z testů bude obsahovat příklady, které budou ověřovat znalosti probrané látky z přednášek a cvičení. V rámci testu se bude hodnotit rozsah splnění úkolu (max. 30b). Úkol bude vždy reprezentovat úprava a rozšíření programů (před)zpracovaných v rámci domácí přípravy či předchozích cvičení.
(Veškeré bodované aktivity probíhají během semestru a nekoná se tedy opravný termín).
Osnovy výuky
2. Algoritmy - rozbor úlohy, bloková schémata, volba proměnných. Rekurzivní a nerekurzivní alboritmy. Součásti programu a jeho tvorba. Překlad. Optimalizace. Standardní hlavičkový soubor math.h.
3. Základní datové typy a jejich vlastnosti. ADT. Standardní a formátovaný vstup a výstup. Standardní hlavičkový soubor ctype.h. Práce se soubory.
4. Lineární seznamy, stromy - implementace a využití. Složené datové typy - struktury, uniony. Přístupy k proměnným prvku a přes ukazatel. Pojmy priorita a asociativita operátorů.
5. Bitové operace. Pole jako datový typ - typedef. Ukazatel jako datový typ. Využiti ukazatele jako alias na existující na proměnnou. Pole a ukazatele, ukazatelová aritmetika. Bitové pole jako C datový typ.
6. Stavové automaty. Definice výčtového typu - enum.
7. Grafy. Ukazatel jako parametr a návratová hodnota funkce. Konverze.
8. Algoritmy pro třídění. Dynamická alokace - stdlib.h. Vícerozměrná pole. Pole ukazatelů. Ukazatel na funkce.
9. Prohledávání. Řetězce, zpracování řetězců, práci s řetězci. string.h. Životnost a viditelnost automatických, statických a dynamických proměnných.
10. Zpracování výrazů.
11. Náhodná čísla. Maticové výpočty. Inline funkce. Lineární seznamy, binární stromy.
12. Geometrické a numerické algoritmy. Regrese. Bool, knihovna stdbool.h. Datový typ complex. Literály - pole, struktury.
13. Modifikátory proměnných - const, volatile, restrict. Programovací styly, defenzivní programování. Kultura programování. Nástroje pro dokumentaci a zpravování kódu.
Dotazy. ...
Obsah cvičení: praktické procvičení látky probrané na přednáškách.
Učební cíle
Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky
Základní literatura
Kernigham, B.W. Richie, D.M.: C Programming Language, Prentice Hall, 1988, ISBN 0-13-110362-8 (EN)
Kernigham, B.W. Richie, D.M (Virius,M.): Programovací jazyk C. Brno. Computer Press, 2006. ISBN 80-251-0897-X (CS)
RICHTER, M., PETYOVSKÝ, P., HORÁK, K., KALOVÁ, I. elektronicke texty Prakticke programovani v cpp SL. Brno: 2004. (CS)
Doporučená literatura
PROKOP, J. Algoritmy v jazyku C a C++. Praha: Grada Publishing, 2008 (CS)
Zařazení předmětu ve studijních plánech
Typ (způsob) výuky
Přednáška
Vyučující / Lektor
Osnova
2. Algoritmy - rozbor úlohy, bloková schémata, volba proměnných. Rekurzivní a nerekurzivní alboritmy. Součásti programu a jeho tvorba. Překlad. Optimalizace. Standardní hlavičkový soubor math.h.
3. Základní datové typy a jejich vlastnosti. ADT. Standardní a formátovaný vstup a výstup. Standardní hlavičkový soubor ctype.h. Práce se soubory.
4. Lineární seznamy, stromy - implementace a využití. Složené datové typy - struktury, uniony. Přístupy k proměnným prvku a přes ukazatel. Pojmy priorita a asociativita operátorů.
5. Bitové operace. Pole jako datový typ - typedef. Ukazatel jako datový typ. Využiti ukazatele jako alias na existující na proměnnou. Pole a ukazatele, ukazatelová aritmetika. Bitové pole jako C datový typ.
6. Stavové automaty. Definice výčtového typu - enum.
7. Grafy. Ukazatel jako parametr a návratová hodnota funkce. Konverze.
8. Algoritmy pro třídění. Dynamická alokace - stdlib.h. Vícerozměrná pole. Pole ukazatelů. Ukazatel na funkce.
9. Prohledávání. Řetězce, zpracování řetězců, práci s řetězci. string.h. Životnost a viditelnost automatických, statických a dynamických proměnných.
10. Zpracování výrazů.
11. Náhodná čísla. Maticové výpočty. Inline funkce. Lineární seznamy, binární stromy.
12. Geometrické a numerické algoritmy. Regrese. Bool, knihovna stdbool.h. Datový typ complex. Literály - pole, struktury.
13. Modifikátory proměnných - const, volatile, restrict. Programovací styly, defenzivní programování. Kultura programování. Nástroje pro dokumentaci a zpravování kódu.
Dotazy. ...
Obsah cvičení: praktické procvičení látky probrané na přednáškách.
Cvičení na počítači
Vyučující / Lektor
Osnova
Obsah cvičení: praktické procvičení látky probrané na přednáškách.