Detail předmětu

Seminář C++

FEKT-BSCPAk. rok: 2018/2019

Nejprve jsou probrány základy programování v jazyce C. Následně student získá na jednoduchém algoritmu dovednosti jazyka C++ a ucelený přehled vlastností jazyka C++ podle normy ISO. Tím jsou zejména vlastnosti objektů, tříd, operátorů, dědičnost, polymorfismus, přetěžování, šablon funkcí a tříd, obsluha výjimek a jejich použití. Naučí se využívat standardních knihoven STL.

Jazyk výuky

čeština

Počet kreditů

4

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

Absolvent předmětu je schopen:
- analyzovat problém a formulovat algoritmus matematického modelu
- navrhnout algoritmus a efektivně jej implementovat tak, že je výsledný kód pro použitý operační systém velmi výkonný a stabilní
- sestavit a aplikovat v jednoduchém textovém prostředí algoritmus za minimálních požadavků na IT hardware
- znát a aplikovat vlastností objektově orientovaného přístupu
- ovládat objektový přístup k sestavení aplikace
- posoudit, navrhnout a aplikovat nástroje C++ (objekty, třídy, operátory, dědičnost, polymorfismus, přetěžování) využít šablon funkcí a tříd, obsluhovat výjimky, používat standardních knihoven STL

Prerekvizity

Student, který si zapíše předmět, by měl být schopen zvládat základní principy algoritmizace, vysvětlit vlastnosti a pracovat v událostmi řízeném operačním systému. Je požadovaná znalost základních dovedností IT v systémech s API, zvládnutí některých překladačů a vývojových prostředí pro kompilaci zdrojových textů, například Microsoft Visual C++, Borland C++ Builder atp. a znalost procesu kompilace.

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

Metody vyučování závisejí na způsobu výuky a jsou popsány článkem 7 Studijního a zkušebního řádu VUT.
Pro zvládnutí objektově orientovaného programování a způsobu použití jednotlivých nástrojů je výuka členěna na teoretické objasnění problematiky a jeho následné procvičení na jednoduchých algoritmech.
Přednáška a cvičení proto následují v rozvrhu bezprostředně za sebou. V procvičení na počítačích je student individuálně veden v rámci bodu osnovy k posouzení vhodnosti použití prvku objektového programování v algoritmu, návrhu jeho zakomponování ve zdrojovém textu. Zdrojový text samostatně analyzuje, vyhledá a napraví chyby. Algoritmus samostatně testuje, během cvičení jej modifikuje a získává dovednosti z oblasti variability použitých nástrojů objektového způsobu událostmi řízeného programování. Na konci lekce je samostatně schopen vysvětlit každou položku zdrojového textu a diskutovat nad výhodami a nevýhodami algoritmu, je schopen je samostatně doplnit a tvůrčím způsobem modifikovat.

Způsob a kritéria hodnocení

Během každého bloku výuky je student hodnocen:
- za sestavení, odladění a funkčnost algoritmu s prvky objektově orientovaného přístupu programování podle aktuálního tématu (0-5 bodů)
- za aktivní účast v počítačovém cvičení (ateliéru)
Dvakrát za výukové období (semestr) odevzdá samostatně zpracovaný příklad algoritmu s aplikovanými prvky a nástroji objektově orientovaného přístupu programování. (0-25 bodů)
Vyučující hodnotí porozumění využití nástrojů, správnému zařazení v algoritmu a v prvcích API, aplikační potenciál zpracování algoritmu, kvalitu vnoření algoritmu do událostmi řízeného systému jako nadřazeného celku.

Osnovy výuky

1. Základy strukturovaného programování v jazyce C, datové typy, funkce, podmínky, cykly.
2. Dynamická alokace paměti, vícerozměrná pole, pointery, vracení hodnoty parametrem.
3. Vlastnosti jazyka C/C++, směrnice ANSI, objektově orientované programování, algoritmy.
4. Klíčová slova C++, třídy, členské proměnné.
5. Členské funkce-metody, ukazatel this, agregáty, oblasti platnosti a dosažitelnosti identifikátorů.
6. Prostory jmen, paměťové třídy, objekty.
7. Přiřazování objektů, předávání a vracení objektů funkcím.
8. Přehled operátorů, popis a užití operátorů.
9. Přetěžování operátorů.
10. Dědičnost, přístupy v dědičnosti, polymorfismus.
11. Přetěžování konstruktorů, anachronismus přetěžování, přetěžování a nejednoznačnost.
12. Šablony funkcí a tříd, parametry šablon, šablony objektových typů, obsluha výjimek.
13. Knihovny STL a jejich aplikace.

Učební cíle

Cílem předmětu je na řešených příkladech algoritmizace naučit studenty používání základních nástrojů objektově orientovaného přístupu v jazyce C++ a naučit je základy generického programování s využitím šablon.

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

Obě části výuky - přednáška, cvičení (ateliéry) jsou povinné. Po řádné omluvě a dohodě s vyučujícím je možné zameškanou výuku nahradit, obvykle v zápočtovém týdnu.

Základní literatura

Booch, G.: Object-Oriented Design with applications, 2nd edition, The Benjamin/Cummings Publishing Company 1994 (EN)
Eckel, B.: Myslíme v jazyku C++, GRADA, 2000 (CS)
Herout, P. Učebnice jazyka C, Koop, 6. vydání, 2009. (CS)
ISO: Programming Language C++, WG21/N1043 Draft Proposed International Standard, 1996 (EN)
ISO: Programming languages - C++, International Standard ISO/IEC 14882, 1988 (EN)
Stroustrup, B.: The C++ programming language, special edition, Addison-Wesley, 2000 (EN)
Stroustrup, B.: The C++ programming language, third edition, Addison-Wesley, 1997 (EN)

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

  • Program EEKR-B bakalářský

    obor B-TLI , 2 ročník, letní semestr, volitelný mimooborový

  • Program AUDIO-J bakalářský

    obor J-AUD , 1 ročník, letní semestr, volitelný mimooborový
    obor J-AUD , 2 ročník, letní semestr, volitelný mimooborový
    obor J-AUD , 3 ročník, letní semestr, volitelný mimooborový

  • Program AUDIO-P magisterský navazující

    obor P-AUD , 1 ročník, letní semestr, volitelný mimooborový
    obor P-AUD , 2 ročník, letní semestr, volitelný mimooborový

  • Program IBEP-T bakalářský

    obor T-IBP , 2 ročník, letní semestr, volitelný oborový
    obor T-IBP , 3 ročník, letní semestr, volitelný oborový

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

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

Typ (způsob) výuky

 

Cvičení na počítači

26 hod., povinná

Vyučující / Lektor

Projekt

13 hod., povinná

Vyučující / Lektor