PB161 Programování v jazyce C++

Fakulta informatiky
jaro 2020
Rozsah
2/2/0. 3 kr. (plus ukončení). Doporučované ukončení: zk. Jiná možná ukončení: z.
Vyučující
RNDr. Petr Ročkai, Ph.D. (přednášející)
RNDr. Nikola Beneš, Ph.D. (pomocník)
Mgr. Lukáš Korenčik (přednášející)
RNDr. Jan Mrázek (přednášející)
RNDr. Lukáš Ručka (přednášející)
RNDr. Vladimír Štill, Ph.D. (přednášející)
Mgr. Katarína Kejstová (cvičící)
Mgr. Roman Lacko (cvičící)
Mgr. Adam Matoušek (cvičící)
Mgr. Vendula Němcová (cvičící)
Mgr. Mária Švidroňová (cvičící)
Mgr. Jiří Weiser (cvičící)
Mgr. Zuzana Baranová (pomocník)
RNDr. Marek Chalupa, Ph.D. (pomocník)
Mgr. Áron Samuel Kovács (pomocník)
Mgr. Peter Navrátil (pomocník)
Mgr. Anna Řechtáčková (pomocník)
RNDr. Vladimír Ulman, Ph.D. (pomocník)
Garance
RNDr. Nikola Beneš, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Rozvrh
Po 17. 2. až Pá 15. 5. Út 8:00–9:50 D1
  • Rozvrh seminárních/paralelních skupin:
PB161/01: Po 17. 2. až Pá 15. 5. Út 18:00–19:50 B130, K. Kejstová
PB161/02: Po 17. 2. až Pá 15. 5. St 14:00–15:50 A219, L. Korenčik
PB161/03: Po 17. 2. až Pá 15. 5. Pá 8:00–9:50 A219; a Pá 22. 5. 12:00–13:50 B130, R. Lacko
PB161/04: Po 17. 2. až Pá 15. 5. Út 14:00–15:50 A219, A. Matoušek
PB161/05: Pá 12:00–13:50 B130, A. Matoušek
PB161/06: Po 17. 2. až Pá 15. 5. Čt 8:00–9:50 A219, M. Švidroňová
PB161/07: Po 17. 2. až Pá 15. 5. Čt 14:00–15:50 A219, M. Švidroňová
PB161/08: Po 17. 2. až Pá 15. 5. Pá 14:00–15:50 A219; a Pá 22. 5. 12:00–13:50 B130, V. Němcová
PB161/09: Po 17. 2. až Pá 15. 5. Út 10:00–11:50 A219, P. Ročkai
PB161/10: Po 17. 2. až Pá 15. 5. Čt 10:00–11:50 B130, P. Ročkai
PB161/11: Po 17. 2. až Pá 15. 5. Út 12:00–13:50 B130, L. Ručka
PB161/12: Po 17. 2. až Pá 15. 5. Út 16:00–17:50 B130, L. Ručka
PB161/13: Po 17. 2. až Pá 15. 5. St 18:00–19:50 A219, J. Weiser
Předpoklady
PB071 Principy nízkoúr. prog.
Současně se předpokládá znalost operačního systému Unix nebo podobného na uživatelské úrovni, neboť odevzdání domácích úloh probíhá pod Unixem.
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
Cíle předmětu
Cíli předmětu je seznámit studenty s programovacím jazykem C++ podle normy C++14 a principy objektově orientovaného programování (tak, jak jsou v C++ implementovány). Předmět se zaměřuje se zejména na práci se standardní knihovnou, efektivní návrh vlastních datových typů (tříd), principy správy zdrojů a základní principy objektově-orientovaného návrhu.
Výstupy z učení
Po absolvování tohoto kurzu bude student schopen:
- psát programy v jazyce C++ s použitím prostředků moderního C++ (podle normy C++14);
- používat podstatnou část standardní knihovny jazyka C++;
- vytvářet složené datové typy (třídy) v jazyce C++;
- rozumět hodnotové sématice C++ a vysvětlit rozdíl proti sémantikám jiných populárních jazyků;
- rozumět principům správy zdrojů (vč. správy paměti) v jazyce C++;
- rozumět principům objektově orientovaného programování;
- schopen základního objektově orientovaného návrhu a jeho implementace;
- efektivně a vhodně používat při programování výjimky;
- schopen na základní úrovni používat moderní vývojové nástroje (IDE, debugger, verzovací nástroje, nástroje pro automatizaci překladu, základy testování...);
- při programování dodržovat dobré programátorské návyky.
Osnova
  • Základní prvky jazyka C++ (s přihlédnutím k C), standardy, kompilátory.
  • Hodnotová a referenční sémantika C++.
  • Základní principy objektově orientovaného programování a metodologie.
  • Uživatelsky definované typy. Třídy v C++. Komponenty třídy.
  • OOP in C++. Zapouzdření, dedičnost, polymorfismus.
  • Dynamická alokace paměti. Dynamická správa paměti. Automatické a třídní ukazatele.
  • Vstup a výstup v C++.
  • Výjimky a jejich ošetření. Defensivní programování.
  • Šablony. Standardní knihovna C++ a standardní knihovna šablon. Knihovny pro numerické výpočty.
  • Objetově orientovaný návrh, návrhové vzory.
  • Další objektově orientované jazyky. Java a C# ve srovnání s C++.
Literatura
  • STROUSTRUP, Bjarne. The C++ programming language. 3rd ed. Reading: Addison-Wesley, 1997, x, 910 s. ISBN 0-201-88954-4. info
  • VIRIUS, Miroslav. Programování v C++. 1. vyd. Praha: ČVUT, 1998, 364 s. ISBN 8001018741. info
  • VIRIUS, Miroslav. Pasti a propasti jazyka C++ : podrobný průvodce pokročilého uživatele. 1. vyd. Praha: Grada, 1997, 251 s. ISBN 8071696072. info
  • VIRIUS, Miroslav. Od C k C++. 1. vyd. České Budějovice: KOPP, 2000, 227 s. ISBN 80-7232-110-2. info
  • LOUIS, Dirk, Petr MEJZLÍK a Miroslav VIRIUS. Jazyky C a C++ podle normy ANSI/ISO: kompletní kapesní průvodce. 1. vyd. Praha: Grada Publishing, 1999, 644 s. ISBN 80-7169-631-5. info
  • MEYERS, Scott. Effective C++ :50 specific ways to improve your programs and designs. 2nd ed. Reading: Addison-Wesley, 1998, xx, 256 s. ISBN 0-201-92488-9. info
Záložky
https://is.muni.cz/ln/tag/FI:PB161!
Výukové metody
Výuka probíhá formou kombinace teoretických přednáškových lekcí s praktickými cvičeními, doplněnými samostatnými domácími programátorskými úlohami procvičujícími probranou látku z přednášek.
Metody hodnocení
Domácí úlohy v průběhu semestru, vnitrosemestrální test, zápočtový programovací příklad. Doporučeným ukončením je zkouška, která probíhá formou testu.
Navazující předměty
Informace učitele
https://www.fi.muni.cz/pb161/
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Nachází se v prerekvizitách jiných předmětů
Předmět je zařazen také v obdobích podzim 2002, podzim 2003, podzim 2004, podzim 2005, podzim 2006, podzim 2007, podzim 2008, podzim 2009, podzim 2010, podzim 2011, podzim 2012, podzim 2013, podzim 2014, podzim 2015, podzim 2016, podzim 2017, podzim 2018, podzim 2019, jaro 2021, jaro 2022, jaro 2023, jaro 2024, jaro 2025.