Počet kreditů 4
Vyučováno v Letní
Rozsah výuky 2P+2C
Garant předmětu
Přednášející Josef Dobeš, Václav Navrátil, Petr Skalický, Stanislav Vítek
Cvičící Josef Dobeš, Václav Navrátil

Úkolem předmětu je zajistit potřebnou znalost jazyka C a základních rysů jazyka C++ jako v současné době jednoho z dominantních programovacích jazyků v mnoha oborech vědy a techniky, jako je např. programování mikroprocesorů, numerická matematika apod. Dovednosti v jazyce C/C++ jsou tedy nezbytné pro práci studentů v nejrůznějších formách projektové výuky a pro splnění zadání mnohých závěrečných prací. Předmět navazuje na základní výuku programování a algoritmizace v první fázi studia realizovanou především na bázi programovacího jazyka Java. Znalost syntaxe mnohých rysů jazyka Java (které byly převzaty v jazyka C) je tedy výhodou pro studium tohoto předmětu. Osnova se tedy v první fázi zaměřuje na výklad odlišností jazyka C od jazyka Java a zároveň se tímto způsobem takto přirozeně stručně projde přehled syntaxe základních rysů jazyka C. Další přednášky jsou již věnovány specifickým rysům jazyka C jako jsou především ukazatele, adresová aritmetika apod. Následuje výklad práce se strukturami a jejich poli a přehled standardních knihoven jazyka C. Předmět je zakončen výkladem nových rysů jazyka ve standardech C99 a C++. V úvodu této části předmětu jsou definovány nové datové typy, nové typy vstupů a výstupů a dynamická alokace polí. Následuje výklad základních rysů objektového programování v C++, práce s třídami, s konstruktory a destruktory. Výklad je zakončen hierarchií tříd a odvozenými třídami a praktickým využitím přetížení operátorů (např. komplexní aritmetika). Cvičení jsou laboratorní s využitím volně šířených vývojových prostředí jako je např. systém OpenWatcom. \\Výsledek studentské ankety předmětu je zde: http://www.fel.cvut.cz/anketa/aktualni/courses/A2B37CPP

Doporučená prerekvizita: předmět "Programování" - A0B36PRI nebo A0B36PR1 (podle studijního programu studenta)
Studijní materiály: viz http://radio.feld.cvut.cz/personal/dobes2/dobes.cz.pdf a https://moodle.kme.fel.cvut.cz/moodle/login/index.php (materiály se budou postupně objevovat v průběhu semestru)
Podmínka zápočtu: alespoň poloviční počet bodů v testu na konci semestru

Cílem předmětu je zajistit základní znalost programovacího jazyka C/C++ pro samostatnou práci studentů v semestrálních projektech a závěrečných pracích.

  1. Základy programovaní v jazyce C, charakteristika jazyka, model kompilace, struktura programu, hlavičkové soubory, makra, preprocesor jazyka C, podmíněný překlad, způsoby ladění v jazyce C
  2. Odlišnosti jazyka C od jazyku Java: proměnné, specifikátory a jejich přetypování, operátory. Řídící struktury, cykly a možnosti ukončení, vstup/výstup
  3. Odlišnosti jazyka C od jazyku Java: funkce, volání hodnotou a odkazem, prototypy, statické proměnné, proměnné typu register, in line funkce, blokové struktury. Pole, deklarace a inicializace, prvky pole, vícerozměrná pole, přístup k poli ve funkcích
  4. Pointery (1) a adresy, pointery a argumenty funkcí
  5. Pointery (2) a pole, adresová aritmetika, přístup k dílčím částem proměnných
  6. Řetězce, funkce pracující s řetězci, znakové pointery, pole pointeru a jeho inicializace, pointery na pointery, pointery na funkce, uživatelské datové typy
  7. Struktury, datové struktury, pole struktur, pointery na struktury
  8. Struktury odkazující se samy na sebe, pole bitů, uniony
  9. Přístup do standardních knihoven, standardní a formátované vstupy a výstupy, proměnný počet parametrů (printf), formátové konverze
  10. Přístup k souborům, systémová volání, přístup na periferie (vstup/výstup), organizace paměti, dynamická správa paměti
  11. Nové rysy jazyka C implementované ve standardech C99 a C++ (nové datové typy, nové typy vstupů a výstupů, dynamická alokace polí)
  12. Základy objektového programování v C++, třídy, data přiřazená k třídám, statické členy tříd, konstruktory a destruktory
  13. Hierarchie tříd (private, protected, public), odvozené třídy, friend funkce, přetížení operátorů, šablony a výjimky
  14. Rezerva

  1. Úvod, cíl cvičení. Úvod do vývojového prostředí. Preprocesor, podmíněný překlad. Základní struktura programu, formátování programu, odsazování, první program
  2. Proměnné a aritmetika, program pro přepočet veličin, funkce standardního vstupu a výstupu, formátování vypočtených dat. Program pro kopírování textu ze vstupu na výstup se znakovou úpravou
  3. Práce s typy dat, přetypování, rozdělení čísla na jednotlivé byty
  4. Funkce, zápis funkce a ověření její činnosti (rotace, inverze, zjištění počtu bitů proměnné)
  5. Práce s poli (1), součin a součet matic, výpočet determinantu, interpolace funkce
  6. Práce s poli (2), pole jako parametr
  7. Práce s pointery (1), úprava realizovaného programu pomocí pointerů
  8. Práce s pointery (2), pointery na funkce, pointery na pointery
  9. Vytváření struktur, union
  10. Nové datové typy v C99 a C++. Přesnost aritmetiky, deklarace kind. Nové standardní knihovny, např. vstupů a výstupů (cin, cout, cerr). Dynamická alokace polí, zdokonalená práce s poli ve standardu C99
  11. Příklady vytváření tříd a jejich používání. Význam konstruktorů a destruktorů, vícenásobné konstruktory. Statické členy tříd
  12. Způsob přístupu ke kódu a datům v případě deklarací private, protected a public. Použití friend funkcí. Praktický příklad využití přetěžování operátorů - komplexní aritmetika
  13. Test
  14. Zápočet

Herout, P.: Učebnice jazyka C. III. vyd. Kopp, Č.Budějovice, 2008.
Kernighan, B.W.-Ritchie, D.M.: Programovací jazyk C. Computer Press, Brno, 2006. ISBN: 80-251-0897-X.
Herout, P.: Učebnice jazyka C - 2 díl, Kopp, Č.Budějovice, 2007. ISBN: 80-85828-50-2.
Richta, K., Šaloun, P.: Programovací jazyk C, vyd.ČVUT, Praha, 1998.
Brůha, I., Richta, K.: Programming Language C, vyd.ČVUT, Praha, 1996.
Stroustrup, B.: The C++ Programming Language, 3rd edition, Addison-Wesley, Boston, 1997.
Virius, M.: Od C k C++. II. vyd. Kopp, 2002.

Rozvrh předmětu
Po
Út
St
Čt
PřednáškyCvičení