Haladó C++ programozás
A tantárgyleírás hatályossága
| Tantárgy neve (magyarul, angolul) |
Haladó C++ programozás
Advanced C++ programming
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Tantárgykód | BMEVITMAV18 | ||||||||||||
| Tantárgyjelleg | — | ||||||||||||
| Képzési szint | — | ||||||||||||
| Kurzustípusok és óraszámok (heti/féléves) |
|
||||||||||||
| Tanulmányi teljesítmény/értékelés típusa | vizsga | ||||||||||||
| Tantárgy kreditértéke | 5 | ||||||||||||
| Tantárgyfelelős |
DR. Maliosz Markosz
beosztás: egyetemi docens
elérhetőség:
maliosz.markosz@vik.bme.hu
|
||||||||||||
| Tantárgyat gondozó oktatási szervezeti egység |
—
|
||||||||||||
| Kar | |||||||||||||
| Tantárgy weboldala | — | ||||||||||||
| Tantárgy elsődleges mintatantervi jellege | — | ||||||||||||
| Közvetlen előkövetelmények – Erős előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Gyenge előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Párhuzamos előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Mérföldkő előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Kizáró feltétel | nincs |
Célkitűzés
A tárgy hét fő részre osztható az alábbiak szerint:
- A C/C++ nyelv áttekintése (ismétlés).
A C/C++ programozási nyelvi ismereteinek felfrissítése a nyelv elemeinek gyors újratárgyalásával. Az első kis házi feladatok kiosztása.
- Fejlettebb, kevésbé ismert C++ nyelvi elemek megismerése
Ide azok a nyelvi elemek tartoznak, amelyekkel a hallgatók a C++ tárgy elsajátításakor nem találkoztak. Ilyenek pl. a * ill. ->* operatorok (tagra hivatkozó mutatók), new és delete tagoperátorok, a függvényobjektumok, az adatfolyamok részletesebb megismerése, a sablonok részletesebb megismerése (statikus tagok, barátok és sablonok, sablon mint sablonparaméter, stb), illetve ide is tartozik a következő pont (STL) egy része is.
- A Standard Template Library (STL) részletes megismerése, példákkal, feladatokkal.
Ide a következő főbb elemek tartoznak: absztrakt tárolási osztályok (vector, list, deque, set, multiset, map, multimap, ... ideértve a string és complex osztályokat is), általános algoritmusok (adjacent_find, binary_search, copy, copy_backward, count, count_if, equal, equal_range, fill, fill_n, find, ...), iterátorok (bidirectional iterator, forward iterator, input iterator, output iterator, ...), memóriakezelés (allocator, auto_ptr, raw_storage_iterator, uninitialized_copy, ...), függvényobejktumok (binary_function, binary_negate, binder1st, binder2nd, divides, equal_to, ...), stb.
- Gyakori C++ kódolási hibák és elkerülési lehetőségeik megismerése.
Pl.: Megjegyzések helyes használata, globális változók helyes használata, buktatók a kiértékelési sorrenddel kapcsolatban (függvényparaméterek, részkifejezések, stb.), többdimenziós tömbök függvényparaméterként, az előfeldolgozó helyes használata, típuskonverziós problémák, memóriafoglalási hibák, kezdeti beállítás vagy értékadás, virtuális függvény túlterhelése, túlterhelés / felülbírálás / elrejtés közötti különbségek, stb.
- Megismerkedés a hibakeresővel (debugger), a teljesítményelemzővel (profiler), verziókövető rendszerekkel (cvs, svn).
Szoftvertesztelés, interaktív diagnosztika, hibaazonosítás. Program állapotváltozásainak nyomkövetése. Töréspontok és lépésenkénti végrehajtás. Az adatszerkezetek vizualizálása. A stack megjelenítése, vizsgálódás különböző szinteken. Objektum orientált öröklődési fa grafikus megjelenítése. Memóriaszivárgás nyomkövetése.
Program futási idő optimalizálása, válaszidők mérése, PC (program counter) mintavételezés adott időközönként, időmérés meghatározott események bekövetkeztekor. Profiling eszközök.
Verziókövető rendszerek (cvs, svn): fájlok tárolása, verziók elérése, változások lekérdezése. Elágazó fejlesztés. Konfliktusok feloldása.
- A Doxygen dokumentációs rendszer megismerése.
Megjegyzések formátuma, konfigurációs fájl készítése, kimeneti formátumok. Példák.
- Bevezetés a tervezési mintákon (design pattern) alapuló szoftvertervezésbe.
Bevezetés a tervezési mintákat (design pattern) használó objektumorientált szoftvertervezésbe: különböző projektekben rendszeresen visszatérő tervezési kérdések és azok egységes kezelése. Fontosabb minták és mintacsaládok áttekintése: elvont gyár, építő, prototípus, egyke (singleton), felelősséglánc, parancs, bejáró, stb.
Tanulmányi eredmények
Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:
Tudás
Nincsenek rögzített tanulási eredmények.
Képességek
Nincsenek rögzített tanulási eredmények.
Attitűd
Nincsenek rögzített tanulási eredmények.
Autonómia és felelősség
Nincsenek rögzített tanulási eredmények.
Oktatási módszertan
Tanulástámogató anyagok
Online források
A tantárgy teljesítéséhez ajánlott előzetes ismeretek
Általános szabályok
Teljesítményértékelési módszerek
Szorgalmi időszakban végzett teljesítményértékelések részletes leírása
Nincs megadva részletes értékelés.
Szorgalmi időszakban végzett teljesítményértékelések részaránya
Nincs megadva részarány.
Vizsgaidőszakban végzett teljesítményértékelések részletes leírása
Nincs megadva részletes értékelés.
Vizsgarészek részaránya
Nincs megadva részarány.
Érdemjegy megállapítása
Nincs megadva érdemjegy határ.
Jelenléti és részvételi követelmények
Nincs megadva jelenléti követelmény.
Javítás, ismétlés és pótlás különös szabályai
Nincs megadva.
Rövid leírás
Nincs megadva.
Részletes leírás
Nincs megadva.
Ajánlott tantárgyak
A tantárgy elvégzéséhez szükséges tanulmányi munka
Nincs megadva munkaidő bontás.
Tantárgykövetelmények hatályossága
Tantervi elhelyezés
Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.