Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

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
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

Jan Faigl 2017/02/22 06:49

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

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í

Jan Faigl 2017/02/20 15:57

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 2017/03/16 22:25

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

Jan Faigl 2017/03/21 13:34

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

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

Jan Faigl 2017/04/04 13:42

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

Jan Faigl 2017/03/04 21:17

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

Přednáška formou ukázek.

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

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

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.

Přednášku povede Ing. Daniel Fišer a bude více zaměřena na použití verzovacího systému Git.

Jan Faigl 2017/06/04 17:50

courses/b3b36prg/lectures/start.txt · Last modified: 2017/06/04 17:26 by faiglj