Vývoj aplikací
v C++
Vstup do světa vysokoúrovňového programování s kurzem C++. Překonej počáteční nejistotu a získej know-how i skills pro vývoj výkonných a efektivních aplikací.
Vít Štěpánek
Ex-Senior C++ Developer
EnOcean
-
Kurz C++ spojuje teoretické základy s praktickými cvičeními, což ti pomůže rychle překonat počáteční složitosti programovacího jazyka C++.
-
Čeká tě deep dive do syntaxe, objektově orientovaných konceptů a moderních technik v C++, což ti usnadní pochopení specifických požadavků tohoto jazyka.
-
Získáš skillset, který ti umožní vytvářet efektivní aplikace, pracovat s více vlákny i pokročilými knihovnami.
- Rezervuj si místo
O kurzu
- TIMELINE:
LISTOPAD–LEDEN
- ČEKÁ TĚ:
16 LEKCÍ
- FORMÁT:
živě online
V kurzu Vývoj aplikací v C++ si osvojíš klíčové principy programování v jazyce C++. Naučíš se, jak správně spravovat paměť, využívat polymorfismus, šablony a pracovat s vlákny. Osvojíš základní i pokročilé skills pro vývoj výkonných a efektivních aplikací.
Čeká tě deep dive do manuální správy paměti, optimalizace kódu a použití technik pro výkonné programování. Na kurzu rozvineš své programovací skills a usnadníš si hledání práce.
KURZ JE VHODNÝ PRO
LEKTOR
Vít Štěpánek
Ex-Senior C++ Developer, EnOcean
-
Má zkušenosti z několika významných bank a finančních institucí, jako jsou Deutsche Börse, Commerz Systems a CGI, kde se podílel na údržbě a vývoji obchodních a finančních systémů.
-
V minulosti působil jako SW architekt pro jednu z největších evropských bank, kde navrhoval a koordinoval vývoj credit rating systému a vedl redesign IoT produktu pro cloudové řešení.
-
Ve společnosti EnOcean pracoval jako senior C++ developer, kde se zaměřoval na vývoj backendových aplikací pro překlady mezi IoT protokolem a integrační vrstvou.
-
Má více než 20 let zkušeností v programování, posledních 15 let se specializuje na C++.
Program
-
1 LekceStředa 20. 11. 2024 17:30–19:00
Úvod do C++
- Představení kurzu a cílů jednotlivých lekcí
- Seznámení s kódem
- Kick off – „Hello world
- Kompilace – koncepce kompilace, object filů, headerů, flagy
- Linkování s *.a, *.so knihovnami
- Kompilace knihovny (vs. kompilace executable)
- Další nejběžnější compiler flagy (optimalizace, warnings)
Výstupy z lekce: Seznámíš se s ukázkovým kódem obsahujícím důležité prvky a porozumíš jejich významu. Pochopíš princip kompilace, tvorbu object filů a headerů. Naučíš se používat základní kompilátorové flagy a budeš umět linkovat kód s knihovnami typu *.a a *.so, přičemž poznáš rozdíl mezi kompilací knihovny a kompilací spustitelného souboru.
-
2 LekcePondělí 25. 11. 2024 17:30–19:00
Proměnné, datové typy, flow control
- Hello world – rozpracování do korektní formy
- Datové typy (základní)
- Typy proměnných (value, pointer, reference, pole)
- Const qualifier (u proměnných)
- Řízení toku kódu – if, while, for
- Operátory a jejich priorita
- Keyword „auto“ – dedukce typu, structure binding
- stdout, stdin
Výstupy z lekce: Porozumíš základním datovým typům (int, float a char), včetně jejich rozsahu, velikosti a použití. Naučíš se rozlišovat mezi různými typy proměnných, jak je správně je deklarovat a používat. Zvládneš použít kvalifikátor const u proměnných pro zajištění neměnnosti dat a pochopíš jeho význam pro bezpečnost kódu. Ovládneš základní řídicí struktury, jako jsou if, while a for, k ovládání toku programu a porozumíš jejich syntaxi a použití. Také se naučíš pracovat se standardními vstupy a výstupy, včetně čtení a zápisu dat do konzole a z konzole.
-
3 LekceStředa 27. 11. 2024 17:30–19:00
Funkce a volání
- Deklarace funkce bez parametrů, s parametry
- Volání funkcí
- Overloading („přetěžování“)
- Rekurze
- Příklad rekurze – výpočet fibonacci sekvence (past rekurze!)
- Přetypování explicitní (kromě „dynamic_cast“)
- Přetypování implicitní (a jeho pravidla)
- void*, kde ho vidět, kdy ho použít a proč ho nepoužívat
- nullptr vs. NULL
Výstupy z lekce: Budeš schopen*á správně deklarovat a definovat funkce, a to jak bez parametrů, tak s parametry, a porozumíš jejich roli v programu. Naučíš se volat funkce v různých částech programu a pochopíš, jak funguje předávání argumentů do funkcí. Dokážeš implementovat rekurzivní funkci pro výpočet Fibonacciho sekvence a porozumíš problémům spojeným s neefektivní rekurzí. Budeš také umět používat implicitní i explicitní přetypování.
-
4 LekcePondělí 2. 12. 2024 17:30–19:00
Třídy, dědičnost, polymorfismus I
- Třída v CPP (koncepce, možnosti dědičnosti, virtuálních metod, ctor a dtor)
- Přístup k objektu podle veřejnosti (public, protected, private)
- Metody třídy (nevirtuální)
- Speciální metody (ctor, copy ctor, move ctor, copy assignment, move assignment, dtor)
- „default“, „delete“ keywords na speciálních metodách
- Operator overloading na třídách (operátor not, []...)
- Output operator <<
Výstupy z lekce: Porozumíš základnímu konceptu třídy v C++, včetně možností dědičnosti, použití virtuálních metod a role konstruktorů a destruktorů. Naučíš se používat přístupové specifikátory public, protected a private. Budeš schopen deklarovat a implementovat nevirtuální metody třídy a pochopíš jejich roli a použití v programech. Také zvládneš přetěžovat operátory, jako jsou !, [], a operátor výstupu <<.
-
5 LekceStředa 4. 12. 2024 17:30–19:00
Třídy, dědičnost, polymorfismus II
- Dědičnost
- class vs. struct
- Praxe vs. teorie: efektivní dědičnost (příklad „formatter“ – elements to be printed in >2 formats)
Výstupy z lekce: Porozumíš dědičnosti a různým přístupovým úrovním, které s ní souvisí. Naučíš se pracovat s virtuálními a abstraktními metodami a pochopíš jejich použití v objektově orientovaném programování.
-
6 LekcePondělí 9. 12. 2024 17:30–19:00
Proces, paměť, dynamická alokace
- Stack, heap, static and global
- RAII koncept
- Object pool koncept
Výstupy z lekce: Chápeš rozdíl mezi stackem a heapem a budeš umět používat operátory new, delete, new[], a delete[]. Také rozumíš rozdílu mezi new a malloc a osvojíš si postupy, jak zamezit heap pollution.
-
7 LekceStředa 11. 12. 2024 17:30–19:00
Výjimky, exception safety, const correctness
- Výjimky jako signalizace porušení kontraktu
- Definice výjimek v CPP
- Blok „try“ a odchytávání výjimek
- Dědičnost výjimek a hierarchie „catch“ bloků
- Význam const correctness
- Vyladění přístupu k datovým členům třídy pomocí const a mutable
Praktické cvičení: Porozumíš vlivu výjimek na výkon programu a naučíš se je správně odchytávat, přičemž se vyhneš problémům, jako je „object slicing“. Budeš také umět používat const pro správu datových členů, parametrů a výjimek, aby byl kód efektivní a bezpečný.
-
8 LekcePondělí 16. 12. 2024 17:30–19:00
Šablony – funkce a třídy (metaprogramming)
- Princip šablonových funkcí
- Instantiation
- Šablonové třídy
- Specializace
- Částečná specializace
- Template aliases
- SFINAE
- Auto v šablonách
Výstupy z lekce: Naučíš se definovat a používat šablonové třídy, porozumíš specializaci a částečné specializaci šablon, a také zvládneš používat template aliases pro zjednodušení práce s šablonami v kódu.
-
9 LekceStředa 18. 12. 2024 17:30–19:00
RAII v praxi: smart pointers, move concept; lambdy
- Správa paměti
- Princip přesunu resourců
- std::move – konverzní funkce a její použití
- move ctor a move assignment operator – implementace
- lambda, capture list
- Použití anonymních funkcí
- Template lambda
Výstupy z lekce: Naučíš se, jak funguje správa paměti pomocí shared_ptr a unique_ptr, a porozumíš principu přesunu zdrojů pomocí move a r-value referencí. Zvládneš také používat lambda výrazy, včetně capture listu a anonymních funkcí, pro efektivní a moderní C++ programování.
-
10 LekcePondělí 23. 12. 2024 17:30–19:00
Live coding – implementace fronty
- Komentovaná implementace třídy queue s metodami push a pop
-
11 LekcePondělí 8. 1. 2025 17:30–19:00
STD kontejnery a algoritmy I.
- Kontejnery
Výstupy z lekce: Porozumíš, proč většinou není potřeba vytvářet vlastní kontejnery, a naučíš se efektivně používat standardní kontejnery jako vector, list, set a map v praxi.
-
12 LekceStředa 13. 1. 2025 17:30–19:00
STD kontejnery a algoritmy II.
- Kontejnery
- multiset, multimap
- deque, stack, queue
- unordered_map, underered_set
- std algoritmy
- cppreference.com a jak ji číst a používat
Výstupy z lekce: Naučíš se používat pokročilé kontejnery jako multiset, multimap, deque, stack, queue, unordered_map a unordered_set. Zároveň porozumíš běžným standardním algoritmům v C++ a jejich využití pro efektivní manipulaci s těmito kontejnery.
Praktické cvičení: Vyhledávání anagramů (reálný příklad úkolu z výběrového řízení na juniorní pozici).
- Kontejnery
-
13 LekcePondělí 15. 1. 2025 17:30–19:00
Základy vícevláknového programování - multithreading
- Vlákna (std::thread)
- thread_local proměnné
- Pasti – race condition, deadlock
- Typy mutexů a proč většinu nepoužívat
- Lockable koncept
- condition_variable
- Použití std::async, std::future, std::promise
- Semafory a synchronizační primitiva
- Atomické operace, synchronizační bariéry
Výstupy z lekce: Naučíš se používat základní principy vícevláknového programování v C++, včetně práce s std::thread, thread_local proměnnými a synchronizačními mechanismy, jako jsou mutexy a condition_variable. Zároveň se naučíš, jak se vyhnout běžným problémům, jako jsou race conditions a deadlocky, pro bezpečné a efektivní vícevláknové programování.
Praktické cvičení: Linked list.
-
14 LekceStředa 20. 1. 2025 17:30–19:00
Streamy, filesystem, optional a ostatní klíčové utility
- Čtení a zápis do souborů – fstream
- Formátování a parsování textu – stringstream
- Plusy a mínusy používání streamů
- Kontejnery pro bezpečné a flexibilní zacházení s daty
- Funkční objekty a přístup k souborovému systému
Výstupy z lekce: Naučíš se používat fstream pro čtení a zápis do souborů a stringstream pro formátování a parsování textu, přičemž porozumíš výhodám a nevýhodám streamů. Zvládneš efektivně používat moderní C++ kontejnery a typy a osvojíš si využívání funkčních objektů, jako jsou std::function a std::bind, pro flexibilní a výkonné programování.
-
15 LekcePondělí 22. 1. 2025 17:30–19:00
Závěrem: optimalizace, unit testy, frameworky, buildovací nástroje, reference
- Optimalizační rozhodnutí
- Výhody používání unit testů v každodenním životě
- Boost
- Pokročilý metaprogramming
Výstupy z lekce: Naučíš se dělat informovaná rozhodnutí ohledně optimalizace kódu a osvojíš si používání unit testů v každodenním vývoji. Zvládneš také řešit problémy s netestovatelností kódu, aby byl tvůj vývojový proces efektivní a spolehlivý.
-
16 LekceStředa 22. 1. 2025 17:30–19:00
Q&A
- Témata, která nebyla pochopena
- Témata, o která studující projevili*y zájem
- Diskuze
ZÍSKEJ VÍCE INFORMACÍ O KURZU VÝVOJ APLIKACÍ V C++
Vyplň registrační formulář a připoj se k nám! Náš r_d tým se s tebou spojí co nejdříve, abys získal*a všechny potřebné detaily o obsahu kurzu Vývoj aplikací v C++ a jeho ceně.