BPPC – praktické programování v C++
Náplň cvičení
Během existence kurzu vzniklo několik sad příkladů podle rozsahu výuky a znalostí studentů. Příklady byly vytvořeny většinou tak, aby se každým z nich procvičila určitá vlastnost jazyka. Jelikož si studenti ztěžovali, že jsou málo praktické, došlo k jejich spojení do projektu, který se bude postupně tvořit v celém semestru. Původní příklady zůstávají součástí cvičení jako příprava. Jsou vhodné pro ty, kterým vyhovují příklady jednodušší, týkající se jediného tématu. Příklady v tabulce označené jako Př. X jsou tedy tyto samostatné příklady, které se vztahují k danému cvičení patřícího do většího celku. Je možné je použít jako příklady na domácí cvičení k procvičení jednotlivých vlastností.
Hlavní částí cvičení je projekt vypracovávaný v rámci cvičení – Projekt/ cvičení. Jedná se o koncept jediného rozsáhlého projektu, který se řeší v jednotlivých krocích (rozložených do cvičení). To samozřejmě vyžaduje neustálou práci a dokončování práce ze cvičení. Proto je na cvičení nutná příprava – připomenout si minulou práci (dokončit nedodělky a odladit chyby), přečíst si aktuální zadání a snažit se ho pochopit. Cvičení bude začínat krátkým rozborem úlohy a odpovědí na dotazy (ohledně minulé práce a aktuálního zadání).
Poslední částí je projekt, který bude vypracováván doma – Projekt DU. Tento projekt bude možné konzultovat v rámci cvičení. Bude odevzdáván po částech, které se budou hodnotit samostatně. Výsledný součet bodů bude hodnocením cvičení (bude oznámeno společně po odevzdání poslední části projektu). Na tomto projektu by se nemělo pracovat během cvičení. Příklady ze cvičení budou mít přednost i vůči konzultacím projektu.
Z časových a prostorových důvodů
není možné sledovat práci jednotlivých studentů. Proto nemůžeme
splnit přání studentů, abychom je do práce více nutili. Je potřebná
samostatná práce studenta. V případě, že nedokážete najít správné
řešení (do cca 5-10 minut), kontaktujte cvičícího. Snažte se pokládat
co nejkonkrétnější dotazy (a ne „mě to nefunguje“).
Při řešení příkladů by se mělo
postupovat:
- přečíst zadání (pokud je to nutné potom přečíst i
nápovědu)
- promyslet si řešení a stručně si ho načrtnout na papír
- naprogramovat volání funkcí a jejich těl
- vytvořit vzorová
volání funkcí na prozkoušení správnosti řešení (v případě, že to
nefunguje, použít debuger (trasování programu a zobrazování hodnot),
vytvořit testovací vstupní a výstupní (srovnávací) soubory pro
automatickou kontrolu algoritmů po úpravách
!!! Stránky jsou ve vývoji !!!
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í |
Postup sestavení programu v prostředí MS Visual C (preprocesor, kompilátor, linker, zdrojové a hlavičkové soubory, spustitelné a knihovní soubory (statické a dynamické)). Základní orientace v prostředí - MS Visual C++ |
|
Cvičení |
Cykly, funkce, předávání proměnných – násobilka (kroky zadání 0 - 4) |
|
Příklad 1 |
Přesměrování výstupu (v programu, na konzole) Formátovaný tisk – tabulka násobilky (cykly, tisk na konzolu) |
|
Příklad 2 |
Formátovaný tisk - cosinus |
|
Příklad 3 |
Jednoduchá grafika – (načtení dat, grafický výstup, cykly) |
|
Poznámka |
Na přednášce (patrně ve druhém týdnu) bude probrána tvorba projektu a návaznosti jednotlivých součástí. |
|
2 |
Cvičení |
Kontrola minulého cvičení. Pokračování: parametry programu (main), ukládání dat – násobilka (kroky zadání 5 - 7) |
Cvičení |
Formátovaný vstup – načítání dat z disku a jejich zpracování |
|
Příklad 1 |
Makra – použití #define bez a s parametry |
|
DU |
bitové operace – práce s bity |
|
Příklad 3 |
Vytvořte interpret jazyka Brainfuck |
|
3 |
Cvičení |
Práce s ukazateli - ukazatel jako parametr funkce |
Cvičení |
2D pole (ukazatele, práce s dynamickou pamětí, alokace, odalokace) |
|
Příklad 1 |
Bitové operace – zjištění velikosti typů, rotace, maskování |
|
DU/Projekt DU |
zadání témat projektu – výběr do příště Práce s řetězci (dynamické 1D pole) – vytvoření, rušení, délka, spojení, vložení na danou pozici do jiného, srovnání, vyhledávání podstringu ... |
|
Příklad 3 |
Komentáře – stavový automat včetně části „pro pokročilé“ |
|
4 |
Cvičení |
2D pole – struktury, rozšíření |
Cvičení |
návod k instalaci svn pro odevzdávání projektů |
|
Projekt DU |
Nahlášení
zvoleného tématu projektů a spolupracovníků. 1D pole – třídění, třídění pomocí indexace – četnost znaků |
|
Příklad 3 |
Binární strom - morseovka |
|
5 |
Cvičení |
Jednosměrně vázaný seznam – procvičení struktur a ukazatelů |
Příklad 1 |
Přetěžování funkcí – více stejně pojmenovaných funkcí |
|
Projekt DU |
konzultace zadání, dokončení formulace zadání Projít si třídy komplex a string ze skript (viz příklad 1) |
|
Příklad 3 |
Proveďte
návrh třídy kterou budete vypracovávat. |
|
6 |
Cvicení |
|
Cvičení |
Komentáře – stavový automat |
|
DU prj |
Dodělejte funkce vázaného seznamu (příklad 3), dvousměrný seznam, cyklický seznam … využijte pro množinu Odevzdání zadání |
|
Příklad 3 |
Rozdělte vytvářený projekt
do hlavičky a zdrojů |
|
7 |
Cvičení |
Zde by se měl stanovit termín půlsemestrálního testu - předpokládané datum 18.11. Nutno se registrovat v IS. 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í |
Cvičení |
Přepracování 2D pole na třídu (konstruktor, destruktor, statická data a metody, čtení, zápis, změna rozměrů), |
|
Příklad 1 |
Implicitní parametry – automaticky doplňované při volání funkcí bez parametrů |
|
Projekt |
Hodnocení zadání |
|
Příklad 3 |
Napište pro svou třídu základní operátory |
|
8 |
Příklad 1 |
V tomto týdnu 18.11. by se měl psát půlsemestrální test. Nutno se registrovat v IS. Pro třídu String implementujte základní část třídy = založte tři soubory, ošetřete hlavičku, navrhněte data, zvolte přístupová práva, napište konstruktory (určitě char *), destruktor, počítejte vzniklé a aktuální prvky pomocí statických proměnných, vytiskněte je pomocí statické funkce |
Příklad 2 |
Implementujte nastavení pro nastavení a čtení, proveďte rozdělení do hlavičky a zdrojů |
|
Cvičení |
Implementujte funkční operátor jako operátor pro přístup k prvkům pole (využijte návrat hodnoty pomocí reference) Reference – práce s prvky v paměti, předávání proměnných do funkcí |
|
DU/prj |
Konzultace hlavičky, vlastní tvorba, srovnání se zadáním |
|
Příklad 3 |
„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 |
|
9 |
Příklad 1 |
Statická data pro počítání objektů |
Příklad 2 |
Členské a nečlenské „funkce“, alokace paměti |
|
DU / prj |
Konzultace hlavička |
|
Příklad 3 |
Připravte rozšíření tříd na dědění a využití virutálních betod (vlastnosti bázové třídy), přepište |
|
10 |
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 |
Operátory, friend, přetypování |
|
DU / prj |
Odevzdání hlavičky |
|
Příklad 3 |
Rozšiřte programy o
vlastnosti tříd získaných díky dědění
(v grafice – další typy objektů, v seznamu – různé
typy pro uložení hodnot …) |
|
11 |
Příklad 1 |
|
Příklad 2 |
Šablony ( prostudujte program na výpočet matic realizovaný pomocí šablon, vyzkoušejte si napsat šablony pro jednoduché funkce) |
|
DU / prj |
Práce na zdrojích – program demonstrující činnost třídy, konzultace, hodnocení hlavičky |
|
Příklad 3 |
Zjistěte, zda by při tvorbě projektu tvořeného v rámci „příklad 3“ nepomohla STL, přepracujte (neplatí pro kategorii PRJ!!!) |
|
12 |
Příklad 1 |
|
Příklad 2 |
||
DU / prj |
Tvorba dokumentace
|
|
Příklad 3 |
Dodělání |
|
13 |
Příklad 1 |
Obhajoba projektů |
DU / prj |
Odevzdání dokumentace |
|
Ukončení |
Body ze cvičení |
Poslední úpravy 2010-11-08