====== bd6b36pjc -- Programování v C/C++ ====== [[https://cw.felk.cvut.cz/upload/|Odevzdávací systém]] [[https://cw.felk.cvut.cz/forum/forum-1588.html|Diskusní fórum]] [[https://www.fel.cvut.cz/cz/education/bk/predmety/44/87/p4487706.html|Popis předmětu na FEL]] [[https://www.fel.cvut.cz/cz/education/rozvrhy-ng.B191/public/html/predmety/44/87/p4487706.html|Rozvrh na FEL]] --------------- //Předmět BD6B36PJC je zakončen klasifikovaným zápočtem.// Předmět se zabývá výukou programovacího jazyka C%%++%%. Látka je určena pro mírně pokročilé programátory, znalost C ani C%%++%% není nutná. Cílem je seznámit studenty se základy jazyka a naučit je používat C%%++%% v praxi. ===== Přednášky ===== Předmět je veden formou konzultací. [[https://cw.fel.cvut.cz/wiki/courses/bd6b36pjc/prednasky-kombi/start|Konzultace pro kombinované studium]] [[https://cw.fel.cvut.cz/b191/courses/b6b36pjc/prednasky/start|Přednášky pro denní studium]] ===== Domácí úkoly ===== Během semestru budou zadány max 3 domácí úkoly (může se ještě změnit). /* a semestrální práce. */ Úkoly budou vyvěšeny na stránkách předmětu a budou se odevzdávat do odevzdávacího systému (Brute Systém), kde budou automaticky hodnoceny. /* Semestrální práce se odevzdává mailem je hodnocena cvičícím. */ Pro získání zápočtu je nutné úspěšně odevzdat všechny domácí úkoly (získat alespoň polovinu bodů před penalizací za pozdní odevzdání). Úlohu je třeba odevzdat do zadaného data, za každý započatý týden zpoždění bude odevzdání penalizováno polovinou možného bodového zisku. Upozornění: práce na domácích úkolech je samostatná. Studenti, kterým odhalíme duplicitní řešení, automaticky ztrácí nárok na zápočet a hrozí jim disciplinární řízení. Samozřejmě je normální (a žádoucí) o domácích úlohách diskutovat s kolegy, nicméně kód si musí každý napsat sám. /* [[https://cw.fel.cvut.cz/wiki/courses/b6b36pjc/ukoly/ukol_1|Úkol 1 (Symcalc)]] [[https://cw.fel.cvut.cz/wiki/courses/b6b36pjc/ukoly/trie_1|Úkol 2 (Flatset)]] [[https://cw.fel.cvut.cz/wiki/courses/b6b36pjc/ukoly/trie_3|Úkol 3 (Trie)]] [[https://cw.fel.cvut.cz/wiki/courses/b6b36pjc/ukoly/parser-1|Úkol 4 (Parser 1)]] */ ===== Úkoly v semestru ===== 70 ze 100 bodů ze semestru je za domácí práci, z toho 50 za úkoly do Brute, 20 za jednohubky. /* a a 20 za semestrální práci, která se odevzdává vašemu cvičícímu mailem. */ Pro získání zápočtu potřebujete splnit všechny povinné domácí úkoly, což znamená získat z nich alespoň polovinu bodů, předtím než se započítá penalizace za pozdní odevzdání((To znamená, že pokud jste dostali 5 bodů z 10 z testů a penalizace za pozdní odevzdání je v danou chvíli 10 bodů, tak jste stále odevzdali úkol úspěšně.)). Úlohy se kontrolují stejnými testy, jako dostáváte, ovšem v odevzdávacím systému testy, resp. vaše úkoly běží pod [[http://valgrind.org/|Valgrindem]]. Aby byl úkol přijmut jako správně odevzdaný, nesmí Valgrind najít žádné problémy. ==== Úkoly ==== ^ Úkol ^ Téma ^ Max bodů ^ Popis ^ | 1 | Flatset | 15 | [[courses:bd6b36pjc:ukoly:ukol2 | Flatset ]] | | 2 | Symcalc | 15 | [[courses:b6b36pjc:ukoly:symcalc | Symcalc ]] | | 3 | Trie | 20 | [[courses:bd6b36pjc:ukoly:ukol3 | Trie ]] | ==== Jednohubky ==== Jednohubky jsou malé a **nepovinné** úkoly, za které můžete získat až dva body. K získání celého počtu bodů je musíte odevzdat včas. ^ Úkol ^ Téma ^ | 1 | [[courses:bd6b36pjc:ukoly:jednohubky|Formátovaný zápis do proudu]] | | 2 | [[courses:bd6b36pjc:ukoly:jednohubky|Kopie a reference]] | | 3 | [[courses:bd6b36pjc:ukoly:jednohubky|Práce s dynamicky alokovanou pamětí ]] | | 4 | [[courses:b6b36pjc:ukoly:jednohubky#zivot_objektu|Život objektů]] | | 5 | [[courses:b6b36pjc:ukoly:jednohubky#kopie_a_presuny|Kopie a přesuny]] | | 6 | [[courses:b6b36pjc:ukoly:jednohubky#operatory|Operátory]] | | 7 | [[courses:b6b36pjc:ukoly:jednohubky#nevirtualni a virtualni rozhrani|Nevirtuální a virtuální rozhraní]] | | 8 | [[courses:b6b36pjc:ukoly:jednohubky#simulace_kovariantnich_navratovych_typu_s_ukazateli | Kovariance s chytrými ukazateli ]] | | 9 | [[courses:b6b36pjc:ukoly:jednohubky#jednoducha_sablonova_funkce | Jednoduchá šablonová funkce ]] | | 10 | [[courses:b6b36pjc:ukoly:jednohubky#jednoduche_metaprogramovani | Jednoduché metaprogramování ]] | ==== Testovací úlohy ==== V Brute najdete i [[courses:b6b36pjc:ukoly:test_upload|dvě testovací úlohy]], na nichž si můžete vyzkoušet, jestli vám funguje tak, jak má. /* ==== Semestrálka ==== [[courses:bd6b36pjc:ukoly:semestralka|Semestrálka]] ===== Cvičení denního studia pro inspiraci ===== [[https://cw.fel.cvut.cz/wiki/courses/b6b36pjc/cviceni/start|Cvičení pro denní studium]] {{page>courses:b6b36pjc:styles#common&noheader&nofooter}} {{page>courses:b6b36pjc:styles#testy&noheader&nofooter}} {{page>courses:bd6b36pjc:styles#common&noheader&nofooter}} {{page>courses:bd6b36pjc:styles#testy&noheader&nofooter}} */ ===== Ukázkové zápočtové testy ===== Zápočtový test se zkládá ze dvou částí, [[courses:b6b36pjc:testy:kratke_otazky|krátkých, primárně teoretických otázek]], a z rozsáhlejších otázek primárně na čtení kódu * [[courses:b6b36pjc:testy:ukazkovy_test_1|Ukázkový test 1]] * [[courses:b6b36pjc:testy:ukazkovy_test_2|Ukázkový test 2]] ===== Hodnocení ===== Hodnocení je dáno celkovým součtem bodů za domácí úkoly, semestrální práci a zápočtový test. Cvičící může celkové hodnocení ještě upravit, podle aktivity za semestr. ^ Část ^ Body ^ | úkoly | 50 | | jednohubky | 20 | | test | 30 | ^ celkem ^ 100 ^ /*| semestrální práce | 20 |*/ V průběhu semestru je možné získat i bonusové body, a to za aktivitu nad rámec očekávání. To znamená například nalezení chyb v přednáškách nebo v úkolech. Výsledná známka se řídí běžnou bodovou tabulkou: ^ Známka ^ Bodové rozmezí ^ Slovní \\ hodnocení ^ | A | 90 a více | výborně | | B | 80 - 89 | velmi dobře | | C | 70 - 79 | dobře | | D | 60 - 69 | uspokojivě | | E | 50 - 59 | dostatečně | | F | méně než 50| nedostatečně | ===== Literatura ===== ** * Doporučená literatura anglicky ** * Stanley B. Lippman, Josée Lajoie, Barbara E. Moo: C++ Primer, 5. edice. Addison-Wesley 2012, ISBN-13: 978-0321714114. Pozor: Nezaměňovat s C++ Primer Plus od S. Prata * Bjarne Stroustrup: Programming, Principles and Practice Using C++, 2. edice. Addison-Wesley 2014, ISBN 978-0-321-99278-9. Velká kniha, bere to opravdu od začátku * Bjarne Stroustrup: Tour of C++. Addison-Wesley 2013. ISBN 978-0321958310. Tenký svazek, přehled toho co by měl C++ programátor umět ** * Česká literatura ** * Miroslav Virius: Jazyky C a C++. Grada 2011, ISBN 978-80-247-3917-5. Jedná se spíše o referenční příručku, nežli o učebnici. Pouze pokud chcete českojazyčnou literaturu. ** * Reference: ** * cppreference http://en.cppreference.com/w/ ** * Přednášky na různá témata: ** * https://github.com/CppCon ** * Pokročilá literatura ** * S. Meyers: Modern Effective C++. Ostatní Eff. C++ knížky jsou též zajímavé * H. Sutter: Exceptional C++. More Exceptional C++ je dobré pokračování * A. Stepanov: Elements of Programming. Silně matematické, C++ jen okrajově ** * Další česká literatura ** * Pavel Herout: Učebnice jazyka C. 6. vyd. Kopp, České Budějovice 2009, ISBN 978-80-7232-383-8, 280 stran. * Pavel Herout: Učebnice jazyka C – 2.díl. 4. vyd. Kopp, České Budějovice 2009, ISBN 978-80-7232-367-8, 280 stran. * Miroslav Virius: Od C k C++. Kopp, České Budějovice 2000. ISBN 80-7232-110-2. 227 stran. * Miroslav Virius: Jazyky C a C++. Kompletní kapesní průvodce programátora. Grada 2011, ISBN: 978-80-247-3917-5. 518 stran. * Miroslav Virius: Pasti a propasti C++. 2. aktualizované a doplněné vydání: Computer Press, Brno 2005. ISBN 80-251-0509-1. 376 stran. * Miroslav Virius: 1001 tipů a triků pro C++. Computer Press, Brno 2011. ISBN 978-80-251-2941-8. ISBN 978-80-251-2941-9. 472 stran. * A další, a další …