K-INFO
HU
EN
Belépés

A programozás alapjai 2

Programming 2
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
—
Tantárgy neve (magyarul, angolul)
A programozás alapjai 2
Programming 2
Tantárgykód BMEVIIIAA03
Tantárgyjelleg —
Képzési szint —
Kurzustípusok és óraszámok (heti/féléves)
Kurzustípus elmélet gyakorlat laboratóriumi gyakorlat
óraszám (heti) 2 0 2
jelleg (kapcsolt/önálló) — — kapcsolt
Tanulmányi teljesítmény/értékelés típusa félévközi érdemjegy
Tantárgy kreditértéke 6
Tantárgyfelelős
Somogyi Péter
beosztás: egyetemi docens
Tantárgyat gondozó oktatási szervezeti egység
Irányítástechnika és Informatika Tanszék
Kar Villamosmérnöki és Informatikai Kar
Tantárgy weboldala http://infocpp.iit.bme.hu
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

Tantárgyprogram

C++, mint a C javított változata

  1. Előadás: Az előző félévi anyag rendszerező összefoglalása. C nyelv „javításai”: típusértékű struct, enum, bool típus. Függvényhívás alacsony szinten. Prototípusok szükségessége, referenciatípus bevezetése. Függvényhívás balértékként. Bevezetés a C++ I/O használatába.
    Labor
    : Alapvető operációs rendszer ismertek összefoglalása. Fejlesztő környezet bemutatása.
  1. Előadás: Függvénynév túlterhelése (overload). Alapértelmezett (default) függvényargumentumok. Makrók kiváltása inline függvénnyel. Névterek, láthatóság. Memória allokáció és kivételkezelés röviden.
    Labor
    : const és referencia gyakorlása. C-ben írt kód átírása C++ eszközeivel (cin, cout). Függvény túlterhelés és inline használata.

Objektum-orientált programozás alapjai a C++ nyelv bemutatásával

  1. Előadás: Objektum-orientált programozás alapfogalmai, elvei, objektum fogalma. Osztály, egységbezárás, láthatóság és információrejtés fogalma. Tagváltozók és tagfüggvények. Getterek és setterek. A this pointer. Konstruktor, destruktor.
    Labor
    : Több modul használata. Memória allokáció gyakorlása. Memóriaszivárgás (memory leak) felfedezése, okainak keresése, megszüntetése.
  1. Előadás: Konstruktorok és destruktorok. Dinamikus adattagokat karbantartó osztályok. Másoló konstruktor, értékadás. Tagváltozók inicializálása. Konstans és statikus tagok.
    Labor
    : Egyszerű, pointert nem tartalmazó osztályok megvalósítása. getter/setter függvények gyakorlása. operator<< túlterhelése. Tesztelést segítő eszközök használata.
  1. Előadás: A láthatóság enyhítése: friend mechanizmus. Operátorok túlterhelésének fogalma. Operátorok túlterhelésének megvalósítása tagfüggvénnyel és globális függvénnyel. Megkötések.
    Labor
    : Dinamikus adattagokat karbantartó osztályok. Másoló konstruktor, értékadás gyakorlása.
  1. Előadás: Az öröklés szerepe az objektumorientált programozásban. Öröklés, származtatott osztály, alaposztály. Az öröklés hatása a láthatóságra. Konstruktorok és az öröklés.
    Labor
    : Komplexebb objektum (pl. dinamikus tömb) megvalósítása. Operátorok túlterhelésének gyakorlása.
  1. Előadás: Behelyettesíthetőség. Virtuális függvények, absztrakt osztályok. Korlátozó öröklés. Virtuális destruktorok. Heterogén gyűjtemények.
    Labor
    : Egyszerű öröklés gyakorlása. Öröklés hatása láthatóságra és túlterhelésre.
  1. Előadás: Többszörös öröklés, virtuális alaposztályok. Konstruktorok és destruktorok automatikus feladatai. Perzisztencia fogalma és megvalósítása.
    Labor
    : Heterogén kollekcióhoz kapcsolódó feladatok.
  1. Előadás: Konverziós operátorok. Típuskonverziók, kivételkezelés.
    Labor
    : Többszörös örökléshez és perzisztenciához kacsolódó feladatok.
  1. Előadás: Generikus szerkezetek jelentősége. Függvény- és osztálysablonok.
    Labor:
    Típuskonverziók, konverziós operátorok gyakorlása és kivételkezelés gyakorlása.
  1. Előadás: Standard Template Library (STL) bevezetése. Bonyolultságelméleti megfontolások.
    Labor:
    Generikus adatszerkezetek és algoritmusok gyakorlása.
  1. Előadás: STL tárolók és algoritmusok, iterátorok. Objektumorientált szoftvertervezési alapok. Tervezési példa.
    Laborban
    : STL tárolók és algoritmusok gyakorlása.
  1. Előadás: Komplex példa bemutatása. Kitekintés a nyelvhez kapcsolható eszközökre.
    Labor
    : Gyakorlás. Házi feladat konzultáció, feladatbeadás.
  1. Előadás: Összefoglalás. Tervezési példa.
    Labor
    : Házi feladat bemutatása
