Jazyk C – Praktické programování pro pokročilé (C2)
Programování, C, C++
Zatímco se aplikační svět posunul k vyšším abstrakcím, C zůstává jazykem operačních systémů, síťových stacků, embedded zařízení, databází a také implementací vyšších programovacích jazyků. Používá se v mnoha oblastech pro svoji relativní jednoduchost oproti abstraktním jazykům jako je C++.
Průmyslové nasazení C se týká především všemožných mikrokontrolerů a specializovaných kusů hardware, které provádějí výpočty v reálném čase. Zároveň je kód napsaný v C snadné integrovat do mnoha dalších jazyků, což pro C++ zdaleka neplatí.
Kurz je aktualizovaný na standard C23. Je určený především do prostředí embedded software a unixových systémů. Lze upravit na míru vašim potřebám.
TOTO ŠKOLENÍ VÁM POMŮŽE:
- Prohloubit a upevnit znalost programovacího jazyka C a jeho standardní knihovny
- Naučit se využívat vlastnosti jazyka standardní knihovny k tvorbě kvalitního kódu
- Vyzkoušet si techniky, jak do C přidat vlastnosti, které tam na první pohled nejsou
KDO BY SE MĚL KURZU ZÚČASTNIT?
- Zkušenější vývojáři embedded systémů a firmware
- Vývojáři operačních systémů, runtime a frameworků
- Zájemci o programovací jazyky a prostředí
Privátní školení a termíny na míru
Tento kurz nabízíme pouze jako uzavřené privátní školení. Obsah, délka a termíny kurzů budou vytvořeny podle vašich specifických potřeb. Specifičnost tohoto školení a nízký zájem jednotlivců neumožňuje pro tento kurz vypisovat veřejné termíny.
Cenovou nabídku vám rádi připravíme na základě vašich požadavků a cílů zaslaných e-mailem nebo zadaných prostřednictvím poptávkového formuláře. Cena privátního školení vychází z náročnosti požadované obsahové náplně školení, časového rozsahu a celkového počtu přihlášených osob.
KDE A KDY KURZ PROBÍHÁ?
Kontaktujte nás
S námi
máte na výběr: Přijďte na
kurz osobně do naší učebny, nebo se ke kurzu
připojte online. Pokud preferujete online formu, uveďte prosím do poznámky v objednávce "Připojím se virtuálně".
Více informací k hybridní formě školení
naleznete zde.
Náplň kurzu:
Skrýt detaily
-
Možnosti programovacího jazyka C
-
Konzervativní rozvoj a standard C23
-
Unikátní postavení jazyka C v praxi
-
Rozdíly oproti moderním alternativám
-
Zpracovávání chyb
-
Ošetřování návratových hodnot
-
Atribut [[nodiscard]] (C23)
-
Unwinding selhání pomocí goto
-
Ukazatele do paměti
-
Jak přemýšlet o vlastnictví paměti (ownership)
-
Propůjčování přístupu k objektům (borrowing)
-
Doba platnosti objektu (lifetime)
-
Pravidla pro aliasing
-
Pointery různého typu na stejnou paměť
-
Nepřekrývající se paměť (restrict)
-
Prostor pro optimalizaci kompilátorem
-
Alokace paměti
-
Statická data, zásobník a halda (static, stack, heap)
-
Arény a další alokační strategie
-
Zajištění korektního uvolnění
-
Hromadná alokace paměti
-
Indexová a pointerová aritmetika
-
Použití sizeof a velikost pole
-
Kopírování paměti a realokace
-
Dynamické datové struktury
-
Rostoucí pole a buffery
-
Realokace souvislých sekvencí
-
Spojové seznamy, stromy a grafy
-
Rekurzivní volání
-
Přímá a nepřímá rekurze
-
Ukončovací podmínka rekurze
-
Optimalizace rekurze
-
Struktury a abstrakce
-
Ustoupení od assemblerovského přístupu
-
Seskupení závislých dat a invarianty
-
Abstraktní datové typy a rozhraní
-
Možnosti generického programování
-
Klíčové slovo _Generic
-
Generování kódu pomocí maker
-
Vymazání typu, sizeof a alignof a alignas
-
Polymorfismus
-
Podstruktura reprezentující nadřazený typ
-
Implementace container_of pomocí offsetof
-
Příklad: Intruzivní spojový seznam
-
Výčtový polymorfismus
-
Použití enum pro identifikaci typu
-
Alokace místa pomocí union
-
Imitace algebraického typu s enum
-
Práce s bity a binárními daty
-
Bitové položky struktur
-
Endianness a konverze
-
Serializace struktur
-
Objektově orientované programování
-
Informace o skutečném typu za běhu programu
-
Pointery na funkce a struktury operací (VMT)
-
Výchozí operace a imitace dědičnosti
-
Modularita
-
Hlavičkové soubory a #pragma once (header)
-
Statické a externí globální symboly
-
Dynamické a header-only knihovny
-
Tvorba korektních programů
-
Nedefinované chovnání
-
Použití sanitizerů při ladění
-
Statické analyzátory
-
Bonus: Externí knihovny
-
SDL3
-
libpng
-
libcurl
-
SQLite
-
Předpokládané znalosti:
-
Zkušenost s programováním v jazyce C
-
Doporučený předchozí kurz:
-
Jazyk C – Základy programování (C1)
-
Doporučený následný kurz:
-
Jazyk C – Návrhové vzory a objektově orientovaný návrh (C3)
-
Časový rozvrh:
-
3 dny (9:00hod. - 17:00hod.)