Home page

BPPC home page

výuka home page



BPPC – praktické programování v C++

Náplň cvičení 2017

náplň přednášek najdete zde





!!! 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í Referenceprá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í:
2D pole (
ukazatele, práce s dynamickou pamětí, alokace, odalokace)
2D pole úpravy
(namespace, new, struct, výjimky)
Oba programy (projekty) budou ve stejném řešení (solution) v prostředí Visual Studio.

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
DU/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í

lineární seznam

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.
Zopakujte si lineární seznam a seznamte se s datovými celky, které pomocí něho budeme realizovat (fronta, zásobník, množina, pole...)
Lineární seznam (fronta, …) bude napsán tak, aby mohl pracovat jak se základními typy (int, double, .., enum...) tak s nově definovanými složenými typy (třídy, struktury).

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

Seznámení se základní třídou projektu CValue a prací s ní. Tvorba vlastních tříd do projektu včetně testů a komentářů v Doxygen. Projděte si rozdíly Doxyfile oproti defaultně vygenerovanému. Vygenerujte si pomocí Doxygen dokumentaci a projděte si její zdrojovou i přeloženou formu. Trasujte projekt CValue a seznamte se se základní strukturou tříd – návaznost kódu v main na definici třídy v jejích zdrojových souborech. Napište a odlaďte své dvě třídy (podle typu vybraného v minulém cvičení).

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ů
základy svn, hesla,

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


konzultace zadání, dokončení formulace zadání

formulace_zadání projektu
Formulace zadání

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í.
Každý z týmu by měl mít v týdnu před odevzdáním alespoň jeden komit (u dalších pokračování projektu cca jeden komit na metodu).
Logy a statistiky v svn.
Konzultace projektu – při problémech uložte aktuální verzi do svn. Poznačte si číslo revize. Do komentáře komitu co nejlépe popište problém. Napište mail cvičícímu se subjektem „svn konzultace cislo_revize“ a názvem skupiny. To je: „svn konzultace 45 st11_fronta “ bez dalšího textu. Pokusíme se podívat a dáme vám vědět.

Odevzdání zadání
Tvorba hlavičkového souboru projektu

Projekt vypracováváte doma – na cvičeních se dělá pouze třída 2D pole

Hodnocení zadání
Nejčastější nedostatky

Konzultace hlavičky, vlastní tvorba, srovnání se zadáním



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.
Pro třídu CMatice vytvořte samostatné h a cpp soubory.
Vyzkoušejte v main, že lze použít jak třídu CMatice (včetně použití jejích metod) i třídu pro 2D pole.
Vyzkoušejte různé způsoby dědění (private, protected, public) a zvolte ten nejvhodnější. Všimněte si rozdílu při přístupu (pro různé typy dědění) k metodám základní třídy 2D pole při jejich použití pro objekty CMatice ve funkci main.
Pokud ve třídě pro 2D pole existují metody, které jsou vhodnější pro matici, potom je přesuňte.
Doplňte třídu CMatice o metody pro sčítání matic a násobení matice konstantou (zleva i zprava).
Napište funkci (operator<<) pro tisk matice.

DU / prj

tvorba zdrojové části, konzultace, checker

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

Vytvoření třídy

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

Virtuální metody

Příklad 2

Dodělání
RTTI

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ý“ ukazatelvytvoř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