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
    1. Konzervativní rozvoj a standard C23
    2. Unikátní postavení jazyka C v praxi
    3. Rozdíly oproti moderním alternativám
  • Zpracovávání chyb
    1. Ošetřování návratových hodnot
    2. Atribut [[nodiscard]] (C23)
    3. Unwinding selhání pomocí goto
  • Ukazatele do paměti
    1. Jak přemýšlet o vlastnictví paměti (ownership)
    2. Propůjčování přístupu k objektům (borrowing)
    3. Doba platnosti objektu (lifetime)
  • Pravidla pro aliasing
    1. Pointery různého typu na stejnou paměť
    2. Nepřekrývající se paměť (restrict)
    3. Prostor pro optimalizaci kompilátorem
  • Alokace paměti
    1. Statická data, zásobník a halda (static, stack, heap)
    2. Arény a další alokační strategie
    3. Zajištění korektního uvolnění
  • Hromadná alokace paměti
    1. Indexová a pointerová aritmetika
    2. Použití sizeof a velikost pole
    3. Kopírování paměti a realokace
  • Dynamické datové struktury
    1. Rostoucí pole a buffery
    2. Realokace souvislých sekvencí
    3. Spojové seznamy, stromy a grafy
  • Rekurzivní volání
    1. Přímá a nepřímá rekurze
    2. Ukončovací podmínka rekurze
    3. Optimalizace rekurze
  • Struktury a abstrakce
    1. Ustoupení od assemblerovského přístupu
    2. Seskupení závislých dat a invarianty
    3. Abstraktní datové typy a rozhraní
  • Možnosti generického programování
    1. Klíčové slovo _Generic
    2. Generování kódu pomocí maker
    3. Vymazání typu, sizeof a alignof a alignas
  • Polymorfismus
    1. Podstruktura reprezentující nadřazený typ
    2. Implementace container_of pomocí offsetof
    3. Příklad: Intruzivní spojový seznam
  • Výčtový polymorfismus
    1. Použití enum pro identifikaci typu
    2. Alokace místa pomocí union
    3. Imitace algebraického typu s enum
  • Práce s bity a binárními daty
    1. Bitové položky struktur
    2. Endianness a konverze
    3. Serializace struktur
  • Objektově orientované programování
    1. Informace o skutečném typu za běhu programu
    2. Pointery na funkce a struktury operací (VMT)
    3. Výchozí operace a imitace dědičnosti
  • Modularita
    1. Hlavičkové soubory a #pragma once (header)
    2. Statické a externí globální symboly
    3. Dynamické a header-only knihovny
  • Tvorba korektních programů
    1. Nedefinované chovnání
    2. Použití sanitizerů při ladění
    3. Statické analyzátory
  • Bonus: Externí knihovny
    1. SDL3
    2. libpng
    3. libcurl
    4. 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.)