A programozás alapjai 2

A tantárgy angol neve: Programming 2

Adatlap utolsó módosítása: 2017. január 19.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar

Mérnök informatikus szak, BSc képzés

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIIIAA00 2 2/2/2/f 7  
3. A tantárgyfelelős személy és tanszék Dr. Szeberényi Imre,
A tantárgy tanszéki weboldala http://infocpp.iit.bme.hu/
4. A tantárgy előadója

Dr. Szeberényi Imre

 

5. A tantárgy az alábbi témakörök ismeretére épít C programozási nyelv ismerete
6. Előtanulmányi rend
Kötelező:
(TárgyEredmény("BMEVIEEAA00", "jegy", _) >= 2
VAGY
TárgyEredmény("BMEVIEEA100", "jegy", _) >= 2
VAGY Training.Code=("5N-MGAIN"))

ÉS NEM
(TárgyEredmény("BMEVIIIA114", "jegy", _) >= 2
VAGY
TárgyEredmény("BMEVIIIA114", "felvétel", AktualisFelev()) > 0
VAGY
TárgyEredmény("BMEVIIIA115", "jegy", _) >= 2
VAGY
TárgyEredmény("BMEVIIIA115", "felvétel", AktualisFelev()) > 0
VAGY
TárgyEredmény("BMEVIIIAA03", "jegy", _) >= 2
VAGY
TárgyEredmény("BMEVIIIAA03", "felvétel", AktualisFelev()) > 0)

A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

Ajánlott:
A programozás alapjai 1. c. tárgyból kreditpont megszerzése kötelező.
7. A tantárgy célkitűzése

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 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 gyakorlatok és laborok anyaga folyamatosan követi az előadások tematikáját, azok megértését, elmélyítését támogatja.

8. A tantárgy részletes tematikája

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

  1. Előadás+gyakorlat: 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.
    Laborban
    : Alapvető operációs rendszer ismertek összefoglalása. Fejlesztő környezet bemutatása.
  1. Előadás+gyakorlat: 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.
    Laborban
    : 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+gyakorlat: 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.
    Laborban
    : 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+gyakorlat: Konstruktorok és destruktorok. Dinamikus adattagokat karbantartó osztályok. Másoló konstruktor, értékadás. Tagváltozók inicializálása. Konstans és statikus tagok.
    Laborban
    : 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+gyakorlat: 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.
    Laborban
    : Dinamikus adattagokat karbantartó osztályok. Másoló konstruktor, értékadás gyakorlása.
  1. Előadás+gyakorlat: 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.
    Laborban
    :Komplexebb objektum (pl. dinamikus tömb) megvalósítása. Operátorok túlterhelésének gyakorlása.
  1. Előadás+gyakorlat: 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.
    Laborban
    : Egyszerű öröklés gyakorlása. Öröklés hatása láthatóságra és túlterhelésre.
  1. Előadás+gyakorlat: Többszörös öröklés, virtuális alaposztályok. Konstruktorok és destruktorok automatikus feladatai. Perzisztencia fogalma és megvalósítása.
    Laborban
    :Heterogén kollekcióhoz kapcsolódó feladatok.
  1. Előadás+gyakorlat: Konverziós operátorok. Típuskonverziók, kivételkezelés.
    Laborban
    : Többszörös örökléshez és perzisztenciához kacsolódó feladatok.
  1. Előadás+gyakorlat: Generikus szerkezetek jelentősége. Függvény- és osztálysablonok.
    Laborban:
    Típuskonverziók, konverziós operátorok gyakorlása és kivételkezelés gyakorlása.
  1. Standard Template Library (STL) bevezetése. Bonyolultságelméleti megfontolások.
    Laborban:
    Generikus adatszerkezetek és algoritmusok gyakorlása.
  1. Előadás+gyakorlat: 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+gyakorlat: Komplex példa bemutatása. Kitekintés a nyelvhez kapcsolható eszközökre.
    Laborban
    : Gyakorlás. Házi feladat konzultáció.
  1. Előadás+gyakorlat: Összefoglalás. Tervezési példa.
    Laborban
    : Házi feladat bemutatása
9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

Órarendben ütemezett módon heti egy alkalommal előadást tartunk a teljes évfolyamnak. A tantermi gyakorlatok 30-35 fős hallgatói csoportokban (tanulókörök), a laboratóriumi foglalkozások pedig 12-20 fős számítógépes laborokban lesznek megtartva. 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.

 

10. 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, gyakorlat, labor) való rendszeres részvétel. A hiányzások megengedett mértéke 30%, aminek mindhárom óratípus esetében külön-külön is teljesülnie kell.
  • Ellenőrző dolgozat: a laborgyakorlatok sikeres teljesítéséhez szükséges előzetes tudás meglétét ellenőrző dolgozattal ellenőrizzük. Ennek anyaga az adott labor előadáson vagy gyakorlaton már bemutatott anyagával kapcsolatos. Minden sikeresen teljesített ellenőrző dolgozattal 1 pont szerezhető. A félév során 12 ellenőrző dolgozat megírására kerül sor. A tárgy teljesítésének szükséges feltétele, hogy az ellenőrző dolgozatokkal szerzett pontok elérjék félév során megszerezhető pontszámok lefelé kerekített 2/3-át, azaz 8-at.
  • Részteljesítmény értékelés: a hallgatók félévközi folyamatos haladásának regisztrálása érdekében a
    • félév során összesen 6 alkalommal rövid (15-20 perces) beszámoló dolgozatot iratunk a gyakorlati foglakozásokon. Ezek három témakört ölelnek fel, azaz három dolgozatpárost jelentenek. Minden pár közül a jobban sikerült eredményét vesszük figyelembe a félév végi jegy kialakításánál, melyek pontszáma (3 legjobb) 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 három legjobban sikerült beszámoló pontszámának (3*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.

A pontozás:
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 extra 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 8 többletpont szerezhető.
11. 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ő 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 tantermi gyakorlatokon íratott beszámolók pótlólagos megírására nincs lehetőség: a pótlást magában foglalja, az hogy páronként mindig a jobban sikerül beszámolót 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.

12. Konzultációs lehetőségek

A tárgy előadóival, gyakorlatvezetőivel és laborvezetőivel egyeztetett módon.

13. Jegyzet, tankönyv, felhasználható irodalom

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, 2001
  • Kondorosi 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)
14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra  84
Félévközi készülés órákra  50
Felkészülés zárthelyire  26
Házi feladat elkészítése  30
Kijelölt írásos tananyag elsajátítása  20
Vizsgafelkészülés 
Összesen210
15. A tantárgy tematikáját kidolgozta

Név:

Beosztás:

Tanszék, Int.:

dr. Szeberényi Imre

 egyetemi docens

 BME IIT

 VIK programozás oktatók munkaközössége.
IMSc tematika és módszer

IMSc tematika és módszer

Az IMSc-s hallgatók számára külön gyakorlati és labor csoportokat 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 pontozás

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 35 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.