BPPC – praktické programování v C++
Náplň cvičení 2017
Důležité
přednášky pro tvorbu DU/projektu – všechny.
Mimořádně
důležité přednášky: Obecný popis objektů (tvorba zadání), Rozbor
projektu.
!!! Stránky jsou ve vývoji !!!
Cvičení
upravené pro Zimní semestr 2017/18: 1-8
Týden |
Typ příkladu |
náplň |
1 |
úvod |
Organizace cvičení - cvičící, laboratoř, bezpečnost, plán cvičení, bodování, páteční cvičení oborného základu |
Cvičení |
Vstupní test – opakování jazyka C – konzultace výsledků |
|
Cvičení |
Práce se soubory, zjištění statistiky znaků v souboru |
|
Příklad |
Jednoduchá grafika – (načtení dat, grafický výstup, cykly) |
|
2 |
Cvičení |
Kontrola dokončení příkladu z minulého cvičení. |
Cvičení |
Stavový automat – vypuštění komentářů |
|
Příklad |
Vytvořte interpret jazyka Brainfuck |
|
3 |
Cvičení |
Procvičení neobjektových vlastností (tisk, new, delete, výjimky, reference) |
Příklad 1 |
Prostudujte a doplňte funkci pro morseovku tak aby byla funkční (převodní tabulka je na konci souboru, nutno rozdělit cpp a h soubory) |
|
Příklad 2 |
Binární strom - morseovka |
|
4 |
Cvičení |
Příklad pro seznámení se s prací pomocí Reference – práce s prvky v paměti, předávání proměnných do funkcí a z funkcí pomocí reference. |
Cvičení |
Procvičení neobjektových vlastností 2 (reference, přetěžování funkcí, namespace) |
|
DU/Projekt |
Zpracujte
2D pole podle zadání: V dalším cvičení bude zadáno rozšíření, provedena konzultace s ohledem na znalosti spadající do dané kategorie. Na základě konzultace budou uděleny body. |
|
5 |
Projekt |
Kontrola dokončení příkladů z minulých cvičení. 2D pole rozšíření (reference, const, dokončení včetně funkcí „pro pokročilé“) |
Cvičení |
||
Cvičení |
Dokončení cvičení z minula - neobjektových vlastností 2 |
|
Projekt/DU |
Projekt je realizace variací na adt pomocí lineárního seznamu.
|
|
6 |
Projekt |
Vytvoření tří- nebo čtyřčlenných skupin, které budou na projektu pracovat společně Úvod k projektu – do příště vytvořit skupiny po třech studentech, |
Cvičení |
nástroj pro dokumentování projektů Doxygen |
|
Cvičení |
|
|
7 |
Cvičení |
Seznámení se základní třídou projektu CValue a prací s ní. Projekt 2D pole jako třída a dokumentace – založení třídy a základní komentář v Doxygen |
Cvičení |
Ukázky tříd komplex a string |
|
Projekt |
Volba
skupin a názvů tříd pro dané skupiny. Nahlášení
zvoleného tématu projektů a spolupracovníků. |
|
8 |
Cvičení |
Práce na třídách projektu – seznámení se třídou CPair a načítáním dat. Pokračování
2D pole jako třída – konstruktory, statické metody a datové
členy Template – předělejte 2D pole na obecný typ pomocí šablon |
DU/prj |
návod
k práci s svn pro odevzdávání
projektů |
|
9 |
Cvičení |
Práce na třídě projektu CHashMap – rozbor a tvorba jejích metod. Pokračování 2D pole jako třída - operátory |
DU / prj |
Rozdělení
prací na projektu mezi členy týmu (do zadání napište monogramy,
kdo bude danou metodu dělat). Pokud je to možné, každý z týmu by
měl dělat část (=metodu) z daného bodu zadání.
|
|
10 |
Cvičení |
Dokončení operátorů |
Cvičení |
Vstupy a výstupy, prostory jmen - implementujte vstupy a výstupy pomocí streamů (na konzolu i do souboru). |
|
DU / prj |
Odevzdání hlavičky |
|
11 |
Cvičení |
Vytvořte třídu CMatice, která zdědí základní vlastnosti ze
třídy pro obecné 2D pole. |
DU / prj |
||
Příklad 1 |
dědění seznamte se s děděním. Připravte rozšíření tříd na dědění a využití virtuálních metod (vlastnosti bázové třídy), přepište |
|
Příklad 2 |
||
12 |
Cvičení |
ze základní třídy vytvořte děděním matici pro znaky (libovolný text, piškvorky ...). V základní třídě vytvořte virtuální metodu tisk a předveďte, že když použijete společně třídy matice (reálná čísla) a matici se znaky, je možné pomocí metody tisk tisknout obě, aniž bychom znali typ matice. |
Cvičení |
Volání konstruktorů destruktorů, virtuální metody - příklad |
|
DU / prj |
Práce na zdrojích – program demonstrující činnost třídy, konzultace, hodnocení hlavičky Tvorba dokumentace. Dokončení zdrojové části, odladění chyb. |
|
Příklad 1 |
||
Příklad 2 |
Dodělání |
|
13 |
Cvičení |
Obhajoba projektů |
DU / prj |
Bližší informace k odevzdání u cvičícího na disku R. Další aktualizace k odevzdání se budou objevovat na základě dotazů. Odevzdání dokumentace. Odevzdání prj – zdroje. Odevzdává se společně ve zdrojových textech s dokumentací generovanou pomocí Doxygen |
|
Ukončení |
Body ze cvičení |
Další náměty pro procvičování:
Rozdělení třídy elementu na bázovou třídu a třídu zděděnou/specializovanou (vytvořit alespoň dvě různé). Pro specializaci využít virtuální funkce. Předvést společnou práci obou (různých) odvozených tříd.
Zjistěte, zda by při tvorbě projektu nepomohla STL, přepracujte (neplatí pro kategorii PRJ!!!)
Implicitní parametry – automaticky doplňované při volání funkcí bez parametrů
Přetěžování funkcí – více stejně pojmenovaných funkcí
Implementujte funkční operátor jako operátor pro přístup k prvkům pole (využijte návrat hodnoty pomocí reference)
Vytvořte projekt a jeho soubory (cpp a h). Hlavičky ošetřete a navrhněte třídy a jejich data. Metody pro nastavení a čtení prvků.Navrhněte vhodné konstruktory a destruktory.
Implementace Checker nebo VLD do 2D pole pro kontrolu paměti
Přemýšlejte o implementaci (způsobu realizace) třídy CPole2D (promyslete také například třídy CKomplex, CString, váš projekt...), zvolte datovou reprezentaci, promyslete vznik a zánik, manipulaci s instancemi třídy z hlediska vnějšího i vnitřního uspořádání. Proveďte návrh třídy kterou budete vypracovávat.
Přepracování 2D pole na třídu. Pole musí umožnit dynamickou změnu rozměrů. (Implementujte (a otestujte) - vhodná data, napište konstruktory (implicitní, kopy, konverzní z int, ze dvou prvků, z řetězce) a destruktor, metody pro čtení, zápis, změnu rozměrů)
„zabalený“ ukazatel – vytvořte třídu (šablony) vhodnou pro práci s dynamickými proměnnými (ukazateli, inicializace, použití ...) tak aby se zlepšila práce s ukazateli při vyvolání výjimek
přepracovat 2D pole na obecný typ pomocí šablon (template)
Šablony ( prostudujte program na výpočet matic realizovaný pomocí šablon, vyzkoušejte si napsat šablony pro jednoduché funkce)
rozšíření 2D pole o statická data a metody, friend funkce, Statická data pro počítání objektů vzniklých a aktuálních. Implementujte statické metody pro tisk statických proměnných. Implementujte nastavení pro nastavení a čtení, proveďte rozdělení do hlavičky a zdrojů. Dále pro svou třídu napište základní funkčnost
Členské a nečlenské „funkce“, alokace paměti
Poslední úpravy 2016-09-21