Náplň cvičení

náplň přednášek



Dne 29.11.2006 bude půlsemestrální test

v rámci přednášky



Cvičení vedou: Ing. Richter, richter@feec.vutbr.cz , tel . 541141194

Ing. Petyovský, petyovsk@feec.vutbr.cz , tel . 541141194, ICQ 216 55 22 66



Týden

Náplň cvičení

projekt

1


Seznámení s předmětem, laboratoří, bezpečnost práce

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

Úvod do programování v prostředí MS Visual C – příklad: jednoduchá konzolová aplikace (cykly, tisky) , přehled vlastností prostředí, trasování, sledování hodnot proměnných.

Hra s tématem jazyka C - http://www.c-jump.com


2


Opakování programování v C – tabulka (cykly, formátovaný tisk). „Osahání“ si programovacího prostředí MS Visual C, přehled vlastností prostředí, trasování, sledování hodnot proměnných.

Makra – bez a s parametry (podmíněný překlad, konstanty, makra s parametry (funkce a makro vracející hodnotu – realizace „max“, popis rozdílů)


3


Opakování programování v C – vypuštění komentářů (práce se soubory,switch – konečný stavový automat, realizace s pomocí funkcí, modulů zdrojových a hlavičkových souborů)

Procvičte si bitové operace na příkladech (práce s bity, velikost celočíselného typu, sizeof)

Opakování C - dotazy

Zadání témat projektů pro volbu.

(projekt se tvoří průběžně, body průběžně na cvičeních. Do IS se hodnotí jako celek po odevdání poslední části.)

4


Opakování programování v C – práce s ukazateli (předávání parametrů do funkcí a změna hodnoty proměnné uvnitř funkce)

Opakování programování v C – 2D pole (ukazatele, práce s dynamickou pamětí, alokace, odalokace)

Opakování C – dotazy. Literatura pro inspiraci (pdf 220kB).

Volba témata projektu a spolupracovníků (po 3 lidech)

5


Ukázky tříd – motivace, třída jako „knihovna“ a ne „program“

Třída – základní popis třídy – metody a data - příklad Komplex , String (rozdělte příklad komplex do jednotlivých modulů (projekt.cpp, komplex.cpp, komplex2214.h) a zkuste přeložit. Trasujte a zkuste předvídat co se děje.

Dokončení předchozích úloh (makra, komentáře, ukazatele). Otázky C. Prostudujte knihovny limits.h a float.h – zjistěte jejich funkci.

Předělejte 2D pole z minulého cvičení do struktur (pole, rozměrx, rozměry)

Formulace vlastností zvolené třídy projektu (vlastnosti třídy – konstruktory, destruktory, friend funkce, V/V, operátory …) Formulář pro zadání. Ve formuláři budou nahrazeny červené texty na základě vašeho projektu.

!!!! Nový formulář s bližší specifikací !!!!!

6


Procvičení struktur a ukazatelů na přikladu jednosměrně vázaného seznamu

Procvičte si možnost využití stejného názvu pro více funkcí - přetěžování funkcí .


Odevzdání zadání projektu (doplňte slovní text do formuláře k příslušným metodám a dodejte hlavičku projektu (název, jména, datumy ….). Ke každému typu metod ze zadání by měla být vytvořena alespoň jedna metoda na jednoho z autorů.

V dalším průběhu prací může být zadání modifikováno. Rozdíly oproti zadání zhodnoťte v závěrečné dokumentaci.

Na cvičení můžete ještě provést konzultaci ale ke konci odevzdáte (na e-mail cvičícího). Subjekt „zadání BPPC“. Odevzdávaný „zip“ soubor pojmenujte kodem cvičení, jménem autora a názvem tj. „po13_novak_zlomky“. Odevzdává jen jeden z autorů. Po odevzdání kontrolujte svůj mail, zda neodepíši že přišlo bez přílohy (například kontrola virů …) - posílejte pouze soubory typu „h“, „c“ a „cpp“.

(hodnocení úplnosti zadání - 2 body)

7


Procvičte si možnost nadefinovat implicitní parametry, které se budou automaticky doplňovat při volání funkcí bez parametrů.

Procvičte si použití nového způsobu práce s prvky v paměti (obdobně jako přes ukazatel) reference.



Zvolte vhodnou datovou reprezentaci pro třídu Komplex, String a Vaši třídu

(Při tvorbě metod postupujte tak, že nejprve napíšete prototyp (hlavičku) s prázdným tělem. Následně rozhodněte, zda se bude jednat o inline metodu či ne. V případě, že ne, přesuňte tělo do zdrojového souboru. Nakonec vytovřte kód metod).

Napište konstruktory – implicitní, konverzní, kopykonstruktor - například aby šel následující kód (za T dosaďte Komplex, String, a váš název třídy)

T a; T b = 4; T c = b; T e = “34“; T f( 4, 5);

Napište destruktor - pomocí trasování zjistěte zda a kdy je volán.

Potvrzení převzetí zadání projektů

(v rámci cvičení jsou publikovány části kódu, které (po dosazení jména Vaší třídy) by měly fungovat i ve Vaší třídě)

8


Metody pro nastavení a čtení dat – napište metody pro zadání a vyčítání hodnot dat.

Pro předávání parametrů do metod používejte konstantní parametry v místech parametrů, které se v metodách (funkcích) nemění.

Nastavte přístupová práva private pro data a public pro metody – odlaďte vzniké chyby.

Vytvořte hlavičkový soubor pro třídu Komplex, string, a vaši třídu (postupujte například tak, že si napíšete program, který chcete realizovat, a který využívá metody z vašeho zadání. Potom se snažte vytvořit hlavičkový soubor tak aby program šel přeložit. Těla metod mějte prázdná, realizujte pouze návratové hodnoty.)

Zajistěte, aby fungoval následující kód:

T a; a.SetP1(1); a.SetP2(2); a.Set(1,2);

int i = a.GetP1(),j=a.GetP2();

i = a.Metoda1();

a naopak nefungoval přístup k datům (následující nesmí fungovat (data a proměnná jsou proměnné dané třídy jejímž je a objektem))

a.data = 4; i = a.promenna;

Připomínky k zadání projektů

konzultace hlavičkových souborů

9


Pomocí statických dat zjišťujte počet vzniklých objektů a počet aktuálních objektů. Tisk aktuálního stavu realizujte pomocí statické metody. Tyto prvky budou součástí projektu.

Napište členské a nečlenské funkce pro práci s daty



Zajistěte aby fungoval následující kód:

TiskniPrvky(); T a, b,c; TiskniPrvky(); a.Pracuj(); a.Pracuj(1,2);

Alokace paměti – dynamická alokace objektů, operátor new (+pozn. Objekty obsahující ukazatel)

Konzultace projektu

Odevzdání hlavičkového souboru

(kvalita řešení, úplnost podle zadání, ošetření proti vícenásobnému načtení, 3body)

Na cvičení můžete ještě provést konzultaci ale ke konci (dne) cvičení odevzdáte - na e-mail cvičícího. Subjekt „hlavička BPPC“, přidejte den a hodinu cvičení. Odevzdávaný soubor pojmenujte jménem autora a názvem tj. „novak_zlomky“. Odevzdává jen jeden z autorů. V dalším může být znění hlavičky modifikováno. Rozdíly zhodnoťte v závěrečné dokumentaci.

Po odevzdání kontrolujte svůj mail, zda neodepíši že přišlo bez přílohy (například kontrola virů …).

10


Dotazy k půlsemestrální práci

Doplňte funkci pro dekódování morseovy abecedy (zkuste přepsat z C struktury na C++ třídu)

Napište operátory pro vaši třídu (operátor =, unární, binární operátory, operátory pro srovnání == > < >=

Napište operátor jako friend funkci

Jak přetypovat provést přetypování standardních typů na prvek třídy a naopak.



T a,b,c;



a = a; a = b + c; if (a != b) c = 4 + b; a = -b - +a; b = ~a;

b = 5;

int bb = b;

float f = a != b;

Konzultace zdrojové části projektu

(ukázka činnosti projektu (zdroje main) by měla být napsána tak, aby se načetly data ze souboru z disku, s načtenými daty se postupně provedly všechny operace, a výsledek uložit do druhého souboru. K tomu příslušný komentář. Názvy souborů jako parametr při spouštění programu.)

Zhodnocení hlavičkových souborů

11


Prostory jmen (napište streamy s stream.h, a potom změňte na stream, a také stdio.h na cstdio)

Vstup a výstup – streamy – přepište programy na tisk tabulek (cvičení č.2) za pomoci možností jazyka C++ (streamy). Zkuste provést výstup na standardní výstup (cout) a do souboru.

T a,b; cin >> a; cout << a;

ifstream is(„nacti.dat“,ios::in); is >> a;

b = Inv(a);// a zůstává, b je inverze (alternativně absolutní hodnota)

b = a.Inv(); // a se změní, v b je totéž co v a

Konzultace zdrojové části projektu

12


Dědění, virtuální metody – jednoduchý příklad

dědění, virtuální metody a abstraktní datový typ – grafické objekty



(Výjimky, šablony (matice), Runtime identifikace – komentář)

Rozbor půlsemestrální zkoušky

(zadání zkoušky, odevzdání projektů, příště obhajoby)

Odevzdání zdrojového souboru – projekt. Odevzdává se: hlavičkový soubor třídy, zdrojový soubor třídy, cpp soubor s ukázkou použití třídy, soubor vzorového zadání dat. Tyto soubory musí být přeložitelné (bez chyb a warningů) v prostředí MS Visual C (projekt prázdná konzola s maximální vahou warningů a chyb).

( kvalita zdrojových textů, demonstrační program prezentující práci se třídou s komentáři – 4 body,

kvalita projektu, splnění zadání, obtížnost - 2 body)

poznámka k dokumentaci: 1) Jmeno, skupina, nazev
2) Puvodni zadani (tj. zadani ktere odevzdavali jako prvni)
3) Popis zmen v zadani ktere jsme provedli
4) UML diagram nebo seznam private/public  method i atributu.
5) Popis cinnosti a vyznamu alespon zakladnich public metod
   (tj. manual pro pouzivani tridy)
