PB161 Programování v jazyku C++

     Máš-li dobrý vkus,
     uč se C++.
     Ten, kdo má vkus slabší,
     tomu Céčko stačí.

          Verita z www.pismak.cz

Vyučující:

Přednáší: Ing Jan Kučera (konsultace úterý 13-14 B420)

Asistent: RNDr. Petr Švenda, PhD. (konsultace pondělí 12-14, úterý 13-15 B420)

Cvičící: jsou uvedeni v rozvrhu

Obsah předmětu:

Jazyk C++

  1. Historické návaznosti jazyka C++, zejména jeho vztah k jazyku C. Standardy C a C++.
    Překladače jazyka C++ pod Unixem a MS-DOS/MS-Windows. Integrované prostředí, ladicí nástroje. Make vs. projekty.
  2. Společné a rozdílné prvky jazyků C a C++ (1): datové typy, konstanty, deklarace, výrazy, přiřazovací výrazy a příkazy; základní struktura programu; komentáře; příkazy preprocesoru; relační výrazy a řídicí struktury; vhodný styl psaní programů.
  3. Společné a rozdílné prvky jazyků C a C++ (2): textové řetězce ve stylu C a ve stylu C++; pole, ukazatele a odkazy; funkce; hlavní program jakožto funkce volaná shellem.
  4. Standardní knihovna jazyka C++, standardní knihovna šablon.

Objektové programování

  1. Objektové programování. OOP jako alternativa programování procedurálního. Základní pojmy OOP:  třídy, jejich komponenty - data a metody. Zásady OOP - zapouzdření, datová abstrakce, dědičnost, polymorfismus. Více o deklaracích v C a C++ (paměťové třídy, oblast platnosti jmen, modifikátory). Uživatelské typy (enum, struct, union). Deklarace typedef.)
  2. Objekty a třídy 1.  Definice tříd (příklad, přístupová práva, co může být ve třídě deklarováno, metody, konstruktory a destruktory). Dědičnost tříd (dědění přístupových práv, konflikt jmen)
  3. Objekty a třídy 2.   Dědičnost tříd - pokrač. (Normální a virtuální dědění, konstruktory, destruktory a dědičnost. Polymorfismus - časná a pozdní vazba. Abstraktní třídy a čistě virtuální metody. Statické atributy a metody.) Přetypování objektů. (Přetypovací operátory z C, přetypovací konstruktory, nové přetypovací operátory C++, přetypování objektových typů, operátor typeid.)
  4. Objekty a třídy 3.  Dynamická alokace paměti (pozůstatek z C, ve stylu C++). Automatické ukazatele. Třídní ukazatele. Prostory jmen (deklarace a použití, anonymní prostory jmen, standardní prostor jmen, zpřístupnění prostoru jmen, prostory jmen a operátory). Komplexní příklad - Manipulace s fyzikálními vektory
  5. Vstup a výstup v C++. Srovnání se V/V v jazyce C.
  6. Bezpečné programování. Defenzivní programování. (Zásady. Céčkovské "skrčky". Bezpečné konstruktory. Explicitní konstruktory.) Výjimky (Pokusný blok a handlery. Vyvolání výjimky. Zachycení výjimky. Standardní typy výjimek. Výjimky a funkce. Výjimky v konstruktorech a destruktorech. Výjimky v handlerech. Výjimky a alokace paměti. Neošetřené a neočekávané výjimky. Výjimky: pro a proti. Strukturované výjimky.)
  7. Více o šablonách. Knihovny pro numerické výpočty.
  8. Ještě jednou šablony, "povídání" s kompilátorem. (Šablony, jejich význam v C++, metaprogramování, finty a fintičky, návrh založený na zásadách. (Přednáška Mgr. Šimona Tótha)
  9. 7. 12. Vývoj aplikací s využitím open-source knihoven. Interaktivní aplikace - knihovny Allegro, SDL. Aplikace s GUI - knihovny QT, FLTK. Vývojové nástroje - QT designer, RHIDE. Speciální knihovny Messa, GLUT, OpenGL. Zásady správného vývoje platformově nezávislých aplikací. Možnosti kompilace na různých platformách. G++, DJGPP (přednáška externisty Mgr. Juraje Michálka)
    Ukázky programů ke stažení
  10. Další objektově orientované jazyky. Java a její srovnání s  C++ (přednáška RNDr. P. Švendy, Ph.D..).

Literatura

S výhodou lze využít i informace dostupné na Webu:

Příklady pro cvičení

Přečtěte si Pravidla pro cvičení, Konvence pro programování v C++ a Sazebník odměn a pokut.

Obsazení skupin pro cvičení se dozvíte (a do skupin přihlásíte od 14. 9.) prostřednictvím IS MUNI (odkaz "Seminární skupiny").