NPRG041 - Programování v C++ | cvičení František Mejzlík

Cvičení C++ v pondělí 14h v SW2. update 10. 2. 2024

Kontakt

Mattermost -> 2324ZS -> nprg041-cpp-mejzlik

Víc viz slajdy z prvního cvičení.

Podmínky udělení zápočtu

Víc viz slajdy z prvního cvičení.

Sylabus

Zadání příkladů a úkolů najdete ve slajdech daných cvičení. Neúplnosti v zadáních dospecifikujte sami dle uvážení.

Exam slides
# Datum Slajdy Skeleton kódu Témata Příklady Domácí úkoly
1 2. 10. 2023 .pptx ---
  • Organizace, podmínky zápočtu, průběh cvičení
  • vývojové prostředí, GIT
  • Hello World!, funkce, předávání parametrů
  • Lehký úvod do STD kontejnerů: std::vector, std::array, std::span
  • Základní IO: cin, cout, operator<<, std::getline
Výpis všech podmnožin --
2 9. 10. 2023 .pptx GitLab
  • lvalue vs rvalue, naťuknutí move semantiky
  • rvalue reference, lvalue reference
  • C-stringy, std::string, std::string_view
  • Naťuknutí smart vs raw pointery
  • Typické chyby v C++ programech (a jak moderní C++ může pomoci)
    • memory leaky, double frees, dereference nevalidního pointeru
    • používání neinicializované paměti, buffer overflows, pokropení paměti
  • Motivace nepoužívat printf
  • struct/class jako POD pro seskupení dat
  • auto, nullptr, std::tuple, std::pair, structured bindings, std::optional
Řetězcový BST po staru --
3 16. 10. 2023 .pptx GitLab
  • Motivace pro používání smart pointerů
  • raw vlastnické pointery, smart pointery, obsrver pointery
  • Pojem vlastnictví v C++ a jeho sdílení/přesun
  • std::unique_ptr, std::shared_ptr, jejich použití a na co si dát pozor
  • STD kontejnery jako "smart pointery" na kolekce prvků
Řetězcový BST moderně --
4 23. 10. 2023 .pptx GitLab
  • Podrobněji posílání parametrů v C++ a význam const, constexpr
  • Chyby ve vracení referencí z funkcí
  • Kompilace a linkování
  • použití classy/structy
  • Speciální member funkce a jejich default/delete
  • Rule of 0, rule of 5
Zobecněný a enkapsulovaný BST Zadání #1: Počítání oveček
Pomocný kód
5 30. 10. 2023 .pptx GitLab
  • Výjimky a práce s nimi
  • Parsování čísel
  • Castění
  • Dědičnost a runtimový polymorfismus
  • Virtuální metody, abstraktní třídy
ZOO --
6 6. 11. 2023 .pptx GitLab
  • Build systémy a meta-build systémy
  • CMake
  • C++ dependence a blíčkovače
  • vcpkg
  • CMake + vcpkg pro projekt s boost.asio a SFML
Renderovací UDP server & klient Deadline #1
Zadání #2 (Databáze lidí)
7 13. 11. 2023 .pptx GitLab
  • STD sekvenční kontejnery: array, vector, deque, forward_list, list
  • STD (ne)setříděné asociativní kontejnery: set, map, multiset, multimap
  • Kontejnery odvozené: stack, queue, priority_queue
  • Kontejnerové vhledy: span, string_view
  • Iterátory a vlastní iterátory
Implementace vektoru bez invalidace iterátorů
+ vlastní forward iterátor
--
8 20. 11. 2023 .pptx
VIDEA:
Teorie
Kódění
(přihlaste se pomoci učtu
neco@cuni.cz, pak přes SIS login)
GitLab
  • Knihovna STD algorithm
  • Práce s filesystemem přes std::filesystem
  • Měření času s std::chrono
Rekurzivní prohledavač souborů Deadline #2 (databáze lidí)
Zadání #3 (Rastrový kreslič)
9 27. 11. 2023 .pptx GitLab
  • Funktory, lambdy
  • Přetěžování operátorů
  • Náhodná čísla a různá rozdělení pomocí STD random
Náhodně generovaná databáze bytů
a dotazování nad ní
--
10 4. 12. 2023 .pptx GitLab
  • C++20 ranges
  • STD algoritmy s ranges
  • Kompozice funkcí a piping, projekce
  • RAII
  • (N)RVO
  • Doxygen
Náhodně generovaná databáze bytů
a dotazování nad ní ale s ranges
Deadline #3, zadání #4 (během týdne)
11 11. 12. 2023 .pptx GitLab
  • Recursive-descent parsing
  • Generické programování, šablony
Šablonovaný kontejner
(GoodVec z Lab 07)
bez invalidace interátorů
--
12 18. 12. 2023 .pptx GitLab Zápočtový test nanečisto (rozšíření zadani #3) Na cvičení Deadline #4 (pro zpětnou vazbu do 31. 12. 2023),
jinak je deadline zapoctovy test
-- 1. 1. 2024 -- -- -- Nový rok -- -- --
13 8. 1. 2024 .pptx GitLab Zápočtový test (rozšíření zadani #4) Na cvičení --

Důležité termíny

17. 11. 2023 Odsouhlasit téma zápočťáku
30. 11. 2023 Dodat specifikaci zápočťáku
18. 12. 2023 Odevzdaný poslední úkol v recodexu
18. 12. 2023 Dokončené a odladěné všechny příklady ze cvičení ve vašem repozitáři na MFF Gitlabu (zadání jsou vždy ve slajdech daného cvičení)
8. 1. 2024 Zápočtový test
18. 01. 2024 (11h SW2) Opravný zápočtový test
19. 1. 2024 Dodat technologické demo zápočťáku se všemi third-party libkami, které jde pohodlně sestavit
30. 4. 2024 Odevzdání hotového zápočtového programu

GitLab

Zápočtový program

Převzato ze stránek cvičení Filipa Zavorala.

Témata zápočtových programů

Převzato ze stránek cvičení Filipa Zavorala.