„A programozás alapjai II.” változatai közötti eltérés

a Kozaróczy Zsolt átnevezte a(z) A programozás alapjai II. (régi) lapot a következő névre: A programozás alapjai II.
Nincs szerkesztési összefoglaló
 
(46 közbenső módosítás, amit 21 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
{{Új tárgy|A programozás alapjai II. (régi)}}
{{Tantárgy
{{Tantárgy
|nev=A programozás alapjai 2.
|nev=A programozás alapjai 2.
|targykod=VIIIAA00
|tárgykód=VIIIAA03
|régitárgykód=VIIIAA00
|szak=info
|szak=info
|kredit=7
|kredit=6 (régi: 7)
|felev=2
|felev=2
|kereszt=nincs
|kereszt=nincs
|tanszék=IIT
|tanszék=IIT
|kiszh=5 db
|labor=14 db
|kiszh=3 db
|vizsga=nincs
|vizsga=nincs
|nagyzh=2 db
|nagyzh=2 db
|hf=1 nagyházi + szorgalmi
|hf=1 nagyházi + szorgalmi
|tad=https://www.vik.bme.hu/kepzes/targyak/VIIIAA00
|tad=https://www.vik.bme.hu/kepzes/targyak/VIIIAA03
|targyhonlap=http://infocpp.iit.bme.hu/
|targyhonlap=http://infocpp.iit.bme.hu/
|levlista=prog2{{kukac}}sch.bme.hu }}
|levlista=prog2{{kukac}}sch.bme.hu
}}
{{Egyértelműsítő|programozás alapjai|A programozás alapjai (egyértelműsítő lap)}}
 
A tárgy fő célkitűzése, hogy bevezessen az objektum-orientált programozásba a C++ nyelv megismertetésével. Ennek alapjául az előző félévben megszerzett C nyelvi tudás szükséges. További cél, hogy megismertessen néhány alapvető operációsrendszer-használati fogalommal, valamint hordozható programok írásának szabályaival.
 
A tárgyak felelőse és előadója Dr. Szeberényi Imre és Somogyi Péter. A laborgyakorlatokat az IIT vezetésével az AAIT, EET, ETT, HIT és a VET tanszékek oktatói tartják. Gyakorlat nincs a tárgyból.


== Követelmények ==
== Követelmények ==
===Előtanulmányi rend===
: ''További részletek és aktuális információk a tárgyhonlapon: [https://infocpp.iit.bme.hu/node/171 infocpp.iit.bme.hu]''
Az új tanterv [[A programozás alapjai I.|A programozás alapjai 1.]] tárgyáből kredit megszerzése vagy, a régi tanterv [[A programozás alapjai I. (régi)|A programozás alapjai 1.]] és [[Szoftver labor I.]] tárgyaiból kredit megszerzése szükséges a tárgy felvételéhez.
 
=== Előtanulmányi rend ===
* Az új tanterv [[A programozás alapjai I.|A programozás alapjai 1.]] tárgyából kredit megszerzése, vagy a régi tanterv [[A programozás alapjai I. (régi)|A programozás alapjai 1.]] tárgyából kredit megszerzése szükséges a tárgy felvételéhez.
 
=== A szorgalmi időszakban ===
* A min. elégséges '''félévvégi jegy''' feltételei:
** A '''laborok''' legalább 70%-án való részvétel. (max 4 hiányzás)
** A laborokon írt beugrókból, jporta ellenőrző feladatokból, illetve jportára leadott laborfeladatokból összegezve min. 22 pont szerzése.
*** Ezek mind egyesével 1 pontot érnek, ez összesen 3x11 a félév során.
*** Amennyiben a labor alkalmon kisZH van, labor beugró pontnak a sikeres (>40%) kisZH számít.
** A '''kisZH'''-k sikeres megírása. Ehhez a 3db kisZH-ból a legjobb 2-nek külön-külön el kell hogy érje a 40%-ot, azaz 4 pontot.
** A 2 '''nagyZH''' sikeres megírása. Ehhez a két ZH ''összpontszámának'' kell elérnie az összesen elérhető pontok 50%-át, tehát 40 pontot.
** A nagy '''házi feladat''' sikeres megoldása, bemutatása.
* '''Pótlási lehetőségek''':
** A '''kisZH-k''' pótlólagos megírására nincs lehetőség, viszont 3 kisZH-ból csak 2 számít, így a maradék egyet felhasználhatod javításra, és a két legjobb számít majd bele.
** A '''nagyZH'''-k közül az egyik, mégpedig amelyik rosszabbul sikerült elsőre, a pótlási héten pótolható. Azonos pontszám esetén a második anyagrészből. A pótZH felülírja a korábbi ZH eredményét.
** 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 végéig (utolsó 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 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.


===A szorgalmi időszakban===
=== Félévvégi jegy ===
*A min. elégséges '''félévvégi jegy''' feltételei:
A félév végi pontszám az alábbiak összege:
**A '''gyakorlatok''' legalább 70%-án való részvétel.
* NZH1 (40 pont)
**A '''laborok''' legalább 70%-án való részvétel. Laboron lehet beugró, amit ha nem teljesítesz nem lesz érvényes a jelenléted.
* NZH2 (40 pont)
**A '''kisZH-k''' sikeres megírása. Ehhez az 5 db kisZH-ból a legjobb 3-nak az átlaga kell, hogy min. 40% legyen. 6 pontos kisZH-k esetén ez 7,2 pont.
* Két legjobb kisZH szummája (20 pont)
**A 2 '''nagyZH''' sikeres megírása. Ehhez a két ZH összepontszámának kell elérnie az összesen elérhető pontok 50%-át.
* Laborfeladatok (33 pont)
**A '''házi feladat''' sikeres megoldása.
** Előfeladatok (11 pont)
*'''Pótlási lehetőségek''':
** "Beugró" ellenőrző kérdések (11 pont)
**A kis zárthelyik pótlólagos megírására nincs lehetőség.
** Sikeres labor feladatok (11 pont)
**A nagy zárthelyik a pótlási héten pótolhatók, különeljárási díj megfizetése mellett. A pótlási héten írt nagy zárthelyi a félév közben rosszabbul sikerült nagy zárthelyi eredményét helyettesíti.
* HF pont (40 pont)
**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 végéig (utolsó 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 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.
* Plusz pontok (20 pont)
** HF plusz pont (6 pont)
*** Részfeladatok időben leadása (1+1+2+2=6 pont)
** Szorgalmik (14 pont)


===A vizsgaidőszakban===
==== Ponthatárok ====
*'''Vizsga''': nincs.
{{Jegykonvertálás
|1 = 0 - 85
|2 = 86 - 107
|3 = 108 - 129
|4 = 130 - 151
|5 = 152+
}}


===Félévvégi jegy===
==== iMSc pontok ====
A félévközi jegy a nagy zárthelyik átlaga, a három legjobb kis zárthelyi, és a nagy házi feladat pontszáma alapján számítódik ki, ahol a nagy zárthelyik átlaga 50% súllyal, a kis zárthelyik és a nagy házi feladat 25-25%-os súllyal szerepelnek.
* '''Elérhető pontszám''': 30 pont
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 vesznek figyelembe.
* Az extra pontokkal (HF és szorgalmi pontok), továbbá a nagy zárthelyiken megoldott iMSc feladatokkal többlet pontok szerezhetőek. Ezek hozzáadódnak az össz. pontszámhoz (P), ha a minimális (elégséges) követelmények teljesülnek.
* Minden jeles érdemjegyet meghaladó pontot iMSc ponttá alakítunk, de az nem haladhatja meg a 30 pontot:
* iMSc pont = <math> min ( max ( P - 152, 0) , 30) </math>


== Segédanyagok ==
== Segédanyagok ==
* [https://infocpp.iit.bme.hu/tananyag infocpp] diasorok, laborfeladatok
=== Előadások diái ===
* 2020:
** [[Media:Prog2 bevezeto ea.pdf | Beveztő előadás]]
** [[Media:Prog2_1_ea.pdf | 1. előadás - C++ kialakulás]]
** [[Media:Prog2 2 ea.pdf | 2. előadás - Névterek, memóriakezelés]]
** [[Media:Prog2 3 ea.pdf | 3. előadás - OO paradigmák, class, operátorok]]
** [[Media:Prog2 4 ea.pdf | 4. előadás - Konstruktor, dinamikus szerkezetek]]
** [[Media:Prog2 5 ea.pdf | 5. előadás - Objektummodell, öröklés, virtual]]
** [[Media:Prog2 6 ea.pdf | 6. előadás - Mutatókonverziók, heterogén kollekció]]
** [[Media:Prog2 7 ea.pdf | 7. előadás - Generikus szerkezet]]
** [[Media:Prog2 8 ea.pdf | 8. előadás - Bejárók, tervezési példa]]
** [[Media:Prog2 9 ea.pdf | 9. előadás - Többszörös öröklés, cast]]
** [[Media:Prog2 10 ea.pdf | 10. előadás - Hibakezelés, STL]]
** [[Media:Prog2 11 ea.pdf | 11. előadás - STL algoritmusok]]
** [[Media:Prog2 12 ea.pdf | 12. előadás - Backtrack algoritmusok]]
** [[Media:Prog2 13 ea.pdf | 13. előadás - OO tervezési megfontolások]]
** [[Media:Prog2 hfhez ea.pdf | Házi feladathoz előadás]]
** [[Media:Prog2 bonusz ea.pdf | Bónusz előadás]]
=== Jegyzet ===
* Dobra Gábor [http://cppftw.org/jegyzet/ Prog2 jegyzete]
* Siroki Péter HaT-os öregtag által készített C++ jegyzet: [[Media:Prog2_jegyzet.pdf|pdf]] - [http://psiroki.github.io/ccjegyzet/ online]. A villanyos tematikát követi, de itt is jól használható. Az esetleges hibákat a wiki@sch.bme.hu címre várjuk.
* [[Media:Tomor_prog2_2020.pdf | Tömör Prog2 jegyzet - 2020]]
=== Általános segédletek ===
* [http://www.eet.bme.hu/~czirkos/cpp.php Czirkos Zoltán honlapja]
* [http://www.eet.bme.hu/~czirkos/cpp.php Czirkos Zoltán honlapja]
* [https://infocpp.ddns.me InfoC++2 nem hivatalos, de hasznos honlap]
* [[ProgUnixon]]
* [[ProgUnixon]]
* [[Prog2ShellScriptTutorial|ShellScriptTutorial]]
* [[Prog2ShellScriptTutorial|ShellScriptTutorial]]
49. sor: 111. sor:
* [http://duramecho.com/ComputerInformation/WhyHowCppConst.html Mire jó a konstans referencia?] Ha végigolvasod megvilágosodsz.
* [http://duramecho.com/ComputerInformation/WhyHowCppConst.html Mire jó a konstans referencia?] Ha végigolvasod megvilágosodsz.
* [https://sites.google.com/site/czirjakzoltan91/programozas/c-programozas-1 Czirják Zoltán 2012 tavaszi félévben tartott konzultációinak megoldásai és feladatsorai.] Jól jön a zh-hoz, beugrókhoz.
* [https://sites.google.com/site/czirjakzoltan91/programozas/c-programozas-1 Czirják Zoltán 2012 tavaszi félévben tartott konzultációinak megoldásai és feladatsorai.] Jól jön a zh-hoz, beugrókhoz.
* [http://www.aut.bme.hu/CppPeldatar/Tags/El%C5%91sz%C3%B3 c++] Villanyos c++ példatár.
* [http://www.chiark.greenend.org.uk/~sgtatham/putty/ Putty] ural2 eléréshez.
* [https://tortoisesvn.net/ TortoiseSVN] laborok anyagainak letöltéséhez.


===Szabadon elérhető C++ fejlesztőeszközök és fordítók===
=== Online hozzáférhető könyvek ===
* [http://www.tankonyvtar.hu/hu/tartalom/tkt/objektum-orientalt/adatok.html Objektum-orientált szoftverfejlesztés]
* [http://www.ms.sapientia.ro/~manyi/teaching/c++/cpp.pdf C++ leírás magyarul]
** A könyvből remekül át lehet ismételni a tanultakat.
** A programnyelv önálló megtanulására nem alkalmas, mivel előbb használ olyan fogalmakat, melyeket csak később vezet be.
* [http://www.icce.rug.nl/documents/cplusplus/ C++ Annotations]
* [http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html Thinking in C++]


* [http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express Visual C++ Express 2010] &mdash; Windowsra
=== Szabadon elérhető C++ fejlesztőeszközök és fordítók ===
* [https://www.visualstudio.com/vs/ Visual Studio] &mdash; Windows-ra és Mac-re (Community bőven elég, de [https://e5.onthehub.com/WebStore/ProductsByMajorVersionList.aspx?ws=42a261b1-869b-e011-969d-0030487d8897 BME-VIK-es diákok kapnak Enterprise-hoz is license-t].)
* [https://www.jetbrains.com/clion/ CLion] &mdash; Crossplatform. Hátránya, hogy Java-ban írva, így nem árt neki egy kis memória. BME hallgatóknak [https://www.jetbrains.com/student/ ingyenes]!
* [http://msdn.microsoft.com/mobility/othertech/eVisualc/default.aspx eMbedded Visual C++] &mdash; Windows CE-re
* [http://msdn.microsoft.com/mobility/othertech/eVisualc/default.aspx eMbedded Visual C++] &mdash; Windows CE-re
* [http://gcc.gnu.org/ GCC] &mdash; sok platformra
* [http://gcc.gnu.org/ GCC] &mdash; sok platformra
59. sor: 132. sor:
* [http://www.codeblocks.org/ Code::Blocks] &mdash; sok platformra
* [http://www.codeblocks.org/ Code::Blocks] &mdash; sok platformra


===Online hozzáférhető könyvek===
== Házi ==
* A házi feladat négy nagy lépésre osztható szét +  a szóbeli bemutatás.
** 1) SPECIFIKÁCIÓ: Be kell adni egy kis, belső lefutások nélküli (fekete doboz) specifikációt a feladatról PDF-ben, amit elkészítesz majd.
** 2) TERV: Előző specifikációt bővítve el kell készíteni egy doksit, ami tartalmaz egy kibővített feladatspecifikációt (pl. várható bemenetek kimenetek, program használata, hogyan tárolod majd az adatokat... stb) + egy objektumtervet, tehát egy UML rajz a függvényekről, osztályok kapcsolatáról (inheritance, use...stb). Ehhez érdemes használni a Creatly oldalán lévő UML drawert (https://app.creately.com), nem kell letölteni hozzá semmit, és tudod egyből exportálni is. Ezen kívül a fájlnak tartalmaznia kell a fontosabb algoritmusok leírását pszeduo-kódban, pl hogy működik a fájlikiírás, fájlbeolvasás, adatbázis adatainak feldolgozása stb.
** 3) SKELETON: Itt már a kódodat adod be, viszont nem kell mindennek működnie. Elég ha a felhasználói felület kész, de pl. a fájlműveletek nem működnek. A lényeg, hogy objektumorientáltan legyenek csoportosítva a függvények, és legyen már logikus felépítésű. Nem kötelező a végső programnak egy az egyben így kinéznie, lehet ezután is változtatni még rajta.
** 4) KÉSZ: A kész és teljes feladat több részletből áll, így érdemes mindig időben elkészíteni a felette lévő dolgokat, mert sokat segít az időmenedzsmentben, ha nem az utolsó hetekben kell mindezt kitalálni.


* [http://www.ms.sapientia.ro/~manyi/teaching/c++/cpp.pdf C++ leírás magyarul]
== KisZH ==
** A könyvből remekül át lehet ismételni a tanultakat.
* A [https://infocpp.iit.bme.hu/taxonomy/term/8 tárgyhonlapon] megtalálható az összes kisZH évre és csoportokra bontva, megoldásokkal.
** A programnyelv önálló megtanulására nem alkalmas, mivel előbb használ olyan fogalmakat, melyeket csak később vezet be.
* '''1. KZH kikérdező'''
* [http://www.icce.rug.nl/documents/cplusplus/ C++ Annotations]
**[[Prog2 1. KZH Igaz/Hamis kikérdező | Wiki kikérdező]]
* [http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html Thinking in C++]


== KisZH-k, beugrók ==
== ZH-k ==


=== 1. ZH ===
* 2015
** [[Media:prog2_zh1_2015.pdf | ZH megoldásokkal]]
* 2016:
** [[Media:prog2_zh1_2016.pdf | ZH megoldásokkal]]
** [[Media:prog2_pzh1_2016.pdf | PZH megoldásokkal]]


== Házi ==
=== 2. ZH ===
* [[Prog2 2. ZH kikérdező]]
*2015
** [[Media:prog2_zh2_2015.pdf | ZH megoldásokkal]]
* 2016
** [[Media:prog2_zh2_2016.pdf | ZH megoldásokkal]]
** [[Media:prog2_pzh2_2016.pdf | PZH megoldásokkal]]




== ZH ==
{{Rejtett
* 2013
|mutatott='''Régi típusú ZH-k '''
** [[Media:Zh130523a_meg.pdf| prog2_zh_20130523a_mo.pdf]]
|szöveg=
** [[Media:Zh130513a_meg.pdf| prog2_zh_20130513a_mo.pdf]]
* ''(csak 1 ZH volt félév közben)''
* 2012
* 2006: [[Media:prog2_zh_20060518a_mo.pdf|A]] - [[Media:prog2_zh_20060525a_mo.pdf|B]]
** [[Media:prog2_zh_20120517a_mo.pdf| prog2_zh_20120517a_mo.pdf]]
* 2007: [[Media:prog2_zh_20070517b_mo.pdf|A]]
** [[Media:prog2_zh_20120510a_mo.pdf| prog2_zh_20120510a_mo.pdf]]
* 2008: [[Media:prog2_zh_20080514a_mo.pdf|A]] - [[Media:prog2_zh_20080522a_mo.pdf|B]]
* 2011
* 2009: [[Media:prog2_zh_20090515a_mo.pdf|A]] - [[Media:prog2_zh_20090521a_p_mo.pdf|B]]
** [[Media:prog2_zh_20110512a_mo.pdf| prog2_zh_20110512a_mo.pdf]]
* 2010: [[Media:prog2_zh_20100513a_mo.pdf|A]] - [[Media:prog2_zh_20100515a_mo.pdf|B]] - [[Media:prog2_zh_20100520a_mo.pdf|C]] - [[Media:prog2_zh_20100525a_mo.pdf|D]]
** [[Media:prog2_zh_20110519a_mo.pdf| prog2_zh_20110519a_mo.pdf]]
* 2011: [[Media:prog2_zh_20110512a_mo.pdf|A]] - [[Media:prog2_zh_20110519a_mo.pdf|B]]
* 2010
* 2012: [[Media:prog2_zh_20120517a_mo.pdf|A]] - [[Media:prog2_zh_20120510a_mo.pdf|B]]
** [[Media:prog2_zh_20100513a_mo.pdf| prog2_zh_20100513a_mo.pdf]]
* 2013: [[Media:Zh130523a_meg.pdf|A]] - [[Media:Zh130513a_meg.pdf|B]]
** [[Media:prog2_zh_20100515a_mo.pdf| prog2_zh_20100515a_mo.pdf]]
* 2014: [[Media:prog2_zh_2014_1.pdf|A]] - [[Media:prog2_zh_2014_2.pdf|B]]
** [[Media:prog2_zh_20100520a_mo.pdf| prog2_zh_20100520a_mo.pdf]]
}}
** [[Media:prog2_zh_20100525a_mo.pdf| prog2_zh_20100525a_mo.pdf]]
* 2009
** [[Media:prog2_zh_20090515a_mo.pdf| prog2_zh_20090515a_mo.pdf]]
** [[Media:prog2_zh_20090521a_p_mo.pdf| prog2_zh_20090521a_p_mo.pdf]]
* 2008
** [[Media:prog2_zh_20080514a_mo.pdf| prog2_zh_20080514a_mo.pdf]]
** [[Media:prog2_zh_20080522a_mo.pdf| prog2_zh_20080522a_mo.pdf]]
* 2007
** [[Media:prog2_zh_20070517b_mo.pdf| prog2_zh_20070517b_mo.pdf]]
* 2006
** [[Media:prog2_zh_20060518a_mo.pdf| prog2_zh_20060518a_mo.pdf]]
** [[Media:prog2_zh_20060525a_mo.pdf| prog2_zh_20060525a_mo.pdf]]
 
===Tipikus ZH kérdések===
 
* Írj egy generikus tároló osztályt mely tudja az alábbiakat:
** konstrukor, destruktor
** másoló konstruktor
** operator =
** getMinMax(bool isMin)
* Írjon tetszőleges generikus rendező algoritmust!
* Írjon algoritmus, amely transzponál egy generikus mátrixot!


== Tippek ==
== Tippek ==
118. sor: 185. sor:
--[[Szerkesztő:Ferrero|Szabó Csaba]] ([[Szerkesztővita:Ferrero|vita]]) 2012. december 16., 23:26 (CET)
--[[Szerkesztő:Ferrero|Szabó Csaba]] ([[Szerkesztővita:Ferrero|vita]]) 2012. december 16., 23:26 (CET)


== Gyakvezérek ==
== Verseny ==
=== Vélemény a gyakorlatvezetőkről ===
* A félév közben szokott lenni verseny, melynek eredménye nem számít bele az félév végi eredménybe. Részletesebben: [http://infocpp.iit.bme.hu/bmx]
* '''Blázovics László''': Az anyagot nagyon érti, szívesen segít, viszont nem tart túl izgalmas gyakorlatokat, könnyen elterelődik a figyelmed, könnyen bealszol.
* '''Goldschmidt Balázs''': Jó hangulatú órákat tart, jól magyaráz.
* '''Simon Balázs''': Jól magyaráz, viszont az előadói stílusa nem a legjobb.
* '''Izsó Tamás''': Nagyon jó szakember, de nem gyakorlatot tart, hanem előadást. Diákat vetít és végig magyaráz. Az utolsó pár dián általában vannak feladatok, de azokat sem megoldja, hanem megmutatja a megoldást és csak beszél a kódról. Ráadásul sokszor ezekig a diákig el sem ér, mert kicsúszik az időből. Soha nem sikerül még befejezni az órát időre (sőt, csak szimplán befejezni sem, mert sosem ért a végére). Óra előtt igyál meg legalább egy kávét, különben tuti elalszol. Ettől függetlenül jó szakember, és szívesen segít is, bármilyen problémád, kérdésed van.


== Verseny ==
A félév közben szokott lenni verseny, melynek eredménye nem számít bele az félév végi eredménybe. Részletesebben: [http://infocpp.iit.bme.hu/bmx]


{{Lábléc_-_Mérnök_informatikus_alapszak_2014}}
{{Lábléc - Mérnök informatikus alapszak 2022}}
{{Lábléc - Mérnök informatikus alapszak 2014}}