K-INFO
HU
EN
Login

C11 and C++11 Programming

C11 és C++11 programozás
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
Subject name (Hungarian, English)
C11 és C++11 programozás
C11 and C++11 Programming
Subject code BMEVIEEAV01
Subject type
Training Level
Course types and hours (weekly/semester)
Course type lecture tutorial laboratory
hours (weekly) 2 0 2
type (linked/independent) derived course
Assessment type vizsga
Credits 4
Subject coordinator
DR. Pohl László
position: egyetemi docens
Responsible department
Elektronikus Eszközök Tanszéke
Faculty Villamosmérnöki és Informatikai Kar
Subject website
Primary curriculum type
Direct prerequisites – Strong prerequisite none
Direct prerequisites – Weak prerequisite none
Direct prerequisites – Parallel prerequisite none
Direct prerequisites – Milestone prerequisite none
Direct prerequisites – Exclusion none

Objectives

Programme

1. hét: Az objektumorientált programozás ismétlő áttekintése. A C99 és C11 nyelv új nyelvi elemei. Összetett literálisok, változó méretű tömbök és tömb adattagok. Függvényparaméterrel megadott és változók értékeitől függő pointer típusok.

2. hét: OOP tervezési minták C++11 nyelvi specifikus megvalósítása. Az override és a final kulcsszavak. A virtuális konstruktor nyelvi fordulat, heterogén kollekció másolása és perzisztenciája, futásidejű típusinformációk.

3. hét: Adattag mutatók. A reflexió megvalósításának lehetőségei. Az öröklés megvalósításának technikai részletei C++11-ben. Az öröklés és a heterogén kollekciók megvalósításának lehetőségei a C nyelvben.

4. hét: Típusok és sablonok haladó használata. Függvénynevek túlterhelése, indexelő segédobjektumok, I/O manipulátorok megvalósítása. Automatikus konverziók, egyparaméterű konstruktorok és konverziós operátorok. Kifejezések kétértelműsége, az explicit kulcsszó használata konverziókra. A névvel rendelkező konstruktor, mint nyelvi fordulat. Felhasználó által definiált literálisok.

5. hét: A C++11 memóriamodelljének részletes tárgyalása. A verem és a dinamikus memóriakezelés, a láthatóság és az élettartam témakörének ismétlő áttekintése. A memóriakezelés problémái, a downward és az upward funarg probléma. Hatékonysági kérdések; a copy elision optimalizáció. Okos pointerek belső működése (referenciaszámlálás, intruzív, nonintruzív megvalósítások) és használata. A szabványos unique_ptr, shared_ptr, weak_ptr osztályok.

6. hét: Hatékony tároló osztályok. Destruktorok explicit hívása és a placement new. Az std::vector belső működése. Új konstruktor szintaktikák, inicializáló listák. A C++11 használhatóságot javító nyelvi újdonságai: range-based for loop (foreach), auto, decltype kulcsszavak. Globális begin és end iterátor-gyártófüggvények.

7. hét: A jobbérték referencia fogalma. Objektummásolás és mozgatás szemantikák. Az auto_ptr osztály kivezetésének okai. Mozgató konstruktorok, az std::move sablon használata. A mozgató konstruktorok írásának szabályai.

8. hét: A kivételbiztos kód fogalma, kódelemzés a kivételbiztosság szempontjából. A RAII elv és használata. Kivételbiztos tárolók, a „copy and swap” és „move and swap” technikák. Noexcept kulcsszó és mozgatás szemantika.

9. hét: Az std::function, std::bind és std::ref sablonok használata. Lambda függvények. Jelentésük, kapcsolatuk a funktorokkal. Closure-ök fogalma és használata. Paraméterek rögzítése érték és referencia szerint. Mutable lambda. Generikus lambda függvények.

10. hét: A sablon metaprogramozás eszközei. Típusinformációs osztályok használata. A SFINAE szabály és alkalmazásai. Fordítási idejű kiértékelés, metafüggvények implementálása. A C++17-es if constexpr nyelvi fordulat.

11. hét: Változó hosszúságú sablonparaméter-listák és rekurzív sablonok. Függvényargumentumok továbbítása, univerzális referencia, reference collapsing, std::forward, gyártófüggvények és helyben létrehozás.

12. hét: Többszálúság a C++11 nyelvben. Szálak, mutexek, atomi műveletek, async, future és promise sablonok. Parallel STL. Esettanulmány: korutinok megvalósítása.

13. hét: Nyelvi elemzők elmélete röviden, és C++ nyelvű megvalósításuk. Haladó operátorhasználat, absztrakt szintaxisfák építése.

14. hét: Kitekintés. A nyelv jövőbeli fejlesztési irányai. Sablon metaprogramozás haladó eszközei, a concept és a requires használata.

