Pokročílé programování v C++
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
18PCP | Z,ZK | 4 | 2P+2C | česky |
- Garant předmětu:
- Miroslav Virius
- Přednášející:
- Miroslav Virius
- Cvičící:
- Miroslav Virius
- Předmět zajišťuje:
- katedra softwarového inženýrství
- Anotace:
-
Předmět je věnován tvorbě knihoven v jazyce C++. Zabývá se problematikou kopírování a stěhování instancí, virtuálního dědění, variadických šablon, šablonového metaprogramování, tvorby šablonových knihoven, koncepty (omezení šablonových parametrů), moduly, korutinami, pohledy a rozsahy (ranges, views) a dalšími nástroji zavedenými standardem C++20, nástroji pro práci s datovými typy v době překladu a pokročilou diagnostikou šablonových konstrukcí, využitím podprocesů (paralelizace výpočtu).
- Požadavky:
-
Znalost programovacího jazyka C++ v rozsahu předmětu Programování v C++1, 2.
- Osnova přednášek:
-
1. Stěhování instancí
2. Virtuální dědění
a. Syntaktická pravidla, význam
b. Struktura instance
c. Příklad
3. Šablonové metaprogramování
a. Výpočetní úplnost aparátu šablon
b. Zobrazení typu na typ, hodnoty na typ
c. Rozhodování, náhrada cyklu
d. Využití, příklady
4. Variadické šablony (šablony s proměnným počtem parametrů) I.
a. Syntaktická pravidla, balík parametrů
b. Pravidla rozvoje balíku
c. Příklady
5. Variadické šablony II.
a. Využití šablonového metaprogramování pro variadické šablony
b. Nástroje pro diagnostiku
c. Příklady
6. Koncepty
a. Deklarace konceptu
b. použití konceptů v metaprogramování
c. Příklady
7. Moduly
a . Deklarace modulu
8. Rozsahy a pohledy
a. Základní nástroje
b. Příklady použití
d. Příklady
9. Korutiny
a. Základní nástroje
b. Implementace korutin
c. Příklady
10. Další pokročilé nástroje C++20 a C++23
a. Strukturovaná vazba
b. Funkce constexpr a consteval
c. Generické lambda-výrazy
11 Podprocesy (vlákna) I
a. Podproces a jeho stavy, třída std::thread
b. Základní operace s podprocesy
c. Synchronizace přístupu k datům
d. Příklady
12. Podoprocesy (vlákna) II
a. Model fungování paměti
b. Atomické typy
c. Asynchronní zpracování
d. Příklady
13. Opakování a příklady
- Osnova cvičení:
-
1.Osnova cvičení je shodní s osnovou přednášky
- Cíle studia:
-
Studenti získají hluboké znalosti o pokročilých nástrojích v programovacím jazyce C++ a o doporučených technikách pro jejich využití. Jedná se o nástroje, které jsou součástí standardu programovacího jazyka C++, ale nebyly pokryty v základním kursu. Tyto nástroje jsou nezbytné pro vytváření pokročilých knihoven v tomto jazyce zaměřených na nejen na výkon, ale i na kvalitu návrhu a architektury.
- Studijní materiály:
-
1.1. Virius, Miroslav: Programovací jazyk C++, 2. díl. Praha: ČVUT 2016. ISBN 978-80-01-06050-6.
2.M. Virius: Programovací jazyk C++, 3. díl. Praha: ČVUT 2017. ISBN 978-80-01-06089-6.
3. M. Virius: Pokročilé C++. Praha: ČVUT 2022. ISBN 978-80-01-06951-6.
Studijní pomůcky:
?Počítač s operačním systémem, klávesnicí a myší
?Vývojové prostředí obsahující překladač jazyka C++ vyhovující standardu ISO 14882:2011 s aktualizacemi označovanými C++20 nebo novější
- Poznámka:
- Rozvrh na zimní semestr 2024/2025:
- Rozvrh není připraven
- Rozvrh na letní semestr 2024/2025:
- Rozvrh není připraven
- Předmět je součástí následujících studijních plánů:
-
- Aplikace informatiky v přírodních vědách (volitelný předmět)
- Matematické inženýrství (volitelný předmět)
- Kvantové technologie (volitelný předmět)