Přednášky

Podklady přednášek pro aktuální akademický rok 2017/2018. 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.

On-line otázky na přednášce

#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
20.02. - lec01
02 09. Přednáška 02 - Výrazy, řídicí struktury a funkce
K. N. King: kapitoly 4, 5, 6 a 20
27.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
06.03. - lec03
04 11. Přednáška 04 - Pole, řetězce a ukazatele
K. N. King: kapitoly 8, 11, 12, 13 a 17
13.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
20.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
27.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ěť ) 03.04. - lec07
08 15. Přednáška 08 - Vícevláknové programování, modely aplikací, POSIX vlákna C11 vlákna 10.04. - lec08
09 16. Přednáška 09 - Praktická ukázka a ladění programu 17.04. - lec09
10 17. Přednáška 10 - ANSI C, C99, C11 a rozdíly mezi C a C++. Úvod do C++ 24.04. - lec10
11 18. Státní svátek 01.05. Státní svátek
12 19. Státní svátek 08.05. Státní svátek
13 20. Přednáška 11 - Knihovna STL v C++ Objektově orientované programování v C++: třídy, objekty, dědičnost a polymorfismus 15.05. - lec11
13 20. Přednáška 12 - Třídy a objekty C++ Systémy pro správu verzí 17.05. čtvrtek - lec12
14 21. Přednáška 13 - Zkouškový písemný test Objekty v C++ 22.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

Jan Faigl 2018/02/19 21:08

2. Výrazy, řídicí struktury a funkce

Jan Faigl 2018/02/19 16:00

3. Datové typy: pole a ukazatele. Paměťové třídy. Volání funkcí

Jan Faigl 2018/02/19 16:00

4. Pole, řetězce a ukazatele

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);.

Jan Faigl 2018/02/19 16:00

5. Datové typy: Složený typ, výčtový typ a bitová pole. Preprocesor a sestavení programu

Jan Faigl 2018/02/19 16:00

6. Vstup / výstup a standarní knihovny C

Jan Faigl 2018/02/19 16:00

7. Paralení programování, paralelní výpočty a synchronizační primitiva

Jan Faigl 2018/02/19 16:00

8. Vícevláknové programování, modely aplikací, POSIX vlákna C11 vlákna

Jan Faigl 2018/02/19 16:00

9. Praktická ukázka a ladění programu

Přednáška formou ukázek.

Jan Faigl 2018/02/19 16:00

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 rež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++

Jan Faigl 2018/02/19 16:00

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

Jan Faigl 2018/02/19 16:00

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.

Jan Faigl 2018/02/19 16:00

courses/b3b36prg/lectures/start.txt · Last modified: 2018/02/19 21:08 by faiglj