A tárgy alapvető célja, hogy alapozó tárgyként folytassa számítógépes problémamegoldás módszereinek és alapvető eszközeinek előző félévben megkezdett megismertetését olyan szinten, hogy azt a hallgatók további tanulmányaik során képesek legyenek hatékonyan alkalmazni. Ezen félév alapvető célkitűzése, hogy mélyítse a programozási és algoritmizálási alapismereteket, megismertesse a nagyméretű programozási feladatok megoldásának lépéseit, és bevezessen az objektum-orientált programozásba. Célkitűzését a tárgy az előző félévben megszerzett C nyelvi tudásra alapozva, a C++ nyelv megismertetésével éri el. A laborgyakorlatok anyaga folyamatosan követi az előadások tematikáját, azok megértését, elmélyítését támogatja.

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

Órarendben ütemezett módon heti egy alkalommal előadást tartunk a teljes évfolyamnak. A laboratóriumi foglalkozásokat 12-20 fős számítógépes laborokban tartjuk. A csoport- és terembeosztást külön hirdetményben tesszük közzé a tárgy weboldalán. Ugyanitt érhető el az otthoni gyakorláshoz ajánlott szoftverkörnyezet leírása, valamint a tárgyhoz kapcsolódó segédanyagok, példák és hirdetmények. A számonkérések papíron, írásban történnek, kivéve a kis- és nagyfeladatokat.

Tanulástámogató anyagok

Online források
Bármely az objektum-orientált; programozással és a C++ programozási nyelvvel foglalkozó könyv vagy jegyzet; használható.; Jegyzet:; A tárgy weboldalán elérhető elektronikus jegyzetek: http://infocpp.iit.bme.hu; Ajánlott irodalom:; Benedek Zoltán - Levendovszky; Tihamér: Szoftverfejlesztés C++ nyelven (SZAK, 2007)B. Stroustrup: A C++ programozási; nyelv (Kiskapu, 2001Kondorosi Károly - László Zoltán -; Szirmay-Kalos László: Objektum-orientált szoftverfejlesztés; (CompuerBooks, 2004)Benkő Tiborné - Poppe András:; "Együtt könnyebb a programozás" sorozat: Objektum-orientált C++; (CompuerBooks, 2004)Szeberényi Imre: Bevezetés a UNIX op. rendszerbe (oktatási; segédlet, 1998)

A tantárgy teljesítéséhez ajánlott előzetes ismeretek

