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. (Tato pozvánka platí pro team 2526 pokrývající několik předmětů vyučovaných v ak. roce 2025/26.) 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

Během semestru bude probíhat průběžná kontrola podle pokynů cvičícího, zejména ve formě domácích úkolů. Úspěšné a včasné plnění bude hodnoceno body, maximálně lze získat 30 bodů.

Podmínkou udělení zápočtu je získání alespoň 20 bodů udělovaných za práci během semestru a ú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.

K připuštění ke zkoušce je nutné získat alespoň 20 bodů udělovaných za práci během semestru.

Zkouška bude konána v počítačových laboratořích, s omezenou konektivitou a dostupností nástrojů AI. Pravidla zkoušky budou upřesněna během semestru. U zkoušky bude hodnocena funkčnost i kvalita kódu. Maximálně lze u zkoušky získat 60 bodů.

Výsledná známka z předmětu je určena na základě součtu bodů získaných během semestru a bodů získaných u zkoušky takto:

  • 60-69 bodů - dobře
  • 70-79 bodů - velmi dobře
  • 80-90 bodů - výborně

U zkoušky jsou povoleny dva opravné termíny. U zápočtu opravné termíny 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í.

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.

Varování: Videa z éry pandemie jsou zastaralá a nepokrývají všechna aktuálně požadovaná témata.

Datum Slajdy Témata Video
2020/21
Video
2021/22
29.9.2025 1..15 Výhody a nevýhody C/C++. Kompilace, hlavičkové soubory, dělení do modulů. 09-29
6.10.2025 16..26
1..5 Hello, world. Předávání hodnotou a odkazem. 10-06
13.10.2025 6..14 10-19
1..12 Hodnoty, ukazatele, reference. 10-13
10-26
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. 10-20
11-02
3.11.2025 11..20
10-27 11-09
1..8 Copy/move-elision, lvalue/rvalue, copy/move metody. Rule-of-Five.
10.11.2025 9..18 11-16
1..7 Dynamic allocation, smart pointers, observers. Konvence používání ukazatelů a referencí. Arrays vs. vectors, smart pointers vs. containers. 11-03
24.11.2025 11..15 11-23
1..5 Kontejnery, iterátory, range-for-loop. Algoritmy. 11-10
1.12.2025 6..18
1.. Funktory, lambda, std::function. 11-24
12-14
8.12.2025 1..13 Šablony, forwarding references, variadické šablony. 12-01
15.12.2025 14..18
1..14 Traits, policy classes, functors, tags.
5.1.2026 1..19 Class vs. namespace. Dědičnost. 12-15
20..31
1..16 Výjimky.
Doplňkové slajdy nepokryté přednáškami
1..4 std::variant. 12-08 12-21
1..12 Visitor. 12-22