Kurs nízkoúrovňového programování v C/C++ s d ůrazem na objektové programování a objektový návrh programů. Předpokládá znalosti základního kurzu programování NMIN101 a NMIN102, na které navazuje.
* C: Základy
- Hello, world!
- deklarace proměnných (zatím jenom int) a přiřazování
- podmínky, cykly, break a continue
- deklarace a volání funkcí
* C: Aritmetika
- celočíselné typy
- floating-point typy
- aritmetické a bitové operátory
- relační a booleovské operátory
- přiřazovací operátory
- explicitní a automatické typové konverze
- literály (včetně typovaných)
- komplexní čísla
* C: Složené typy
- struct, union
- pole
- ukazatele
- kvalifikátory (const, volatile)
- jak číst složité deklarace
* Principy počítačů
- procesor, paměť, periferie
- organizace paměti: kód, statická data, dynamická data, zásobník
- uložení dat v paměti:
- celá čísla, dvojkový doplněk
- fixed-point reprezentace
- IEEE floaty
- znaky a různá jejich kódování
- překladač, linker, knihovny
* C: Práce s ukazateli
- dynamická alokace paměti
- spojové seznamy, stromy
- reprezentace polí pomocí pointerové aritmetiky
- práce s řetězci
* C: Preprocesor
- #include
- #define
- #if, #ifdef
* C: Ostatní
- switch, case, goto
- vedlejší efekty a synchronizační body
- knihovní typy
- různé knihovní funkce
- programy složené z více modulů, viditelnost identifikátorů
* C++: Objekty
- třídy, objekty, public/private, class/struct
- dědičnost a statické/virtuální metody
- konstruktory, destruktory
- konvece: gettery a settery
- přetěžování funkcí a operátorů
- objektový návrh
* C++: Standardní knihovna
- namespace
- stream
- pair
- vector
- string
- set, map
- iterátory a automatické typování deklarací
* C++: Ukazatele
- unique_ptr, shared_ptr
- reference
- copy/move semantika
- copy/move konstruktory
- konverzní konstruktory
- const_cast, static_cast, reinterpret_cast, dynamic_cast
* C++: Ostatní
- základní použití šablon
- výjimky
- knihovní algoritmy
- co za nás udělá překladač
Kurs nízkoúrovňového programování v C/C++ s důrazem na objektové programování a objektový návrh programů.
Předpokládá znalosti základního kurzu programování NMIN111 Programování 1 a NMIN112 Programování 2, na které navazuje.