6) Vypis programu main (okomentovany kazdy radek)
7) Zaver (tj. Co jsme nestihli, Proc jsem byli nuceni zmenit zadani,
   Jaky k tomu byl duvod)

Pozn:  Samotna trida nebude interaktivne komunikovat s uzivatelem. V idealnim pripade nebude vypisovat a cist z konzoly vubec nic. Chybove stavy muze main fce detekovat zvlastni metodou nebo je mozne vyuzit vyjimky. Demonstracni program (main fce) naopak interaktivni byt mohou (doporucuje se).

13


Obhajoby projektů – připravte si obhajobu projektu cca na 5-8 minut. Uveďte název projektu, popište a zhodnoťte datovou reprezentaci a možné alternativy. Popište interface vaší třídy.

Přípravy se nakopírují na disk Q, bude k dispozici dataprojektor.

Odpovězte na dotazy ostatních.

Obhajoba projektu. Odevzdání dokumentace.

(obhajoba - 3 body – úvod, datová reprezentace včetně variant, přehled metod, zajímavý kód, ukázka volání, možnosti zlepšení)

dokumentace – zadání, hlavička (1b), filozofie návrhu, volba dat, (1b) privátní a veřejné funkce, konstruktory, UML diagram (1b), popis funkcí rozhraní (2b), … závěr (1b) - 6 bodů)





Poslední úpravy 2006-10-02