A tárgy elsődleges célkitűzése, hogy a C és C++ nyelv iránt mélyebben érdeklődő hallgatók számára a két nyelv használatával kapcsolatban az alapképzésen túlmutató ismereteket adjon. A tárgyban nagy hangsúlyt kapnak a modern C++ nyelv különböző változataiban (2011-es és 2014-es, 2017-es) megjelent új nyelvi elemek, és azok alkalmazási lehetőségei. A tárgyat teljesítő hallgató: (K3) képes lesz alkalmazni a C++ nyelv tárgyban bemutatott, új nyelvi elemeit, (K3) a modern C++ nyelv szemléletét követve fogja tudni felépíteni programját, (K2) érteni fogja a nyelvi eszközök tervezése mögötti megfontolásokat, (K2) részletes ismeretei lesznek a C++ tárkezeléséről, (K1) ismerni fogja a nyelv főbb fejlődési irányait.

Learning outcomes

Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:

Knowledge

No learning outcomes recorded.

Skills

No learning outcomes recorded.

Attitudes

No learning outcomes recorded.

Autonomy and responsibility

No learning outcomes recorded.

Oktatási módszertan

Előadás, melynek keretében gyakorlati ismereteket is nyújtó példákat is ismertetünk, esettanulmány jelleggel, esetenként on-line számítógépi demonstrációval. Az egyes előadásokhoz géptermi laborgyakorlat is tartozik, amely a bemutatott programozási elveket, nyelvi elemeket hivatott még több példán keresztül áttekinteni és gyakoroltatni. Az érdeklődők számára a tárgyon tanultak alkalmazását bemutató, illetve a tárgy tananyagán túlmutató szakmai írásokat teszünk közzé a tárgy honlapján. Ezek egyéni elmélyülésre adnak lehetőséget. Feldolgozásukhoz igény szerint konzultációk keretében segítséget nyújtunk. A tárgyban kiadott házi feladat és a vizsgadolgozat a megszerzett ismeretek alkalmazására fókuszálnak.

Tanulástámogató anyagok

Not provided.

Recommended preliminary knowledge for completing the subject

Knowledge type competencies
(azon előzetes ismeretek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
Programozási gyakorlat, C és C++ programozási nyelv alapvető ismerete.
Skill type competencies
(azon előzetes képességek és készségek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
nincs
Recommended (non-compulsory) preliminary competencies
(azon ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák összessége, amelyek jelentősen hozzájárulnak a tantárgy eredményes teljesítéséhez)
Programozási gyakorlat, C és C++ programozási nyelv alapvető ismerete.
General rules
Követelmények: a. A szorgalmi időszakban: Jelenlét: az előadásokon és a laborgyakorlatokon legfeljebb 30% hiányzás megengedett. Házi feladatok: a félév közben kettő házi feladatot adunk ki, amelyeket a szorgalmi időszakban kell elkészíteni. Szorgalmi feladatok: a félév közben rendszeresen szorgalmi feladatokat adunk ki, amelyek megoldása nem kötelező. b. A vizsgaidőszakban: A vizsgáztatás módja: írásbeli vizsga. A vizsgajegyet úgy alakítjuk ki, hogy abban a vizsgán elért eredmény 80%-ban, a házi feladatokból szerzett pontszámok 20%-ban számítanak bele. Sikertelen vizsgadolgozat esetén a jegy is elégtelen. c. Megajánlott jegy: A szorgalmi időszakban leadott és elfogadott házi feladatokkal, továbbá a szorgalmi feladatokkal elért jó eredménnyel megajánlott jegy szerezhető, amely mentesít a vizsga követelménye alól. Pótlási lehetőségek: A jelenlét nem pótolható. A szorgalmi feladatok határidő után nem pótolhatóak. A szorgalmi időszakban elkészítendő házi feladatok a pótlási hét végéig pótolhatóak. Pótlás esetén a szabályzatban meghatározott különeljárási díj fizetendő. Az elfogadott házi feladatok a pótlási hét végéig javítási céllal is leadhatóak. Ebben az esetben különeljárási díjat nem kell fizetni. A sikertelen vizsgák a TVSZ-ben meghatározott módon pótolhatóak.
Assessment methods
In-term assessments

No detailed assessments provided.

Weight of in-term assessments

No weights provided.

Exam-period assessments

No detailed assessments provided.

Weight of exam elements

No weights provided.

Grade calculation

No grade thresholds provided.

Attendance requirements

No attendance requirements provided.

Rules for retake and resubmission

Not provided.

Short description

Not provided.

Detailed description

Not provided.

Recommended courses

Not provided.

Workload to complete the subject

No workload breakdown provided.

Validity of subject requirements
Requirements valid from:
Requirements valid until:
Curriculum placement

No curriculum placements recorded for this subject version.