Programování v C
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
B3B36PRG | Z,ZK | 6 | 2P+2C | česky |
- Vztahy:
- Předmět B3B36PRG nesmí být zapsán, je-li v témže semestru zapsán anebo již dříve absolvován předmět BAB36PRGA (vztah je symetrický)
- Předmět B3B36PRG může při kontrole studijních plánů nahradit předmět BAB36PRGA
- Předmět B3B36PRG nesmí být zapsán, je-li v témže semestru zapsán anebo již dříve absolvován předmět BAB36PRGA (vztah je symetrický)
- Garant předmětu:
- Přednášející:
- Cvičící:
- 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
- Pro tento předmět se rozvrh nepřipravuje
- Předmět je součástí následujících studijních plánů:
-
- Kybernetika a Robotika 2016 (povinný předmět programu)
- Kybernetika a Robotika 2021 (povinný předmět programu)