Programování v C++

NPRG041

2025/2026

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 nebo na Nástěnce předmětu v SISu. 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

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
29.9.2025 1..15 Výhody a nevýhody C/C++. Kompilace, hlavičkové soubory, dělení do modulů.
6.10.2025 16..26
1..11 Hello, world. Předávání hodnotou a odkazem.
13.10.2025 12..14
1..12 Hodnoty, ukazatele, reference.
20.10.2025 1..11 L-value a R-value reference. Copy/move. Předávání parametrů a vracení hodnotou a odkazem, fyzická a logická konstantnost.
27.10.2025 12..18
3.11.2025 19..30
1..2 Copy/move-elision, lvalue/rvalue, copy/move metody. Rule-of-Five.
10.11.2025 3..19
24.11.2025 20..21
1..15 Dynamic allocation, smart pointers, observers. Konvence používání ukazatelů a referencí. Arrays vs. vectors, smart pointers vs. containers.
1.12.2025 1..15 Kontejnery, iterátory, range-for-loop. Algoritmy.
8.12.2025 16..18
1..13 Funktory, lambda, std::function.
15.12.2025 1..18 Šablony, forwarding references, variadické šablony.
1..14 Traits, policy classes, functors, tags.
5.1.2026 1..19 Class vs. namespace. Dědičnost.
1..16 Výjimky.
Doplňkové slajdy nepokryté přednáškami
1..4 std::variant.
1..12 Visitor.