Logo ČVUT
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
STUDIJNÍ PLÁNY
2022/2023

Programování v C

Přihlášení do KOSu pro zápis předmětu Zobrazit rozvrh
Kód Zakončení Kredity Rozsah Jazyk výuky
B3B36PRG Z,ZK 6 2P+2C česky
Předmět nesmí být zapsán současně s:
Programování v C (BAB36PRGA)
Předmět je náhradou za:
Programování v C (BAB36PRGA)
Přednášející:
Jan Faigl (gar.)
Cvičící:
Jan Faigl (gar.), Ingrid Nagyová, David Valouch
Předmět zajišťuje:
katedra počítačů
Anotace:

Cílem předmětu je získat ucelenou hlubší znalost programovacího jazyku C a to z pohledu fungování programu, přístupu a správou paměti a vytváření více-vláknových aplikací. V předmětu je kladen důraz na osvojení si programovacích návyků pro vytváření čitelných, a znovu použitelných programů. Studenti se v předmětu seznámí s překladem zdrojových kódu a jejich laděním. Přednášky jsou založeny na prezentaci základních programových konstrukcí a demonstraci motivačních programů dávající do souvislosti dílčí konstrukty s praktickým zápisem poukazující na čitelnost a strukturu zdrojových kódů, reálnou výpočetní náročnost a s tím související nástroje pro profilování a ladění. Studenti se seznámí s principy paralelního programování více-vláknových aplikací, mechanismy synchronizace a modely více-vláknových aplikací. V závěru semestru jsou stručně představeny základní vlastnosti objektově orientovaného rozšíření C++.

Požadavky:
Osnova přednášek:

1. Informace o předmětu, Úvod do programování v C

2. Výrazy a řídicí struktury

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

4. Pole, řetězce a ukazatele

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

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

7. Paralení programování, paralelní výpočty a synchronizační primitiva (semafory, zprávy a sdílená paměť)

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

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

10. ANSI C, C99, C11 a rozdíly mezi C a C++; úvod do C++

11. Stručný úvod do C++ (v příkladech)

12. C++ konstrukty v příkladech

13. (Rezerva) Systémy pro správu verzí (volitelné téma)

14. (Rezerva)

Osnova cvičení:

Praktická cvičení jsou zaměřena na získání a procvičování programovacích návyků tak, aby studenti byli schopni samostatně vytvářet čitelné a přenositelné kódy, které jsou spouštěny nejen na osobních počítačích, ale také na dedikovaných procesorových deskách typu STM32 Nucleo. V průběhu semestru studenti získávají body za odevzdané úlohy a programovací písemky. Bodové hodnocení úlohy se skládá z bodů za správnost a efektivitu kódu, dále pak z bodů zohledňující kvalitu zdrojových kódů, jejich čitelnost a znovu použitelnost.

1. Úvodní cvičení

2. Cykly a vnořené cykly

3. Řídicí struktury, funkce a ladění programu

4. Pole variabilní délky a textové řetězce

5. Dynamická alokace, struktury

6. Spojové struktury, práce se soubory

7. Úvod do Nucleo-F446RE

8. Konzultace k domácím úkolům

9. Propojení Nucleo-F446RE sériovou linkou

10. Vícevláknové aplikace

11. Komunikace Nucleo-F446RE s PC programem

12. Konzultace k semestrální práci

13. Konzultace k semestrální práci

14. Konzultace k semestrální práci

Cíle studia:

Získání zkušeností s programováním a získání programovacích návyků tvorby funkčních a správně implementovaných programů. Osvojení si psaní čitelných, srozumitelných, dobře udržovatelných a znovupoužitelných programů. Porozumění cizím kódům. Seznámení se s tvorbou programů pro operační systém i vestavné systémy. Realizace vícevláknovné aplikace komunikující s jednočipovým počítačem.

Studijní materiály:

• King: C Programming: A Modern Approach, (2nd Edition or later), 2008.

• Kochan: Programming in C, (3rd Edition or later), 2014.

• Klemens: 21st Century C: C Tips from the New School, 2012.

• Sedgewick, Wayne: Algorithms (4th Edition or later), 2011.

• Cormen, Leiserson, Rivest, and Stein: Introduction to Algorithms, (3rd Edition or later), 2009.

Poznámka:
Další informace:
https://cw.fel.cvut.cz/wiki/courses/b3b36prg/start
Rozvrh na zimní semestr 2022/2023:
Rozvrh není připraven
Rozvrh na letní semestr 2022/2023:
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Po
místnost T2:H1-130
Nagyová I.
16:15–17:45
(přednášková par. 1
paralelka 105)

Dejvice haly
AlgDejvice - Veřejná
místnost T2:H1-130
Nagyová I.
18:00–19:30
(přednášková par. 1
paralelka 106)

Dejvice haly
AlgDejvice - Veřejná
Út
místnost T2:H1-130
Nagyová I.
11:00–12:30
(přednášková par. 1
paralelka 103)

Dejvice haly
AlgDejvice - Veřejná
místnost T2:H1-130
Nagyová I.
12:45–14:15
(přednášková par. 1
paralelka 104)

Dejvice haly
AlgDejvice - Veřejná
St
místnost T2:H1-130
Valouch D.
11:00–12:30
(přednášková par. 1
paralelka 101)

Dejvice haly
AlgDejvice - Veřejná
místnost T2:H1-130
Valouch D.
12:45–14:15
(přednášková par. 1
paralelka 102)

Dejvice haly
AlgDejvice - Veřejná
místnost T2:D3-209
Faigl J.
16:15–17:45
(přednášková par. 1)
Dejvice
T2:D3-209
Čt

Předmět je součástí následujících studijních plánů:
Platnost dat k 29. 11. 2022
Aktualizace výše uvedených informací naleznete na adrese https://bilakniha.cvut.cz/cs/predmet4703406.html