Programovací jazyk C/C++ - A2B37CPP

Kredity 4
Semestry letní
Zakončení zápočet
Jazyk výuky čeština
Rozsah výuky 2P+2C
Anotace
Ú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
Cíle studia
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.
Osnovy přednášek
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
Osnovy cvičení
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
Literatura
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.
Požadavky
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