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

Szikszayl (vitalap | szerkesztései)
a Jegyzet: Helyesírás javítása
 
(57 közbenső módosítás, amit 26 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
{{Tantárgy
{{Tantárgy
|nev=A programozás alapjai 2.
|nev=A programozás alapjai 2.
|targykod=BMEVIIIA114
|tárgykód=VIIIAA03
|régitárgykód=VIIIAA00
|szak=info
|szak=info
|kredit=4
|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=1 db
|nagyzh=2 db
|hf=szorgalmi hftest
|hf=1 nagyházi + szorgalmi
|tad=https://www.vik.bme.hu/kepzes/targyak/VIIIA114
|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]''
[[A programozás alapjai I.|A programozás alapjai 1.]] tárgybő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 szorgalmi időszakban ===
*A min. elégséges '''félévvégi jegy''' feltételei:
* A min. elégséges '''félévvégi jegy''' feltételei:
**A '''gyakorlatok''' legalább 70%-án való részvétel.
** A '''laborok''' legalább 70%-án való részvétel. (max 4 hiányzás)
**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.
** A laborokon írt beugrókból, jporta ellenőrző feladatokból, illetve jportára leadott laborfeladatokból összegezve min. 22 pont szerzése.
**A '''nagyZH''' sikeres (min. 40%) megírása. 20 pontos nagyZH esetén ez 8 pont.
*** Ezek mind egyesével 1 pontot érnek, ez összesen 3x11 a félév során.
*'''Pótlási lehetőségek''':
*** Amennyiben a labor alkalmon kisZH van, labor beugró pontnak a sikeres (>40%) kisZH számít.
**A kisZH-k külön nem pótolhatóak.
** 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 nagyZH egyszer félév közben pótolható.
** 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.
**Ha a két ZH-típus közül az egyik nincs meg, akkor az a pótlási héten (különeljárási díj fejében) megírt pótpótZH eredményével pótolható.
** 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 vizsgaidőszakban===
=== Félévvégi jegy ===
*'''Vizsga''': nincs.
A félév végi pontszám az alábbiak összege:
* NZH1 (40 pont)
* NZH2 (40 pont)
* Két legjobb kisZH szummája (20 pont)
* Laborfeladatok (33 pont)
** Előfeladatok (11 pont)
** "Beugró" ellenőrző kérdések (11 pont)
** Sikeres labor feladatok (11 pont)
* HF pont (40 pont)
* Plusz pontok (20 pont)
** HF plusz pont (6 pont)
*** Részfeladatok időben leadása (1+1+2+2=6 pont)
** Szorgalmik (14 pont)


===Félévvégi jegy===
==== Ponthatárok ====
*A jegy az összpontszám (P) alapján kerül meghatározásra, amelyet a következő módon számítják ki:
{{Jegykonvertálás
**<math>P= 2*nzh+kzh_3 + sz</math>
|1 = 0 - 85
**nzh: a nagyZH pontszáma,
|2 = 86 - 107
**kzh<sub>3</sub>: a 3 legjobb kisZH összpontszáma
|3 = 108 - 129
**sz: Az aktív félévközi munkát ösztönözendő a jegyszámítás alapját képező összpontszám legfeljebb 8,7 szorgalmi ponttal növelhető a következők szerint:
|4 = 130 - 151
***<math>sz= 8,7 * min(1, \frac{kzh_{ossz}}{21}*\frac{hftest}{8})</math>
|5 = 152+
***kzh<sub>ossz</sub>: Az 5 db kisZH összpontszáma.
}}
***hftest: a félév során szerzett hftest pontok száma.


*Ponthatárok:
==== iMSc pontok ====
:{| class="wikitable" align="center"
* '''Elérhető pontszám''': 30 pont
!P!!Jegy
* 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:
| 0 - 23,1|| 1
* iMSc pont = <math> min ( max ( P - 152, 0) , 30) </math>
|-
|23,2 - 31,8|| 2
|-
|31,9 - 40,5|| 3
|-
|40,6 - 49,2|| 4
|-
|49,3 - 58|| 5
|}


== Segédanyagok ==
== Segédanyagok ==
* [https://infocpp.iit.bme.hu/tananyag infocpp] diasorok, laborfeladatok
=== Előadások diái ===
* 2020:
** [[Média:Prog2 bevezeto ea.pdf| Beveztő előadás]]
** [[Média:Prog2 1 ea.pdf| 1. előadás - C++ kialakulás]]
** [[Média:Prog2 2 ea.pdf| 2. előadás - Névterek, memóriakezelés]]
** [[Média:Prog2 3 ea.pdf| 3. előadás - OO paradigmák, class, operátorok]]
** [[Média:Prog2 4 ea.pdf| 4. előadás - Konstruktor, dinamikus szerkezetek]]
** [[Média:Prog2 5 ea.pdf| 5. előadás - Objektummodell, öröklés, virtual]]
** [[Média:Prog2 6 ea.pdf| 6. előadás - Mutatókonverziók, heterogén kollekció]]
** [[Média:Prog2 7 ea.pdf| 7. előadás - Generikus szerkezet]]
** [[Média:Prog2 8 ea.pdf| 8. előadás - Bejárók, tervezési példa]]
** [[Média:Prog2 9 ea.pdf| 9. előadás - Többszörös öröklés, cast]]
** [[Média:Prog2 10 ea.pdf| 10. előadás - Hibakezelés, STL]]
** [[Média:Prog2 11 ea.pdf| 11. előadás - STL algoritmusok]]
** [[Média:Prog2 12 ea.pdf| 12. előadás - Backtrack algoritmusok]]
** [[Média:Prog2 13 ea.pdf| 13. előadás - OO tervezési megfontolások]]
** [[Média:Prog2 hfhez ea.pdf| Házi feladathoz előadás]]
** [[Média: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: [[Média: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.
* [[Média:Tomor prog2 2020.pdf|Tömör Prog2 jegyzet - 2020]]
* [https://nevemlaci.dev/prog2_jegyzet/ Lipódi László laborvezető által készített hallgatói C++-jegyzet]
=== Általános segédletek ===
* [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]]
63. sor: 109. sor:
* [http://www.cppreference.com/ C és C++ referencia oldal]
* [http://www.cppreference.com/ C és C++ referencia oldal]
* [http://www.iit.bme.hu/~szebi/proga2/cppsummary.pdf 2 oldalas C++ összefoglaló]
* [http://www.iit.bme.hu/~szebi/proga2/cppsummary.pdf 2 oldalas C++ összefoglaló]
* [http://www.iit.bme.hu/~szebi/proga2/stlsummary.pdf 2 oldalas STL összefoglaló]
* [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
75. sor: 133. 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
** [[Média:Prog2 zh1 2015.pdf| ZH megoldásokkal]]
* 2016:
** [[Média:Prog2 zh1 2016.pdf| ZH megoldásokkal]]
** [[Média:Prog2 pzh1 2016.pdf| PZH megoldásokkal]]


== Házi ==
=== 2. ZH ===
* [[Prog2 2. ZH kikérdező]]
*2015
** [[Média:Prog2 zh2 2015.pdf| ZH megoldásokkal]]
* 2016
** [[Média:Prog2 zh2 2016.pdf| ZH megoldásokkal]]
** [[Média: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]] [[infoC++]]
|szöveg=
** [[Media:Zh130513a_meg.pdf| prog2_zh_20130513a_mo.pdf]]  – [[infoC++]]
* ''(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]] – [[infoC++]]
* 2007: [[Media:prog2_zh_20070517b_mo.pdf|A]]
** [[Media:prog2_zh_20120510a_mo.pdf| prog2_zh_20120510a_mo.pdf]]  – [[infoC++]]
* 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]] – [[infoC++]]
* 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]]  – [[infoC++]]
* 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]] – [[infoC++]]
* 2013: [[Media:Zh130523a_meg.pdf|A]] - [[Media:Zh130513a_meg.pdf|B]]
** [[Media:prog2_zh_20100515a_mo.pdf| prog2_zh_20100515a_mo.pdf]] – [[infoC++]]
* 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]] – [[infoC++]]
}}
** [[Media:prog2_zh_20100525a_mo.pdf| prog2_zh_20100525a_mo.pdf]]  – [[infoC++]]
* 2009
** [[Media:prog2_zh_20090515a_mo.pdf| prog2_zh_20090515a_mo.pdf]] [[infoC++]]
** [[Media:prog2_zh_20090521a_p_mo.pdf| prog2_zh_20090521a_p_mo.pdf]] – [[infoC++]]
* 2008
** [[Media:prog2_zh_20080514a_mo.pdf| prog2_zh_20080514a_mo.pdf]]  – [[infoC++]]
** [[Media:prog2_zh_20080522a_mo.pdf| prog2_zh_20080522a_mo.pdf]] – [[infoC++]]
* 2007
** [[Media:prog2_zh_20070517b_mo.pdf| prog2_zh_20070517b_mo.pdf]]  – [[infoC++]]
* 2006
** [[Media:prog2_zh_20060518a_mo.pdf| prog2_zh_20060518a_mo.pdf]] – [[infoC++]]
** [[Media:prog2_zh_20060525a_mo.pdf| prog2_zh_20060525a_mo.pdf]]  – [[infoC++]]
 
===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!
 
-- [[NovakAron]] - 2006.01.14.


== Tippek ==
== Tippek ==
136. sor: 186. 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.


== 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}}
{{Lábléc - Mérnök informatikus alapszak 2022}}
{{Lábléc - Mérnök informatikus alapszak 2014}}