{{indexmenu_n>2}}
====== Přednášky ======
Podklady přednášek pro aktuální akademický rok 2016/2017. Podklady se skládají z promítaných slidů, které jsou také k dispozici ve zkrácených verzích šetrnějších k případnému tisku, bez přechodů mezi snímky a ve formátu čtyř a devíti snímků na stránku.
**Podklady tvoří podpůrný materiál a jejich učelem není nahradit vlastní zápisky z přednášky, které slouží také jako prostředek osvojení si studované problematiky.**
Tématicky je náplň přednášek pokryta v knize **K.N. King: C Programming A Modern Approach, Second Edition. W. W. Norton & Company, Inc., 2008**, případně též //Pavel Herout, Učebnice Jazyka C - 1. díl, Kopp, 2016//. Před přednáškou je doporučeno pročíst si odkazované kapitoly.
^ #VTýden ^ Týden ^ Téma ^ Úterý 14:30 (Místnost T2:D3-208) ^
| 01 | 08. |Přednáška 01 - Informace o předmětu, Úvod do programování v C\\ K. N. King: kapitoly 1, 2 a 3 | 21.02. - lec01 |
| 02 | 09. |Přednáška 02 - Výrazy, řídicí struktury a funkce\\ K. N. King: kapitoly 4,
5, 6 a 20 | 28.02. - lec02 |
| 03 | 10. |Přednáška 03 - Datové typy: pole a ukazatele. Paměťové třídy. Volání funkcí\\ K. N. King: kapitoly 7, 8, 9, 10, 11 a 18 | 07.03. - lec03 |
| 04 | 11. |Přednáška 04 - Pole, řetězce a ukazatele\\ K. N. King: kapitoly 8, 11, 12, 13 a 17| 14.03. - lec04 |
| 05 | 12. |Přednáška 05 - Datové typy: Složený typ, výčtový typ a bitová pole. Preprocesor a sestavení programu\\ K. N. King: kapitoly 10, 14, 15, 16 a 20 | 21.03. - lec05 |
| 06 | 13. |Přednáška 06 - Vstup / výstup a standarní knihovny C \\ K. N. King: kapitoly 21, 22, 23, 24, 26 a 27 | 28.03. - lec06 |
| 07 | 14. |Přednáška 07 - Paralení programování, paralelní výpočty a synchronizační primitiva (semafory, zprávy a sdílená paměť ) | 04.04. - lec07 |chapters
| 08 | 15. |Přednáška 08 - Vícevláknové programování, modely aplikací, POSIX vlákna C11 vlákna | 11.04. - lec08 |
| 09 | 16. |Přednáška 09 - Praktická ukázka a ladění programu | 18.04. - lec09 |
| 10 | 17. |Přednáška 10 - ANSI C, C99, C11 a rozdíly mezi C a C%%++%%. Úvod do objektově orientovaného programování v C%%++%% | 25.04. - lec10 |
| 11 | 18. | //Pondělní rozvrh// | 02.05. //Pondělní rozvrh// |
| 12 | 19. |Přednáška 11 - Objektově orientované programování v C%%++%%: třídy, objekty, dědičnost a polymorfismus | 09.05. - lec11 |
| 13 | 20. |Přednáška 12 - Systémy pro správu verzí | 16.05. - lec12 |
| 14 | 21. |Přednáška 13 - **Zkouškový písemný test** | 23.05. - Test |
V přednáškách uvedené zdrojové kódy jsou přiloženy v příslušném ''.zip'' archivu. Kromě vyzkoušení programů je též vřele doporučeno si složitější úlohy samostatně naprogramovat a přednáškové příklady využít pro inspiraci.
**Podklady budou průběžně aktualizovány.**
===== 1. Informace o předmětu, základy programování v C =====
* prezentace: {{courses:b3b36prg:lectures:b3b36prg-lec01-slides.pdf|}}
* zkrácená verze: {{courses:b3b36prg:lectures:b3b36prg-lec01-handout.pdf|}}
* zkrácená verze 2x2: {{courses:b3b36prg:lectures:b3b36prg-lec01-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:b3b36prg:lectures:b3b36prg-lec01-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{:courses:b3b36prg:lectures:b3b36prg-lec01-codes.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2017/02/22 06:49//
===== 2. Výrazy, řídicí struktury a funkce =====
* prezentace: {{courses:b3b36prg:lectures:b3b36prg-lec02-slides.pdf|}}
* zkrácená verze: {{courses:b3b36prg:lectures:b3b36prg-lec02-handout.pdf|}}
* zkrácená verze 2x2: {{courses:b3b36prg:lectures:b3b36prg-lec02-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:b3b36prg:lectures:b3b36prg-lec02-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{:courses:b3b36prg:lectures:b3b36prg-lec02-codes.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2017/03/04 21:03// **Aktualizace**: Úprava sazby pro zachování kódovacího stylu. Doplnění příkladu ''sizeof.c''.
===== 3. Datové typy: pole a ukazatele. Paměťové třídy. Volání funkcí =====
* prezentace: {{courses:b3b36prg:lectures:b3b36prg-lec03-slides.pdf|}}
* zkrácená verze: {{courses:b3b36prg:lectures:b3b36prg-lec03-handout.pdf|}}
* zkrácená verze 2x2: {{courses:b3b36prg:lectures:b3b36prg-lec03-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:b3b36prg:lectures:b3b36prg-lec03-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{:courses:b3b36prg:lectures:b3b36prg-lec03-codes.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2017/02/20 15:57//
===== 4. Pole, řetězce a ukazatele =====
* prezentace: {{courses:b3b36prg:lectures:b3b36prg-lec04-slides.pdf|}}
* zkrácená verze: {{courses:b3b36prg:lectures:b3b36prg-lec04-handout.pdf|}}
* zkrácená verze 2x2: {{courses:b3b36prg:lectures:b3b36prg-lec04-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:b3b36prg:lectures:b3b36prg-lec04-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{:courses:b3b36prg:lectures:b3b36prg-lec04-codes.zip|}}
**Dotazy z přednášky**
Q: //Co udělá ''realloc()'' při zmenšení velikost nebo nastavení velikosti na 0?//
Zmenší alokované místo a v případě 0, např. ''realloc(ptr, 0);'' uvolní paměť a odpovídá tak volání ''free(ptr);''.
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2017/03/16 22:25//
===== 5. Datové typy: Složený typ, výčtový typ a bitová pole. Preprocesor a sestavení programu =====
* prezentace: {{courses:b3b36prg:lectures:b3b36prg-lec05-slides.pdf|}}
* zkrácená verze: {{courses:b3b36prg:lectures:b3b36prg-lec05-handout.pdf|}}
* zkrácená verze 2x2: {{courses:b3b36prg:lectures:b3b36prg-lec05-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:b3b36prg:lectures:b3b36prg-lec05-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{:courses:b3b36prg:lectures:b3b36prg-lec05-codes.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2017/03/21 13:34//
===== 6. Vstup / výstup a standarní knihovny C =====
* prezentace: {{courses:b3b36prg:lectures:b3b36prg-lec06-slides.pdf|}}
* zkrácená verze: {{courses:b3b36prg:lectures:b3b36prg-lec06-handout.pdf|}}
* zkrácená verze 2x2: {{courses:b3b36prg:lectures:b3b36prg-lec06-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:b3b36prg:lectures:b3b36prg-lec06-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{:courses:b3b36prg:lectures:b3b36prg-lec06-codes.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2017/03/04 21:17// **Aktualizace**: Terminál raw režim.
===== 7. Paralení programování, paralelní výpočty a synchronizační primitiva =====
* prezentace: {{courses:b3b36prg:lectures:b3b36prg-lec07-slides.pdf|}}
* zkrácená verze: {{courses:b3b36prg:lectures:b3b36prg-lec07-handout.pdf|}}
* zkrácená verze 2x2: {{courses:b3b36prg:lectures:b3b36prg-lec07-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:b3b36prg:lectures:b3b36prg-lec07-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{:courses:b3b36prg:lectures:b3b36prg-lec07-codes.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2017/04/04 13:42//
===== 8. Vícevláknové programování, modely aplikací, POSIX vlákna C11 vlákna =====
* prezentace: {{courses:b3b36prg:lectures:b3b36prg-lec08-slides.pdf|}}
* zkrácená verze: {{courses:b3b36prg:lectures:b3b36prg-lec08-handout.pdf|}}
* zkrácená verze 2x2: {{courses:b3b36prg:lectures:b3b36prg-lec08-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:b3b36prg:lectures:b3b36prg-lec08-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{:courses:b3b36prg:lectures:b3b36prg-lec08-codes.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2017/03/04 21:17//
===== 9. Praktická ukázka a ladění programu =====
Přednáška formou ukázek.
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2017/03/04 21:17//
**Dotazy z přednášky**
Q: //Proč při nastavení terminálu do raw režimu nedochází k tisku nového řádku na začátku?//
Při nastavení raw řežimu ''cfmakeraw()'' je vypnuto zpracování výstupních znaků (//output postprocessing//), které automaticky nahrazuje konec řádku za "návrat vozíku a nový řádek" (NL na CR-NL). Vyřešit lze buď explicitním uvedením znaku '\r', což ale není příliš kompatibilní nebo povolením //output processing// (OPOST) např.
static struct termios tio;
tcgetattr(STDIN_FILENO, &tio);
cfmakeraw(&tio); // nastavení raw režimu viz man termios
tio.c_oflag |= OPOST; //zapnutí output processing
tcsetattr(STDIN_FILENO, TCSANOW, &tio);
===== 10. ANSI C, C99, C11 a rozdíly mezi C a C++. Úvod do objektově orientovaného programování v C++ =====
* prezentace: {{courses:b3b36prg:lectures:b3b36prg-lec10-slides.pdf|}}
* zkrácená verze: {{courses:b3b36prg:lectures:b3b36prg-lec10-handout.pdf|}}
* zkrácená verze 2x2: {{courses:b3b36prg:lectures:b3b36prg-lec10-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:b3b36prg:lectures:b3b36prg-lec10-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{:courses:b3b36prg:lectures:b3b36prg-lec10-codes.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2017/04/25 13:41//
**Dotazy / připomínky z přednášky**
C: //Při přepnutí terminálu do raw režimu příkazem ''stty raw'' stále dochází k tisku stisknuté klávesy //
Pokud tomu tak je (např. v Linuxu), je nutné ještě vypnout echo například ''stty -noecho'' příkaz pro nastavení termínálu tak může být
stty raw -echo
a nastavit zpět pak lze např.
stty -raw echo
===== 11. Objektově orientované programování v C++: třídy, objekty, dědičnost a polymorfismus =====
* prezentace: {{courses:b3b36prg:lectures:b3b36prg-lec11-slides.pdf|}}
* zkrácená verze: {{courses:b3b36prg:lectures:b3b36prg-lec11-handout.pdf|}}
* zkrácená verze 2x2: {{courses:b3b36prg:lectures:b3b36prg-lec11-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:b3b36prg:lectures:b3b36prg-lec11-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{:courses:b3b36prg:lectures:b3b36prg-lec11-codes.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2017/06/04 17:50//
===== 12. Systémy pro správu verzí =====
Původní podklady pro obecný úvod do verzovacích systémů a to jak centralizovaných tak distribuovaných, s příkladem použití systémů RCS, SVN a Git.
* prezentace: {{courses:b3b36prg:lectures:b3b36prg-lec12-slides.pdf|}}
* zkrácená verze: {{courses:b3b36prg:lectures:b3b36prg-lec12-handout.pdf|}}
* zkrácená verze 2x2: {{courses:b3b36prg:lectures:b3b36prg-lec12-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:b3b36prg:lectures:b3b36prg-lec12-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{:courses:b3b36prg:lectures:b3b36prg-lec12-codes.zip|}}
Přednášku povede Ing. Daniel Fišer a bude více zaměřena na použití verzovacího systému Git.
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2017/06/04 17:50//