Tudás típusú kompetenciák
(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)
A C programozási nyelv ismerete
Képesség típusú kompetenciák
(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
Ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák
(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)
A C programozási nyelv ismerete
Általános szabályok
Követelmények: A félév végi jegy megszerzésének feltételei az alábbiak: Jelenlét: az órákon (előadás, labor) való rendszeres részvétel. A hiányzások megengedett mértéke 30%, aminek mindkét óratípus esetében külön-külön is teljesülnie kell. Szintfelmérő értékelés: a laborgyakorlatok sikeres teljesítéséhez szükséges előzetes tudás meglétét ellenőrző feladattal és az ehhez kapcsolódó ellenőrző dolgozattal ellenőrizzük. Az előre kiadott feladatot otthoni felkészülés keretében kell megoldani, majd határidőre elektronikusan benyújtani az erre a célra létrehozott feladatbeadó rendszerben, ami automatikus visszajelzést ad a feladat elfogadásáról. Ezt követően a laborgyakorlat elején a feladathoz kapcsolódó rövid 2-3 kérdésből álló írásbeli dolgozattal ellenőrizzük a laborgyakorlat elvégzéséhez szükséges önálló tudás meglétét. A feladat illetve a dolgozat az adott labor előadáson már bemutatott anyagával kapcsolatos. Minden határidőre beadott és elfogadott feladattal valamint minden sikeresen teljesített ellenőrző dolgozattal 1-1 pont szerezhető. A félév során 12 ellenőrző feladat kiadására és ehhez kapcsolódóan 12 ellenőrző dolgozat megírására kerül sor. A tárgy teljesítésének szükséges feltétele, hogy a szintfelmérő értékeléssel szerzett pontok elérjék félév során megszerezhető pontszámok lefelé kerekített 2/3-át, azaz 16-ot.Részteljesítmény értékelés: a hallgatók félévközi folyamatos haladásának regisztrálása érdekében beszámoló dolgozatot iratunk és nagy házi feladatot adunk ki. Beszámoló dolgozat: A félév során összesen 3 alkalommal rövid (15-20 perces) beszámoló dolgozatot iratunk. A 3 beszámoló dolgozat közül a két legnagyobb pontszámú dolgozatot vesszük figyelembe. Ezek pontszáma külön-külön el kell, hogy érje a megszerezhető pontszám 40%-át, azaz 4 pontot. A meg nem írt beszámoló pontszámát nullának tekintjük. Az írásos beszámolók ütemezését a tantárgy weboldalán tesszük közzé a félév elején.Nagy házi feladat: minden hallgatónak egy egyéni nagy házi feladatot kell megoldania, önálló munkával. A nagy házi feladatot a 6. héten adjuk ki, a megoldást pedig a 13. héten kell beadni. A laborvezetők a megoldásokhoz folyamatos konzultációt biztosítanak. A folyamatos haladást pedig részhatáridők kitűzésével ösztönözzük. A tárgy teljesítésének szükséges feltétele az elfogadott nagy házi feladat.Összegző értékelés: a szorgalmi időszak alatt kettő alkalommal, az évfolyam terhelési táblázata szerinti időpontban nagy zárthelyi dolgozatot íratunk. Ezekre külön-külön elfogadási kritérium nincs. Összpontszámuk azonban el kell, hogy érje a két zárthelyire szerezhető összpontszám 50%-át, azaz 40 pontot. A meg nem írt zárthelyi dolgozat pontszámát nullának tekintjük. A félévközi jegy a nagy zárthelyikre kapott pontszámok (2*40 pont), valamint a két legjobban sikerült beszámoló pontszámának (2*10 pont) összege alapján számítható ki. Ha az előzőekben részletezett minimumkritériumok teljesülnek, akkor a félév végi jegy legalább elégséges. Extra pontok: A nagy házi feladat időben leadott és elfogadott részfeladataiért részhatáridőnként rendre 1, 1, 2, 2 plusz pont jár, amely a fent részletezett pontszámhoz adódik hozzá. Ezek a plusz pontok abban az esetben számítanak, ha a feladat véghatáridőre beadásra kerül, és az ekkor beadott változat elfogadott. A felkészülést egyéni szorgalmi feladatok is segítik, melyek megoldása nem kötelező. A határidőre és sikeresen megoldott szorgalmi feladatokkal további pontok szerezhetők, amelyeket a félévközi jegy kialakításánál pozitívan veszünk figyelembe, amennyiben a minimum feltételek teljesültek. Szorgalmi feladatokkal legfeljebb 7 többletpont szerezhető. A határidők pontos betartásával és a szorgalmi feladatokkal összesen 6+7=13 extra pont szerezhető.  Pótlási lehetőségek:  A jelenlét nem pótolható: a pótlást magában foglalja a megengedett hiányzás (30%). A laborgyakorlatokon írt ellenőrző feladat és a hozzá kapcsolódó ellenőrző dolgozat pótlólagos megírására nincs lehetőség: a pótlást magában foglalja az, hogy az elérhető pontszám 2/3-a a minimálisan elérendő pontszám. A laboratóriumi gyakorlatokon íratott beszámoló dolgozat pótlólagos megírására nincs lehetőség: a pótlást magában foglalja, az hogy a 3 dolgozatból a 2 legjobban sikerültet vesszük figyelembe. Nagy zárthelyi pótlására, illetve javítására a pótlási héten van lehetőség. A pótlási héten írt nagy zárthelyit abból az anyagból kell írni, amelyik nagy zárthelyi a félév közben rosszabbul sikerült. Azonos pontszám esetén az második anyagrészből. A pótlási héten írt zárthelyi pontszáma ennek a zárthelyinek a pontszámát írja felül. Ez a pótlási vagy javítási lehetőség alanyi jogon jár mindenkinek. A nagy házi feladat pótlólagos beadására csak a szorgalmi időszak végéig (utolsó tanítási napon, 12.00 óráig), különeljárási díj megfizetésével van mód, azon túl a nagy házi feladat nem pótolható. A megoldások apróbb hibáinak javítására - a laborvezető oktatóval egyeztetett időpontban - a pótlási hét közepéig (csütörtök 12:00 óráig), különeljárási díj megfizetésével van mód, azon túl a nagy házi feladat nem javítható. A pótlási héten már csak olyan feladatok és/vagy dokumentációk javíthatók, amelyek hiányosság, vagy működési hiba miatt kerültek elutasításra.
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
IMSc program: Az IMSc-s hallgatók számára külön laborcsoportokat indítunk. (Az előadás a teljes évfolyam számára közös.) Ezekben a csoportokban ugyanazon tananyag és tematika mellett mélyebb, összetettebb feladatok gyakoroltatják ugyanazokat a témaköröket. Az érdeklődők számára a tárgy keretében 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 konzultációk keretében segítséget nyújtunk. A számonkéréseken alkalmazott pontozás és jegyszámítás mindenkinél egységes. IMSc pontok: A jeles alsó ponthatára feletti összes többlet pontszámot IMSc pontszámnak számoljuk, a tárgy kreditértékének megfelelően összesen legfeljebb 30 pontot. A követelményeknél említett írásos beszámolók, nagy zárthelyik, szorgalmi feladatok és nagy házi feladat pontszámok ugyanolyan módon történő számítása mellett további 2×10 pontot lehet szerezni a nagy zárthelyiken választható kiegészítő feladatokkal. A kiegészítő feladatot tartalmazó zárthelyire előzetesen jelentkezni kell. A kiegészítő feladatot csak az alap feladatok 75%-os teljesítése mellett pontozzuk, és az itt megszerzett pontok az aláírás megszerzésére nem használhatók fel. Az IMSc pontok megszerzése a programban nem résztvevő hallgatók számára is biztosított, azonban a tárgy kreditjének megszerzéséhez kötött.  
Ajánlott tantárgyak

Nincs megadva.

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
Tantárgykövetelmények hatályosságának kezdete:
—
Tantárgykövetelmények hatályosságának vége:
—
Tantervi elhelyezés

Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.