Home page

BPPC home page

výuka home page



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

Náplň cvičení 2015

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





!!! Stránky jsou ve vývoji !!!
Cvičení upravené pro Zimní semestr 2015/16: 1

 

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í

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,
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).

5

Projekt
DU/projekt

Nahlášení zvoleného tématu projektů a spolupracovníků.
formulace_zadání projektu

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í Referenceprá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
základy svn, hesla,
doxygen
konzultace zadání, dokončení formulace zadání

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 XX.XX. 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í.
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

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 01.12. v (původní) době přednášky. Nutno se registrovat v IS (může se konat ve více učebnách či různých časech).

DU/prj

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

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




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

Virtuální metody

Příklad 2

Dodělání
RTTI

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ý“ 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 2015-11-09