BPPC – praktické programování v C++
Náplň cvičení
konzultace jsou v pondělí 12.1.2015 od 10 do 11 a od 14 do 15
konzultace jsou v úterý 6.1.2015 od 9 do 11 a ve středu 7.1.2015 od 13 do 15
!!! Stránky jsou ve vývoji !!!
Cvičení
upravené pro Zimní semestr 2014/15: 1-11
Týden |
Typ příkladu |
náplň |
1 |
úvod |
Organizace cvičení - cvičící, laboratoř, bezpečnost, plán cvičení, bodování |
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í |
2D pole (ukazatele, práce s dynamickou pamětí, alokace, odalokace) |
DU/Projekt |
Vytvoření tříčlenných skupin, které budou na projektu pracovat společně |
|
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í |
2D pole úpravy (namespace, new, struct, výjimky) |
DU/Projekt |
Úvod k projektu – do příště vytvořit skupiny po třech
studentech, |
|
5 |
Projekt |
Nahlášení
zvoleného tématu projektů a spolupracovníků. |
Cvičení |
2D pole rozšíření (reference, const, dokončení včetně funkcí „pro pokročilé“) |
|
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. |
|
|
|
|
6 |
Projekt |
Rekapitulace
názvů tříd pro dané skupiny |
Cvičení |
návod k práci s svn pro odevzdávání projektů |
|
Cvičení |
nástroj pro dokumentování projektů Doxygen |
|
7 |
info |
Příští týden na přednášce by se měl stanovit termín půl-semestrálního testu - předpokládané datum 18.11. Nutno se registrovat v IS!!! |
Projekt |
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í. Projekt vypracováváte doma – na cvičeních se dělá pouze třída 2D pole |
|
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 |
|
8 |
info |
Termín půl-semestrálního testu - předpokládané datum 25.11 v době přednášky. Nutno se registrovat v IS (možná se bude konat ve více učebnách či různých časech). |
DU/prj |
Hodnocení zadání Konzultace hlavičky, vlastní tvorba, srovnání se zadáním |
|
Cvičení |
Pokračování 2D pole jako třída – konstruktory, statické metody a datové členy |
|
9 |
Cvičení |
Pokračování 2D pole jako třída - operátory |
DU / prj |
Tvorba hlavičky |
|
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í |
Template – předělejte 2D pole na obecný typ pomocí šablon |
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. |
|
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í |
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 2015-01-26