K-INFO
HU
EN
Belépés

A programozás alapjai 2

Basics of 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
Basics of Programming 2
Tantárgykód BMEVIAUAA01
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
DR. Forstner Bertalan
beosztás: egyetemi docens
Tantárgyat gondozó oktatási szervezeti egység
Automatizálási és Alkalmazott Informatikai Tanszék
Kar Villamosmérnöki és Informatikai Kar
Tantárgy weboldala https://www.aut.bme.hu/Course/VIAUAA01
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.
2. 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.

Objektum-orientált programozás alapjai a C++ nyelv bemutatásával
3. 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. 
4. 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.
5. 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.
6. 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.

7. 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.
8. 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.
9. Előadás: Konverziós operátorok. Típuskonverziók, kivételkezelés.
10. Előadás: Generikus szerkezetek jelentősége. Függvény- és osztálysablonok.
11. Standard Template Library (STL) bevezetése. Bonyolultságelméleti megfontolások.
12. Előadás: STL tárolók és algoritmusok, iterátorok. Objektumorientált szoftvertervezési alapok. Tervezési példa.
13. Előadás: Komplex példa bemutatása. Kitekintés a nyelvhez kapcsolható eszközökre.
14.    Előadás: Összefoglalás. Tervezési példa.
 
Labor gyakorlatok részletes tematikája 
 
1. Alapvető operációs rendszer ismertek összefoglalása. Fejlesztőkörnyezet bemutatása.

2. const és referencia gyakorlása. C-ben írt kód átírása C++ eszközeivel (cin, cout). 
Függvénytúlterhelés és inline használata.

3. Több modul használata. Memóriaallokáció gyakorlása. Memóriafogyás (memory leak) 
felfedezése. Okok keresése, megszüntetése.

4. Egyszerű, pointert nem tartalmazó osztályok megvalósítása. getter/setter függvények 
gyakorlása. operator<< túlterhelése.

5. Dinamikus adattagokat karbantartó osztályok. Másoló konstruktor, értékadás gyakorlása. 

6. Komplexebb objektum (pl. dinamikus tömb) megvalósítása. Operátorok túlterhelésének 
gyakorlása.

7. Egyszerű öröklés gyakorlása. Öröklés hatása láthatóságra és túlterhelésre.

8. Heterogén kollekcióhoz kapcsolódó feladatok.

9. Többszörös örökléshez és perzisztenciához kacsolódó feladatok.

10. Típuskonverziók, konverziós operátorok gyakorlása és kivételkezelés gyakorlása.

11. Generikus adatszerkezetek és algoritmusok gyakorlása.

12. STL tárolók és algoritmusok gyakorlása.

13. Gyakorlás. Házi feladat konzultáció és bemutatás. 
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 további gyakorlatokkal mélyítse a C programozási nyelv ismeretét, 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 laborok 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

