Programování v C++

NPRG041

2026/2027

David Bednárek

Katedra softwarového inženýrství

C++ je v nějakých ohledech tak bizarní jazyk, že si říkám, že musí být mimozemského původu. [anketa 2021/22]

Varování

Předmět předpokládá u všech účastníků zkušenosti s programováním, porozumění objektově-orientovanému programování a základní znalost jazyka C (nebo C++) a C# nebo Java. Pokud jste v programování začátečník, nezapisujte se. Pokud máte zkušenosti pouze s jazyky jako python, PHP, JavaScript, Pascal nebo FORTRAN, budete mít problém s porozuměním některým částem přednášky.

Pro pravidelné studenty programu Informatika jsou tyto předpoklady zajištěny prerekvizitami předmětu.

Komunikace

Pro komunikaci s vyučujícími používejte přednostně Mattermost. (Vaše emaily bývají často považovány za spam.)

Pro první přihlášení budete potřebovat invite-link, který najdete u rozvrhového lístku přednášky. Při registraci si zvolte jméno odpovídající tomu, pod kterým jste vedeni v SISu.

Tohoto předmětu se týkají kanály nprg041-cpp-[cvicici] pro cvičení daného vyučujícího a nprg041-cpp-repetenti pro repetenty. Všechny tyto kanály slouží pro komunikaci mezi vyučujícími a studenty i k diskusím mezi studenty týkajícím se předmětu. Pro neveřejnou komunikaci použijte direct messages.

Cvičení

Skupiny a pravidla pro cvičení a zápočty

Pravidla pro repetenty a studenty s rozloženým ročníkem

Zápočet

Během semestru bude probíhat průběžná kontrola podle pokynů cvičícího.

Podmínkou udělení zápočtu je úspěšné odevzdání individuálního zápočtového programu. Práce na zápočtovém programu bude kontrolována v několika termínech podle pokynů cvičícího, typicky návrh tématu, specifikace, technologické demo a finální verze.

Opravné termíny zápočtu vzhledem ke způsobu hodnocení nejsou možné, cvičící však může v odůvodněných případech prodloužit termíny odevzdání.

Každý student musí pracovat samostatně. Použití AI je možné pouze v mezích, které stanoví cvičící pro danou úlohu.

Zkouška

Zkouška je ústní s písemnou přípravou. Vyžadována je především znalost principů jazyka C++ a důležitých knihoven, schopnost porozumět kódu v C++ a schopnost aktivně používat běžné konstrukce jazyka C++ při řešení úloh. Použití AI při zkoušce je zakázáno.

U zkoušky jsou povoleny dva opravné termíny.

Průběh přednášky

Plán je založen na loňském průběhu a bude průběžně aktualizován.

Datum Slajdy Témata
30.9.2026 1..14 Výhody a nevýhody C/C++. Kompilace, hlavičkové soubory, dělení do modulů.
7.10.2026 15..28
Hello, world. Předávání hodnotou a odkazem.
14.10.2026
Hodnoty, ukazatele, reference.
21.10.2026 L-value a R-value reference. Copy/move. Předávání parametrů a vracení hodnotou a odkazem, fyzická a logická konstantnost.
4.11.2026
11.11.2026
Copy/move-elision, lvalue/rvalue, copy/move metody. Rule-of-Five.
18.11.2026
25.11.2026
Dynamic allocation, smart pointers, observers. Konvence používání ukazatelů a referencí. Arrays vs. vectors, smart pointers vs. containers.
2.12.2026 Kontejnery, iterátory, range-for-loop. Algoritmy.
9.12.2026
Funktory, lambda, std::function.
16.12.2026 Šablony, forwarding references, variadické šablony.
Traits, policy classes, functors, tags.
6.1.2027 Class vs. namespace. Dědičnost.
Výjimky.
Doplňkové slajdy nepokryté přednáškami
std::variant.
Visitor.