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.
- 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
- 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
- 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
- Pointery (1) a adresy, pointery a argumenty funkcí
- Pointery (2) a pole, adresová aritmetika, přístup k dílčím částem proměnných
- Ř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
- Struktury, datové struktury, pole struktur, pointery na struktury
- Struktury odkazující se samy na sebe, pole bitů, uniony
- Přístup do standardních knihoven, standardní a formátované vstupy a výstupy, proměnný počet parametrů (printf), formátové konverze
- Přístup k souborům, systémová volání, přístup na periferie (vstup/výstup), organizace paměti, dynamická správa paměti
- Nové rysy jazyka C implementované ve standardech C99 a C++ (nové datové typy, nové typy vstupů a výstupů, dynamická alokace polí)
- 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
- Hierarchie tříd (private, protected, public), odvozené třídy, friend funkce, přetížení operátorů, šablony a výjimky
- Rezerva
- Ú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
- 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
- Práce s typy dat, přetypování, rozdělení čísla na jednotlivé byty
- Funkce, zápis funkce a ověření její činnosti (rotace, inverze, zjištění počtu bitů proměnné)
- Práce s poli (1), součin a součet matic, výpočet determinantu, interpolace funkce
- Práce s poli (2), pole jako parametr
- Práce s pointery (1), úprava realizovaného programu pomocí pointerů
- Práce s pointery (2), pointery na funkce, pointery na pointery
- Vytváření struktur, union
- 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
- Příklady vytváření tříd a jejich používání. Význam konstruktorů a destruktorů, vícenásobné konstruktory. Statické členy tříd
- 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
- Test
- 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.