 termín: středa 11.3. 23:59  vytvořit kontejner – dvourozměrná matice  dopředné (forward) iterátory přes sloupce i řádky  velikost fixní, určená parametry.

Slides:



Advertisements
Podobné prezentace
Standardní knihovní funkce pro práci s textovými řetězci
Advertisements

Užitečné klávesové zkratky pro Microsoft Word a Excel
ÚVOD DO C++ 3 TŘÍDY a objekty - POKRAČOVÁNÍ
Programování v C jazyku - SEMINÁŘ
Seminář C++ 5. cvičení Dědičnost Ing. Jan Mikulka.
Ladislav Hofman, Jan Slavík TUL Předmět databázové systémy
MATLAB vytváření funkcí, grafika
Programovací jazyk C++
Správa projektů programem Ant Miroslav Beneš. Správa projektů programem Ant2 Obsah V čem spočívá správa projektů V čem spočívá správa projektů Varianty:
1 Provázání stránek Vytvořte dvě www stránky, jednu růžovou a druhou modrou – viz. zdrojové kódy RŮŽOVÁ STRÁNKA Růžová stránka Odkaz na modrou stránku.
Programování 2 Cvičení 5.
Práce s PCS v OLE: možnosti, meze, zkušenosti Petr Horský
Fronta - a)Implementace s využitím statických struktur (pole) b)Implementace s využitím dynamických struktur (spojového seznamu) odebírá se ze začátku.
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
1NPRG054 Vývoj vysoce výkonného software /2013 David Bednárek Domácí úkol.
C++ Přednáška 3 Konstantní a statické členy tříd, ukazatel this, konstantní instance třídy Ing. Jiří Kulhánek , kat. 352, VŠB TU Ostrava 2004.
Preprocess Úvod do tvorby funkcí Princip preprocesoringu Direktivy preprocesoru Podmíněný překlad Základy tvorby funkcí Zjednodušený popis principu předávaní.
Programování v C++ Cvičení.
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
C++0x stručný náhled na nadcházející revizi standardu programovacího jazyka C++ (ISO/IEC 14882) Jan Ringoš.
Příklady z Matlabu (5) Jednoduché scripty.
MATLAB® ( Funkce v Matlabu ).
8. přednáška typedef - preprocesor Studijní materiály najdete na adrese:
Datové struktury. 2 Co je datová struktura v C datový typ složený z jiných datových typů nejjednodušší datová struktura je pole. všechny jeho prvky jsou.
Hana Kotinová Struktura a cíl práce Metody předzpracování dat Systémy předzpracování dat Historie vývoje DPT Jak program pracuje Budoucnost.
Páté cvičení Dědičnost Interface Abstarktní třídy a metody
Seminář C++ 9. cvičení Šablony Ing. Jan Mikulka. Šablony ► template – vzory, podle kterých může překladač tvořit skupiny podobných tříd nebo funkcí, které.
Práce se soubory. * soubory patří k základním datovým prvkům v počítači * převážná většina programovacích jazyků má podporu určité formy práce se soubory.
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
Deklarace Radim Štefan. 2 Použité zkratky BP – Borland Pascal De – Delphi.
PB161 Jmenné prostory, I/O proudy PB161 | Jmenné prostory, IO proudy PB161 – Programování v jazyce C++ Objektově Orientované Programování.
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
PB161 – Programování v jazyce C++ Objektově Orientované Programování
Kreslič grafů Program vykresluje grafy funkcí, zadaných analyticky.
Dynamická alokace, polymorfismus
Použití uživatelských funkce Excelu
Ing. Jan Mittner Základy MVC 2. Rozšíření layoutu 3. helpery 4. Bootstrap a přepis URL adres 2.
PB161 – Programování v jazyce C++ Objektově Orientované Programování
Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.
6. cvičení Polymorfismus
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
PB161 Právo friend, přetěžování operátorů, přetypování PB161 | Friend, operátory PB161 – Programování v jazyce C++ Objektově Orientované Programování.
5. Procedury a funkce Procedura je samostatně odladěný algoritmus, v programu může být volána vícekrát. Dvojí terminologie - rozlišujeme procedury a funkce.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
IB111 Programování a algoritmizace
Pokročilé programování v C++ (část B) David Bednárek
OSNOVA: a) Přetížení členských funkcí b) Dědičnost tříd Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Šesté cvičení Výjimky Balíky.
BINÁRNÍ STROM Vytvořte program, který bude vytvářet "binární strom". Každý prvek bude definován z klávesnice svým obsahem a dvěma dalšími proměnnými, které.
Pokročilé programování v C++ (část B)
Příklady v jazyku C – část 8. Napište program, který inicializuje 2-rozměrné pole uživatele (5 řádků, 2 sloupce) a naplní ho hodnotami (první sloupec.
ZÁKLADNÍ POJMY. ZDROJOVÝ TEXT PROGRAMU Tvoří: klíčová slova komentáře identifikátory.
doc. RNDr. Zdeněk Botek, CSc.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Sylabus V rámci PNV budeme řešit konkrétní úlohy a to z následujících oblastí: Nelineární úlohy Řešení nelineárních rovnic Numerická integrace Lineární.
Elektronická komunikace Radek Pinc
POSLOUPNOST test. ZKUSTE ODPOVĚDĚT Co je to komentář? Poznámky, které nám pomohou pochopit, když se k programu vrátíme po delší době, co jsme chtěli tou,
Y36PJC Programování v jazyce C/C++
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Seminář 11 DHCP + HTTP + IPTABLES
Y36PJC Programování v jazyce C/C++
Typový příklad 3 – zadání 1
Programování v jazyce C++
Digitální učební materiál
Oblast platnosti identifikátoru (1)
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Zadání ručního programování 2.čast - parametrizace
Programování v jazyce C++
C# přehled vlastností.
Transkript prezentace:

 termín: středa :59  vytvořit kontejner – dvourozměrná matice  dopředné (forward) iterátory přes sloupce i řádky  velikost fixní, určená parametry konstruktoru  kopie kontejneru včetně změny rozměrů  neřešit metody pro zvětšování a zmenšování  nutná podpora move (move konstruktory / rvalue reference)  bonus (max +2 body): správné řešení const kontejneru  bonus (max +1 body): indexace přes řádky i sloupce ◦ a[x][y] (a.rows()[x][y] a.cols()[x][y])  bonus (max +1 body): bezpečné řešení v debug módu ◦ odchytávat všechny nedefinované akce

typedef matrix my_matrix; int cnt = 100; void f1( my_matrix::cols_t::value_type::reference x) { x = ++cnt; } void f2( my_matrix::cols_t::reference r) { for_each( r.begin(), r.end(), f1); } void f3( my_matrix::rows_t::value_type::reference x) { cout << x << " "; } void f4( my_matrix::rows_t::reference r) { for_each( r.begin(), r.end(), f3); cout << endl; } int main( int argc, char ** argv) { my_matrix a( 3, 4, 0); for_each( a.cols().begin(), a.cols().end(), f2); for_each( a.rows().begin(), a.rows().end(), f4); } procházení po sloupcích procházení po řádkách procházení prvků sloupce

 vytvořené třídy musí být kompatibilní s STL kontejnery a algoritmy ◦ všechny vyžadující forward iterator - for_each ◦ pro pomocné třídy cols/rows vytvořit:  typy: iterator, reference, value_type  metody: begin(), end(), size(), bonus: op[]  iterátory: ◦ 5 typů, *, ->, ++, =, ==  celkem 4 pomocné kvazi-kontejnery: ◦ řádky, sloupce, prvky v řádku, prvky v sloupci ◦ to celé znásobeno podporou const (bonus)

 problém: ◦ kvazikontejner vrací iterátor, ten má svoji hvězdičkou zpřístupnit něco, co v té matici nemusí být (typicky sloupec)  možné řešení: ◦ * na iterátoru vrátí hodnotou pomocnou na na místě sestrojenou třídu  normálně * vrací T& ◦ tady nás k tomu sice nic nenutí ◦ musí se to ale chovat podobně  pozor: ◦ na iterátoru musí být -> (požadavek normy) ◦ běžné řešení: vrátí ukazatel na typ s příslušnými metodami  není ale na co vrátit * ◦ nebo: vrátí jinou třídu s přetíženým operátorem ->  jiná třída - proxy na sloupec

 včasnost ◦ za nedodržení termínu body prudce dolů  přeložitelnost ◦ přeložitelné bez chyb a (pokud možno) warningů ◦ kompatibilní s vzorem použití (rozhraní je pevné)  multiplatformnost ◦ nezávislost na OS, bitovosti, překladači - vyzkoušejte i gcc32/VS64  stabilita ◦ rozhodně vyzkoušejte všechna možná přípustná data a typy  kultura kódu ◦ pravidla, moudra, dobré zvyky, udržovatelnost, estetika, čitelnost  odevzdávací formality a konvence ◦ názvy a struktura souborů, komentáře

 indexace přes řádky i sloupce ◦ max +1 body ◦ a[x][y] ◦ (a.rows()[x][y]) ◦ a.cols()[x][y]  bezpečné řešení v debug módu ◦ max +1 body ◦ odchytávat všechny nedefinované akce ◦ du_assert(e)  if( e == 0) chyba ◦ v debug verzi  du_assert vypíše lokaci a skončí ◦ v release verzi (definováno makro DU_NDEBUG)  nedělá nic - odletí

 v du1.zip najdete 4 soubory ◦ du1test.cpp  kód používající vaše řešení - neměňte - zachovat rozhraní!  můžete (velmi doporučeno!) přidat vlastní testy ◦ du1debug.hpp  definice pro bonus - du_assert ◦ du1matrix.cpp, du1matrix.hpp  sem doplňte kód a hlavičkový soubor vašeho řešení  soubory nepřejmenovávejte ◦ na začátek každého souboru vložte komentář typu // DU1matrix.cpp // Karel Vomacka NPRG /2015  vaše řešení vložte do Grupíčku - neposílejte em! ◦ správné soubory do správných sloupečků!