Předmět: Programování v jazyce C

« Zpět
Název předmětu Programování v jazyce C
Kód předmětu KIV/PC
Organizační forma výuky Přednáška + Cvičení
Úroveň předmětu Bakalářský
Rok studia nespecifikován
Semestr Zimní
Počet ECTS kreditů 6
Vyučovací jazyk Čeština
Statut předmětu Povinný, Povinně-volitelný
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Vyučující
  • Skupa Miroslav, Ing.
  • Zmeškal Ladislav, Ing. Ph.D.
  • Wachter Ladislav, Ing.
  • Habrcetl Lubor, Ing.
  • Brožek Václav, Ing.
Obsah předmětu
Níže uvedená témata představují okruhy probírané látky, neodpovídají přesně jednotlivým rozvrhovaným přednáškám: (0) Úvodní informace - představení předmětu, jeho cíle a náplň. Rámcový program přednášek a cvičení. Organizace předmětu, průběh semestru. Požadavky k zápočtu a zkoušce, podmínky absolvování předmětu. Důležité informace a zdroje studijních materiálů. (1) Základní technické a historické informace o jazyce C. Použití, výhody a nevýhody, silné a slabé stránky. Stručný úvod do lexiky a syntaxe, nejjednodušší programy. Program typu "Hello, world!", vazba programu na operační prostředí. (2) Bližší pohled na syntax jazyka C, klíčová slova, základní konstrukce řízení běhu programu. Podmíněné a nepodmíněné větvení programu (if - else, return, break, continue), konstrukce switch, cykly (for, while, do). (3) Deklarace proměnných, jednoduché datové typy a jejich definice, datový typ pole, ukazatel, výčet, struktura, bitové pole, union, datový typ funkce, definice vlastního datového typu, definice konstant, deklarace a definice funkcí, přiřazovací příkaz, vstupně-výstupní operace, prázdný příkaz a příkaz skoku. (4) Výrazy, koncepty L-value a R-value, operátory, volání funkcí, předávání parametrů funkcím, přetypování čili explicitní typová konverze, podmíněný výraz, dosazovací výraz a dosazovací operátory, čárkovaný výraz. (5) Preprocesor jazyka C, lexikální konvence preprocesoru, definice maker preprocesoru a maker s parametry, rekurze maker, předdefinovaná makra v ANSI C, vkládání hlavičkových souborů, podmíněný překlad, předávání informací překladači - příkaz #pragma. (6) Řízený a automatizovaný překlad - nástroj make, příprava makefile, komentáře, tvorba pravidel, explicitní a implicitní pravidla, definice cílů, symbolické cíle, makra v makefile, příkazy operačního systému v makefile. (7) Standardní knihovna jazyka C: Vstupně-výstupní operace, soubory a proudy, standardní proudy stdin, stdout a stderr, operace se soubory, formátovaný vstup a výstup, chyby při práci se soubory, jejich detekce a řešení, pokročilé souborové operace. (8) Standardní knihovna jazyka C: Správa paměti, základní operace s pamětí - alokace a uvolnění bloku, realokace bloků, dynamická pole, pole jako argumenty funkcí, znakové řetězce, funkce pro práci s řetězci. (9) Standardní knihovna jazyka C: Znakové a řetězcové konstanty, funkce pro zpracování znaků, matematické funkce, generátor náhodných čísel, technika generování náhodných čísel s jiným než rovnoměrným rozdělením. (10) Standardní knihovna jazyka C: Datum a čas, měření doby běhu programu, práce s kalendářním časem, výpočet rozdílu časových údajů. Řídicí funkce a diagnostika, ladicí makra, příkazový procesor operačního systému, násilné ukončení programu, ukončovací funkce, signály. Standardní rozšíření jazyka podle normy ANSI C, ošetření chybových stavů, práce s proměnnými operačního prostředí, prohledávání bisekcí, řazení algoritmem QuickSort. Funkce s proměnným počtem argumentů. (11) Programátorský model procesoru. Registry: všeobecné registry (střadače), segmentové registry, zvláštní registry, příznakový registr. Typy dat, endian procesoru. Volání podprogramů. Paměťové modely, mapa paměti. (12/v případě dostatku času) Multiplatformní knihovny na tvorbu grafických uživatelských rozhraní (např. GTK+, apod.). Rámcový přehled vlastností a technika programování aplikací v GTK+. Získání, instalace a specifika překladu programů s GTK+. Minimální aplikace v GTK+. Přidávání vizuálních komponent - widgetů. Řízení činnosti aplikace událostmi.

