Course detail

Počítače a programování 2

FEKT-BPC2AAcad. year: 2016/2017

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.

Language of instruction

čeština

Number of ECTS credits

5

Mode of study

Not applicable.

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í.

Co-requisites

Not applicable.

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. Historie a vyvoj prekladacu (MSVC, Borland, GCC, LLVM (clang)). Součásti programu a jeho tvorba. Překlad - preprocesor, překladač, linker.
Optimalizace. Rozdělení na zdrojové a hlavičkové soubory (program ar) #define, makra, ternární operátor. Přehled jazyka a normy. Bitové operace.
2) Algoritmy - bloková schémata, rozbor úlohy, volba proměnných (static, extern...) ... Ukázky algoritmů pro třídění.
3) Standardní a formátovaný vstup a výstup. knihovna ctype.h (isalpha, atoi,itoa ...)
4) Práce se soubory.
5) enum. Stavový diagram. Knihovna math.h.
6) Pole jako datový typ (typedef). Ukazatel jako datový typ. Vyuziti ukazatele jako alias na existujici na proměnnou. (pojem dereference, reference)
7) Ukazatel jako parametr a návratová hodnota funkce. Konverze. Pole a ukazatele, ukazatelová aritmetika.
8) Dynamická alokace (stdlib.h). Vícerozměrná pole. Pole ukazatelů. Ukazatel na funkce.
9) Životnost a viditelnost automatických, statických a dynamických proměnných. Řetězce, knihovny pro práci s řetězci - string.h.
10) Složené datové typy - struktury, uniony. Přístupy k proměnných prvku a přes ukazatel. Priorita operátorů. Bitové pole jako C datový typ.
11) Inline funkce. Lineární seznamy, bin. stromy.
12) C99, C1X: _Bool, knihovna (stdbool.h), datovy typ complex, volne pole, literaly (pole, struktur).
13) Modifikátory proměnných - const, Volatile. Restrict. Opakování. Programovaci styly, defenzivní programování (bezpečnost).Kultura programování (SVN, doxygen),
Dotazy. ...

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

Work placements

Not applicable.

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.

Recommended optional programme components

Not applicable.

Prerequisites and corequisites

Not applicable.

Basic literature

RICHTER, M., PETYOVSKÝ, P., HORÁK, K., KALOVÁ, I. elektronicke texty Prakticke programovani v cpp SL. Brno: 2004. (CS)
Herout,P.: Učebnice jazyka C. Kopp. ISBN: 978-80-7232-383-8 (CS)
Kernigham, B.W. Richie, D.M (Virius,M.): Programovací jazyk C. Brno. Computer Press, 2006. ISBN 80-251-0897-X (CS)
Kernigham, B.W. Richie, D.M.: C Programming Language, Prentice Hall, 1988, ISBN 0-13-110362-8 (EN)

Recommended reading

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)

Classification of course in study plans

  • Programme EEKR-B bakalářský

    branch B-AMT , 1 year of study, letní semester, povinný

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

    branch ET-CZV , 1 year of study, letní semester, povinný

Type of course unit

 

Přednáška

26 hod., optionally

Teacher / Lecturer

Syllabus

1. Algoritmizace (rozšíření základních poznatků z předchozího semestru). Definice úlohy, definice vstupů/výstupů, zápis algoritmu v metajazyku, přepis do programovacího jazyka.
2. Úvod do jazyka C. Základní typy proměnných, odvozené typy, konstanty, pole.
3. Výrazy, aritmetické konverze, aritmetické operátory, operátory posuvů, relační operátory, logické operátory, bitové operátory, přiřazovací operátory, priorita operátorů.
4. Řetězce a jejich operátory, knihovní funkce, standardní knihovna string.h.
5. Příkazy, složený příkaz, příkazy pro větvení, cykly a přenos řízení. Vývojový diagram.
6. Funkce. Deklarace funkce, metody volání funkcí, ošetření událostí, rekurze funkcí.
7. Pokročilé datové typy. Unie, výčtový typ, dynamické proměnné, ukazatel.
8. Objekty. Lexikální elementy, konstanty a řetězce, třídy objektů, typy objektů.
9. Uživatelské rozhraní Microsoft Visual C++ Studio. Grafické komponenty.
10. Algoritmy I. Vyhledání maxima a minima, třídění.
11. Algoritmy II. Práce s poli, maticové výpočty.
12. Algoritmy III. Práce se soubory ve Windows.
13. Algoritmy IV. Databázové systémy. Záznamy, třídění, vyhledávání, statistiky. Propojení databází.

Cvičení na počítači

26 hod., compulsory

Teacher / Lecturer

Syllabus

1. Algoritmizace (rozšíření základních poznatků z předchozího semestru). Definice úlohy, definice vstupů/výstupů, zápis algoritmu v metajazyku, přepis do programovacího jazyka.
2. Úvod do jazyka C. Základní typy proměnných, odvozené typy, konstanty, pole.
3. Výrazy, aritmetické konverze, aritmetické operátory, operátory posuvů, relační operátory, logické operátory, bitové operátory, přiřazovací operátory, priorita operátorů.
4. Řetězce a jejich operátory, knihovní funkce, standardní knihovna string.h.
5. Příkazy, složený příkaz, příkazy pro větvení, cykly a přenos řízení. Vývojový diagram.
6. Funkce. Deklarace funkce, metody volání funkcí, ošetření událostí, rekurze funkcí.
7. Pokročilé datové typy. Unie, výčtový typ, dynamické proměnné, ukazatel.
8. Objekty. Lexikální elementy, konstanty a řetězce, třídy objektů, typy objektů.
9. Uživatelské rozhraní Microsoft Visual C++ Studio. Grafické komponenty.
10. Algoritmy I. Vyhledání maxima a minima, třídění.
11. Algoritmy II. Práce s poli, maticové výpočty.
12. Algoritmy III. Práce se soubory ve Windows.
13. Algoritmy IV. Databázové systémy. Záznamy, třídění, vyhledávání, statistiky. Propojení databází.