BPPC – praktické programování v C++
Náplň cvičení 2016
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 2016/17: 1-7
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í |
Svátek / lineární seznam |
DU/Projekt |
|
|
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í |
Procvičení neobjektových vlastností (tisk, new, delete, výjimky, reference) |
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í. |
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í |
2D pole rozšíření (reference, const, dokončení včetně funkcí „pro pokročilé“) |
|
Projekt/DU |
|
|
6 |
Projekt |
|
Cvičení |
Template – předělejte 2D pole na obecný typ pomocí šablon |
|
Cvičení |
nástroj
pro dokumentování projektů Doxygen |
|
7 |
Cvičení |
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 |
|
|
8 |
Cvičení |
Pokračování 2D pole jako třída – konstruktory, statické metody a datové členy |
DU/prj |
|
|
9 |
Cvičení |
Pokračování 2D pole jako třída - operátory |
DU / prj |
|
|
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 |
|
|
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 |
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