Logo ČVUT
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
STUDIJNÍ PLÁNY
2024/2025

Pokročílé programování v C++

Přihlášení do KOSu pro zápis předmětu Zobrazit rozvrh
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ů:
Platnost dat k 23. 11. 2024
Aktualizace výše uvedených informací naleznete na adrese https://bilakniha.cvut.cz/cs/predmet5251206.html