Programování 3 je určeno studentům druhého (potažmo jiného nežli prvního) ročníku oboru Matematika. Navazuje na prvácké Programování 2. Předmětem výkladu budou jazyky C a C++, objektové programování a další užitečné položky související s programováním.
Podmínky dosažení zápočtu jsou: Aktivní účast na cvičení, zápočtový program (jehož téma je nutno vybrat do termínu, který bude stanoven) a praktický zápočtový test.
Zkouška: Praktická část na objektový návrh (řešení stanoveného problému), ústní část (o tom, co bylo probráno). Zkoušku je možno skládat i bez zápočtu (v takovém případě je však třeba zápočet získat, zkouška jej neimplikuje).
Dosud bylo probráno:
- 4. října: Organizační záležitosti, podmínky zápočtu a zkoušky, historické poznámky, obecné komentáře k jazykům C a C++ ve vztahu k Pythonu. Datové typy, definice proměnných, ukázka prostředí (Visual Studio), pojem reference a pointeru. Slidy, skončili jsme u slidu 27 ("Od Pythonu k C").
- 4. října (misto cviceni): Vzhled programu v C, definice proměnných, definice funkcí, operátory, základní řídicí struktury. Slidy - od slidu 28.
- 11. října: Dalsi ridici struktury (for, switch), Eukleidův algoritmus jako příklad snadného programu v C, pole, pointery (1. cast). Slidy - priblizne po slide 22.
- 18. října: Pointery, allokace pameti, funkce malloc, operator vzeti pointeru (ampersand) a dereference (hvezdicka), specifika pointeru, stringy a pole jako pointery. Slidy jsme pouzili minule az po slide 46. Predvadeny zdrojak.
- 25. října: Dynamicka alokace (malloc, free), struktury, unie, spojove seznamy, priklad (zasobnik), prace se soubory. Predvadeny zdrojak. Slidy (po slide 5 vcetne).
- 1. listopadu: Prubeh prekladu a jeho faze (preprocesor, jadro prekladace, linkovani), nektere direktivy prekladace (#include), hlavickove soubory a jejich fungovani, oddeleny preklad, Makefile jakozto reprezentant popisu projektu. Slidy pokracuji z minule hodiny.
- 8. listopadu: Dalsi direktivy preprocesoru (#ifdef, #ifndef, #if, #else, #endif), makra (#define), promenlivy pocet argumentu (operator tri tecek, struktura va_list, makra va_start, va_arg a va_end). Slidy jsme dorazili ty u predminule hodiny. Zdrojak z prednasky
- 15. listopadu: Vyctove datove typy, organizace pameti, fungovani procesu a vlaken v systemu, virtualni pamet (strankovaci tabulky), problemy pri praci s pameti, uvod do C++. Slidy. (probrali jsme prvni ctyri).
- 22. listopadu: Tridy, metody, atributy, objektovy navrh. Predani hodnotou a referenci, pretezovani funkci, konstruktory, destruktor, dedicnost. Zdrojak z prednasky.
- 26. listopadu: Nasobna dedicnost, diamantovy problem, virtualni funkce, ciste virtualni funkce, abstraktni tridy, friend-funkce, staticke promenne, atributy a metody, pretezovani operatoru. Zdrojak z prednasky.
- 29. listopadu: vyjimky (try, catch, throw), sablony (template - jak na funkce tak na tridy). Zdrojak z prednasky.
- 6. prosince: Windows Forms Applications. Samplovy projekt. Slidy.
- 13. prosince (predp.): diskretni simulace.Slidy.
- 20. prosince: IoT
- 3. ledna: Dalsi programovani jazyky (Java, C#).
Zdrojak z prednasky 15. listopadu,
Zdrojak z prednasky 22. listopadu.
Priklad objektoveho navrhu Dijkstrova algoritmu jako diskretni simulace i s implementaci.
Poznamky tykajici se toho, co jsem vykladal na poslednich dvou hodinach (tedy formularovych aplikaci, class diagramu, unit testu a verzovacich systemu) v podobe mych poznamek, podle kterych jsem se pokousel dotycne nastroje predvadet.