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) |
|
||||||||||||
| 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
elérhetőség:
somogyi.peter@vik.bme.hu
|
||||||||||||
| 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
- 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.
- 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
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Előadás: Standard Template Library (STL)
bevezetése. Bonyolultságelméleti megfontolások.
Labor: Generikus adatszerkezetek és algoritmusok gyakorlása.
- 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.
- 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.
- 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.