Studijní aktivity a metody výuky
Přednáška s diskusí, Přednáška s praktickými aplikacemi, E-learning, Skupinová výuka, Diskuse, Laboratorní praktika, Studium metodou řešení problémů, Samostatná práce studentů, Samostudium literatury, Přednáška, Přednáška s demonstrací
  • Projekt individuální [40] - 40 hodin za semestr
  • Kontaktní výuka - 65 hodin za semestr
  • Příprava na zkoušku [10-60] - 30 hodin za semestr
  • Praktická výuka [vyjádření počtem hodin] - 30 hodin za semestr
Předpoklady
Odborné znalosti
prakticky využívat nabyté znalosti z předmětů Počítače a programování 1 a Počítače a programování 2
samostatně psát jednoduché programy v libovolném strukturovaném imperativním nebo objektově orientovaném programovacím jazyce (např. Java, Pascal, C#, PHP, BASIC, apod.)
rozumět a aplikovat základní poznatky z oblasti teoretické informatiky (algoritmická složitost, množství informace, apod.)
číst a porozumět anglicky psané dokumentaci, referenční příručce
Odborné dovednosti
algoritmizovat jednoduché až středně obtížné problémy
provádět elementární analýzu a dekompozici předloženého problému, navrhnout jeho algoritmické řešení
spolehlivě ovládat základní vývojářské nástroje (programátorský textový editor, terminál/příkazový procesor OS, 2-panelový souborový manažer, atp.), má zkušenost s libovolným integrovaným vývojovým prostředím (např. Eclipse, apod.)
Obecné způsobilosti
bc. studium: své učení a pracovní činnost si sám plánuje a organizuje,
bc. studium: efektivně využívá různé strategie učení k získání a zpracování poznatků a informací, hledá a rozvíjí účinné postupy ve svém učení,
Výsledky učení
Odborné znalosti
programovacího jazyka ANSI C a základní znalost objektově orientovaného rozšíření C++ (v rozsahu pro uvedení do samostatného dalšího studia)
obecné principy imperativních programovacích jazyků se zvláštním zřetelem na nízkoúrovňové programování
uspořádání běhového prostředí procesů z hlediska programátora (uspořádání paměti, činnost CPU, atp.)
Odborné dovednosti
psát komplexní programy v jazyce ANSI C pro všechny podporované platformy
psát multiplatformní software, zná problémy a nástrahy tvorby software nezávislého na běhovém prostředí
orientovat se v cizím zdrojovém kódu nebo kódu tvořeném v týmu
Obecné způsobilosti
bc. studium: samostatně získávají další odborné znalosti, dovednosti a způsobilosti na základě především praktické zkušenosti a jejího vyhodnocení, ale také samostatným studiem teoretických poznatků oboru,
Vyučovací metody
Odborné znalosti
Přednáška založená na výkladu,
Přednáška s demonstrací,
Přednáška s diskusí,
Laboratorní praktika,
E-learning,
Řešení problémů,
Skupinová výuka,
Samostudium,
Samostatná práce studentů,
Přednáška s aktivizací studentů,
Diskuse,
Odborné dovednosti
Přednáška založená na výkladu,
Přednáška s demonstrací,
Přednáška s diskusí,
Laboratorní praktika,
E-learning,
Řešení problémů,
Skupinová výuka,
Samostudium,
Samostatná práce studentů,
Přednáška s aktivizací studentů,
Diskuse,
Obecné způsobilosti
Samostudium,
Hodnotící metody
Odborné znalosti
Praktická zkouška,
Demonstrace dovedností (praktická činnost),
Seminární práce,
Odborné dovednosti
Praktická zkouška,
Seminární práce,
Demonstrace dovedností (praktická činnost),
Obecné způsobilosti
Průběžné hodnocení,
Doporučená literatura
  • Herbison, S.P., Steele, G.L. Referenční příručka jazyka C. Science, 1996. ISBN 80-901475-50.
  • Herout, Pavel. Učebnice jazyka C. 1. díl. 6. vyd. České Budějovice : Kopp, 2009. ISBN 978-80-7232-383-8.
  • Kernighan, Brian W.; Ritchie, Dennis M. Programovací jazyk C. 2. vyd. Bratislava : Alfa, 1989. ISBN 80-05-00154-1.
  • Kernighan, Brian W.; Ritchie, Dennis M. The C Programming Language. 2. vyd. Prentice Hall, 1988. ISBN 978-0131103627.
  • Salus, Peter H. Imperative Programming Languages. Macmillan Technical Pub, 1998. ISBN 978-1578700097.
  • Virius, Miroslav. Jazyky C a C++ : kompletní průvodce. 2., aktualiz. vyd. Praha : Grada, 2011. ISBN 978-80-247-3917-5.


Studijní plány, ve kterých se předmět nachází
Fakulta Studijní plán (Verze) Kategorie studijního oboru/specializace Doporučený ročník Doporučený semestr