NPRG041 - Programování v C++ | cvičení Jiří Klepl

Cvičení C++ v pátek 10:40 (SW2)

Obsah

Kontakt

Možnosti komunikace (od nejrychlejší po nejpomalejší): Ozvěte se kdykoliv, když:

Podmínky udělení zápočtu (stručně)

Pro detailnější informace, navštivte hromadnou stránku cvičení.

Příklady ze cvičení

Domácí úkoly

Cvičení

Náplň se může v průběhu semestru měnit!

# Datum Slajdy Probíraná témata Zdrojáky Soubory ze cvičení Příklady (lab work) Domácí úkoly
1 4. 10. 2024 PDF PPTX
  • Úvod do předmětu
  • Editor, kompilátor, debugger
  • Mattermost, GitLab, ReCodEx
  • C++ program a jeho sestavení, spuštění
  • Typické typy: int, std::string, std::vector, pointery
  • Textový vstup a výstup (std::cin, std::cout, std::cerr)
  • Command line argumenty
C++ Násobilka
2 11. 10. 2024 PDF PPTX
  • Předávání parametrů funkcím
  • Hodnotová a odkazová (referenční) semantika, C++ není Java
  • Cykly, pole: std::vector vs std::array vs T[]
  • std::span
  • Práce s textem: std::string, std::string_view
  • File streamy
  • Práce se znaky
prep_for_ovecky
3 18. 10. 2024 PDF PPTX
  • Modularita, objekty
  • Vlastnictví a RAII
  • Pointery, reference
  • Raw pointery, std::unique_ptr, std::shared_ptr
  • std::move
C++ bst ReCodEx
4 25. 10. 2024 PDF PPTX
  • Sekvenční kontejnery: std::vector, std::list
  • Asociativní kontejnery: std::map, std::set, std::unordered_map, std::unordered_set
  • Iterátory
  • Práce s kontejnery
dictionary
5 1. 11. 2024 PDF PPTX
  • Třídění
  • Funktory, lambda funkce
  • Algoritmy: std::sort, std::find, std::accumulate, ...
  • Speciální iterátory: std::back_inserter, std::inserter, std::ostream_iterator
C++ C++ algorithms
6 8. 11. 2024 PDF PPTX
  • Dědičnost
  • Dynamický polymorfismus: virtual, override, final
  • Overloading funkcí, operátorů
  • The Rule of Three, The Rule of Five, The Rule of Zero
C++ C++ expression ReCodEx
7 15. 11. 2024 PDF PPTX
  • Cast: C-style, static_cast, dynamic_cast, const_cast, reinterpret_cast
  • Parsování
  • Varianty: std::variant, std::visit
  • std::optional, std::expected
C++ C++ C++ expression - s parsováním a castěním/variantama
8 22. 11. 2024 PDF PPTX
  • Statický polymorfismus
  • Šablony tříd, funkcí
C++ Fraction<T> ReCodEx
9 29. 11. 2024 PDF PPTX
  • Práce s filesystemem přes std::filesystem
  • Regulární výrazy - stručně
  • Formátování textu přes std::format
  • Měření času s chrono
  • Random ukázka
ZIP / TAR C++ link-checker
10 6. 12. 2024 PDF PPTX
  • Iterátory
  • Ranges
  • (Concepts)
C++ Godbolt Fibonacci ReCodEx
11 13. 12. 2024 PDF PPTX
  • Vyjímky (zžumpy), noexcept, std::exception, std::runtime_error, std::logic_error
  • RAII
  • assert, static_assert
  • std::move, std::swap
  • Tooling: Clang-Tidy, AddressSanitizer, ...
assertions ("rozšíření" expression)
12 20. 12. 2024 PDF PPTX
  • CMake
  • find_package
  • FetchContent
  • vcpkg
dvd (bouncing DVD logo)
13 10. 1. 2025 PDF PPTX Zápočtový test

Důležité termíny

20. 11. 2024 Odsouhlasit téma zápočťáku - stručný popis
30. 11. 2024 Dodat specifikaci zápočťáku - 3rd party libraries, interface (CLI, GUI, ...), podrobný popis funkcionality
3rd party libraries musí být schváleny předem, specifikace v GitLabu
6. 12. 2024 Zadání úkolu #4 na ReCodExu
10. 1. 2025 Zápočtový test (rozšíření úkolu #4 na ReCodExu)
~ leden 2024 Opravný zápočtový test
19. 1. 2025 Dodat technologické demo zápočťáku, které jde pohodlně sestavit se všemi third party knihovnami; zápočťák by měl buďto využívat vcpkg, nebo (drobnější a často header-only knihovny) automaticky stáhnout a sestavit přes CMake (pomocí FetchContent). Program nemusí být kompletně funkční, měl by ale obsahovat plánované UI/API a využívat všechny plánované knihovny, aby šlo ověřit, že je celá konfigurace správně nastavená. Program by měl naznačovat plánovanou strukturu (rozdělení na hlavní moduly/objekty) a rozhraní. Samozřejmě ale, tato struktura může být v průběhu vývoje dále upravována.
15. 5. 2025 Odevzdání hotového zápočtového programu a jeho programové a uživatelské dokumentace
Zkouškové období 2025 Poslední možnost odevzdání opraveného zápočťáku

GitLab