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

čeština

Počet kreditů

5

Výsledky učení předmětu

Absolvent předmětu je schopen:
- 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

Absolvování kurzu BPC1 nebo kurzu s podobnou náplní.

Plánované vzdělávací činnosti a výukové metody

Metody vyučování zahrnují přednášky a cvičení na počítači. Předmět využívá www stránky ve spojení s e-learningem (Moodle). Student prokazuje znalosti vypracováním testovacích příkladů na cvičeních.

Způsob a kritéria hodnocení

Studenti získají až 10b na základě aktivity na cvičeních.
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

1. Organizace kurzu. Popis algoritmu. Jednoduché příklady algoritmů. Rozdělení programu na zdrojové a hlavičkové soubory. Symboly preprocesoru, makra s parametry, ternární operátor.
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

Cílem předmětu je na základě výuky jazyka C naučit studenty navrhnout a realizovat program či knihovnu funkcí (návrh datové struktury, volání a vazby funkcí, ladění a testování kódu, kultura programování). Na jednoduchých aplikacích vysvětlit principy algoritmizace a design programu.

Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky

Vymezení kontrolované výuky a způsob jejího provádění stanoví každoročně aktualizovaná vyhláška garanta předmětu.

Základní literatura

Herout,P.: Učebnice jazyka C. Kopp. ISBN: 978-80-7232-383-8 (CS)
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

PECINOVSKÝ, R., VIRIUS, M. Učebnice programování: základy algoritmizace. Praha: Grada Publishing, 1997 (CS)
PROKOP, J. Algoritmy v jazyku C a C++. Praha: Grada Publishing, 2008 (CS)

Zařazení předmětu ve studijních plánech

  • Program EEKR-B bakalářský

    obor B-AMT , 1 ročník, letní semestr, povinný

  • Program EEKR-CZV celoživotní vzdělávání (není studentem)

    obor ET-CZV , 1 ročník, letní semestr, povinný

Typ (způsob) výuky

 

Přednáška

26 hod., nepovinná

Vyučující / Lektor

Osnova

1. Organizace kurzu. Popis algoritmu. Jednoduché příklady algoritmů. Rozdělení programu na zdrojové a hlavičkové soubory. Symboly preprocesoru, makra s parametry, ternární operátor.
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

26 hod., povinná

Vyučující / Lektor

Osnova


Obsah cvičení: praktické procvičení látky probrané na přednáškách.