Előadás (gyakorlatorientált megközelítésű, elméletet és alkalmazási kört, valamint iparági legjobb gyakorlatokat is bemutató, példákkal fűszerezett, kódolási szekciókat is tartalmazó formában). Laboratórium (az előadáson hallottak alkalmazását begyakoroltartató, az összefüggéseket szem előtt tartó feladatokon keresztüli, vezetett egyéni programozási feladatok.

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ó.; Ajánlott irodalom:; Benedek Zoltán - Levendovszky Tihamér: Szoftverfejlesztés C++ nyelven (SZAK, 2007); B. Stroustrup: A C++ programozási nyelv (Kiskapu, 2001; Kondorosi Károly - László Zoltán - Szirmay-Kalos László: Objektum-orientált szoftverfejlesztés (CompuerBooks, 2004)

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 nyelv ismerete. Alapvető algoritmikai ismeretek.
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 nyelv ismerete. Alapvető algoritmikai ismeretek.
Á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ékét a TVSz rögzíti (30%). A feltételnek mindhárom óratípuson külön-külön is teljesülnie kell. A laborgyakorlatokon csak felkészült hallgatók vehetnek részt. A felkészülést a laborgyakorlatok elején ún. beugróval, vagy előfeladattal ellenőrizzük. Ennek anyaga az adott labor előadáson már bemutatott anyagával kapcsolatos. Az elégtelen felkészültség mulasztott laboralkalomnak számít. • Kis zárthelyik: a félév során öt alkalommal kis zárthelyit íratunk a laboratórium alkalmakon. Ezek közül a három legjobban sikerült kis zárthelyi pontszámnak egyenként el kell érje a szerezhető pontszám 40%-át. A legalább 40%-os kis zárthelyi kiváltja a beugró feladatot az adott alkalomra. • Nagy zárthelyi: a szorgalmi időszak alatt kettő alkalommal, az évfolyam terhelési táblázata szerinti időpontban nagy zárthelyi dolgozatot íratunk. A két dolgozat %-os eredményét összeadva és kettővel elosztva el kell érni az 50%-ot. • Nagy házi feladat: minden hallgatónak egy egyéni nagy házi feladatot kell megoldania, önálló munkával. A nagy házi feladatokat a 7. héten adjuk ki és a 14. héten kell beadni a végső megoldásokat, a laborvezető által előírt köztes állapotok bemutatásával. A nagy házi feladat elfogadásának feltétele, hogy az a kiírás szerint elkészült, a laborvezető személyesen átvette és elfogadta: (a) a hiánytalan dokumentációt, (b) az elkészített programot, amelyet együtt ki is próbáltak. A kis zárthelyik átlaga a 3 legjobb kis zárthelyi átlaga.    A végső jegy harmadát az első nagyZH, másik harmadát a második nagy ZH, hatodát a nagyHF, utolsó hatodát pedig a három legjobb kisZH adja. Mindig a %-os eredményből indulunk ki.   A végső jegy pontos számítási képlete: Végeredmény% = ZH1 % eredménye / 3 + ZH2 % eredménye /3  + NagyHF % eredménye / 6 + (3 legjobb kisZH %-os eredményének összege)/18 A jegyszámítás határai: 85.0%- jeles 70.0%- jó 55.0%- közepes 40.0%- elégséges Pótlási lehetőségek: A jelenlét nem pótolható: a pótlást magában foglalja a TVSz által megengedett hiányzás.   A kis zárthelyik pótlólagos megírására nincs lehetőség: a pótlást magában foglalja, hogy az ötből csak a három legjobb kis zárthelyi eredményét vesszük figyelembe.   A nagy zárthelyik a pótlási héten pótolhatók egy, a teljes félév anyagát felölelő pót zárthelyi dolgozat megírásával, melyen 40%-ot kell elérni az aláírás megszerzéséhez. Második pótlási lehetőség a vizsgaidőszakban különeljárási díj megfizetése mellett egyszer biztosított.   Nagy házi feladat: A megoldások apróbb hibáinak javítására – a laborvezető oktatóval egyeztetett időpontban – a pótlási hét szerdáig (18: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. Pótbemutatással az eredeti bemutatáson szerzett pontszámnak max. 125%-át lehet elérni.
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: A programban részt vevő hallgatók mind gyakorlat-, mind laborfoglalkozások során elkülönített csoportokba kerülnek beosztásra. Ezeken a tárgy tematikáját mélyebb szintig, illetve komplexebb feladatokon keresztül sajátítják el. A mélyebb összefüggések feltárására is ezeken a csoportokon kerül sor. IMSc pontok: A beugró feladatok és kis ZH-k tekintetében nincs eltérés. Nagy házi feladat kapcsán a programban részt vevők komplexebb, átfogóbb tudást igénylő feladatot is kaphatnak. Ennek értékelése összetettebb: az „elfogadott / elutasított” státuszon túl a megvalósítás minősége és letisztultsága alapján + 10 pontot szerezhetnek. A nagy zárthelyik esetében a 100%-nak megfelelő szint fölötti, legfeljebb 30%-nyi extra feladatot helyezünk el, amelyeket a plusz pontokért megoldhatnak. A terveink szerint +10 pontot gyűjthetnek össze a program résztvevői a ZH számonkéréseken. A laborfoglalkozásokon végzett extra feladatokért terveink szerint +10 pontot lehet kapni. Az IMSc pontok megszerzése a programban nem résztvevő hallgatók számára is biztosított.
Ajánlott tantárgyak
A programozás alapjai 1 - BMEVIHIAA01: A C nyelv ismerete. Alapvető algoritmikai ismeretek.
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.