„C11 és C++11 programozás” változatai közötti eltérés

A VIK Wikiből
Nincs szerkesztési összefoglaló
12. sor: 12. sor:
| kiszh = nincs
| kiszh = nincs
| nagyzh = van
| nagyzh = van
| hf = van (kicsi + nagy)
| hf = van (2 db)
| vizsga = van
| vizsga = van
| levlista =  
| levlista =  
32. sor: 32. sor:
**A '''laboralkalmak''' legalább 70%-án való részvétel. - a laborfeladat utólagos elküldésével és/vagy tárgyfelelőssel való megbeszélés után túl lehet lógni a 70%-on, de alapos indok kell
**A '''laboralkalmak''' legalább 70%-án való részvétel. - a laborfeladat utólagos elküldésével és/vagy tárgyfelelőssel való megbeszélés után túl lehet lógni a 70%-on, de alapos indok kell
**'''ZH''' sikeres (min. 50%) megírása.
**'''ZH''' sikeres (min. 50%) megírása.
**'''2 db házi''' sikeres elkészítése.
*'''Megajánlott jegy:''' gyakorlatilag a ZH-ra (PZH-ra, PPZH-ra) megajánlott vizsgajegyet kapsz.
*'''Megajánlott jegy:''' gyakorlatilag a ZH-ra (PZH-ra, PPZH-ra) megajánlott vizsgajegyet kapsz.
*'''Pótlási lehetőségek:'''
*'''Pótlási lehetőségek:'''
38. sor: 39. sor:
===A vizsgaidőszakban ===
===A vizsgaidőszakban ===
*'''Vizsga''': írásbeli. Tematikája megegyezik a ZH-val.
*'''Vizsga''': írásbeli. Tematikája megegyezik a ZH-val.
*Előfeltétele: az aláírás megléte.


===Félévvégi jegy===
===Félévvégi jegy===
59. sor: 59. sor:
|}
|}


==Ütemterv==
Természetesen az ütemterv '''változhat''', ez csak egy időbeosztást könnyítő táblázat.
:{| class="wikitable" align="center"
|-
! Hét !! Előadás !! Labor !! Esemény
|-
|1 || Bevezető és C99 nyelvi elemek || C11 és C++11 fejlesztőeszközök || -
|-
|2 || Objektumok memóriaképe || A linkelés rejtelmei || -
|-
|3 || Adattag pointerek || OOP tervezés || -
|-
|4 || Osztályhierarchiák C++11-ben || C++11 öröklés || -
|-
|5 || Típusok használata || Típusok használata || kis HF kiadás
|-
|6 || Változók élettartama || Változók élettartama || -
|-
|7 || Tároló osztályok || Haladó memóriakezelés || -
|-
|8 || Jobbérték referenciák || Jobbérték referenciák || -
|-
|9 || Kivételek || Kivételek || -
|-
|10 || Sablon metaprogramozás || Sablon metaprogramozás I. || nagy HF kiadás
|-
|11 || Paraméterlisták és -továbbítás || Sablon metaprogramozás II. || -
|-
|12 || Lambda függvény || Lambda függvény || -
|-
|13 || Többszálúság || - || ZH
|-
|14 || Nyelvi elemzők || Összetett feladatok || kis, nagy HF beadás, PZH
|-
| póthét || - || - || PPZH
|}


==Tematika==
==Tematika==
154. sor: 116. sor:
== Segédanyagok ==
== Segédanyagok ==


===Hivatalos egyetemi jegyzetek===
A tárgyhonlapon elérhető részletes jegyzet. Ennek felépítése a prog1-es InfoC oldallal megegyező, a jegyzet mértéke is azonos. A tárgyhonlap megtekintése bejelentkezéshez kötött, de ha nem vetted fel a tárgyat, próbáld meg elkérni a tárgyfelelőstől az anyagot.
 
Mindenki aki felveszi a tárgyat, hozzáfér az ultimate jegyzethez, azaz az előadásanyaghoz ami a tárgy honlapján érhető el.  


==Számonkérések==
==Számonkérések==
174. sor: 134. sor:
=== Kis Házi ===
=== Kis Házi ===


Az előadó által meghatározott feladatot kell teljesíteni. (pl. írj egy std::shared_ptr implementációt) Ezt kiegészítve extra feladatokkal (melyeket szintén az előadó határoz meg), szorgalmi pontokat kapsz.  Vigyázz! Nagyon pontosan kell teljesítened a követelményeket, különben az előadó nem fogadja el és javítás után újra be kell adnod amíg nem fogadja el.
Az előadó által meghatározott feladatot kell teljesíteni. (pl. írj egy std::shared_ptr implementációt, készíts okos stringet referenciaszámlálással) Ezt kiegészítve extra feladatokkal (melyeket szintén az előadó határoz meg), szorgalmi pontokat kapsz.  Vigyázz! Nagyon pontosan kell teljesítened a követelményeket, különben az előadó nem fogadja el és javítás után újra be kell adnod amíg nem fogadja el.


=== Nagy Házi ===  
=== Nagy Házi ===  


Kitalálsz egy feladatot magadnak, elküldöd az előadónak, ha bólint rá, megírod C++11-ben.  
A második házira nem sok megkötés van. Egy listából lehet válogatni, de egyeztetés után egyéni feladatot is csinálhatsz. A lényeg, hogy használd a tananyagban lévő újításokat, azok felhasználásával készíts egy kis projektet.
 
(talán nem is jó a nagyházi kifejezés mivel, az elsővel ellentétben itt semmilyen szigorú elvárásnak nem kell megfelelnie)


== Linkek ==
== Linkek ==


*[https://cpp11.eet.bme.hu/ Tárgyoldal] - legfontosabb
*[http://www.cplusplus.com/reference/ C/C++ referencia] - ha nem lenne elektronikus, a félév alatt rojtosra lenne lapozva
*[http://www.cplusplus.com/reference/ C/C++ referencia] - ha nem lenne elektronikus, a félév alatt rojtosra lenne lapozva
*[https://www.google.hu Google] - <nowiki>"C++ <probléma kulcsszavai>" --> Stack Overflow találatok</nowiki>
*[https://www.google.hu Google] - <nowiki>"C++ <probléma kulcsszavai>" --> Stack Overflow találatok</nowiki>
197. sor: 154. sor:
=== Labor ===
=== Labor ===


Számítógép laborban leültök, csináljátok a feladatsort, mint szoftlabon. Óra elején jelenléti ív megy körbe. Ha elkésel, még aláírhatod. A feladatsort megoldani nem kötelező, de mivel nincs nagyon alternatíva ezért jobbára mindenki ezt csinálja. Ha kész lennél vele, előbb elmehetsz, bár ez leginkább lehetetlen.
Számítógép laborban leültök, csináljátok a feladatsort. Óra elején jelenléti ív megy körbe. Ha elkésel, még aláírhatod. A feladatsort megoldani nem kötelező, de mivel nincs nagyon alternatíva ezért jobbára mindenki ezt csinálja. Ha kész lennél vele, előbb elmehetsz, bár ez leginkább lehetetlen.


=== Szorgalmi feladatok ===  
=== Szorgalmi feladatok ===  


Év közben minden héten akár 2-3 szorgalmi feladat is befuthat az infoc oldalra gyanúsan hasonlító felületre. Itt leginkább meglévő STL függvényeket kell implementálni, valamilyen trükköt kell alkalmazni, a metaprogramming témakör után pedig egyszerűen csak [https://monoinfinito.wordpress.com/series/introduction-to-c-template-metaprogramming/ elszabadul a pokol].  
Év közben minden héten 1 vagy 2 szorgalmi feladat is befuthat az infoc oldalra gyanúsan hasonlító felületre. Itt leginkább meglévő STL függvényeket kell implementálni, valamilyen trükköt kell alkalmazni, a metaprogramming témakör után pedig egyszerűen csak [https://monoinfinito.wordpress.com/series/introduction-to-c-template-metaprogramming/ elszabadul a pokol]. A szorgalmikra nehézségtől függetlenül + fél pont jár. Az összes szorgalmi megoldásával akár 2 jeggyel is jobbat szerezhetsz.
 
==== Szorgalmi pontozás ====


Valamilyen ikonszerűségek vannak a feladat mellett. Körülbelül 10 pontot lehet összesen elérni, ez +2 jegy!!!
==Vélemények==
Tehát ha van kedved minden héten napokig hümmögni egy-egy komplikált feladaton, nagyon komoly előnyt jelent a szorgalmik elkészítése.  
* Nem egy nehéz tárgy, ha már van jártasságod a C++-ban, és érdekel is a téma. Az anyag érthető, a laborfeladatok nem nehezek. A ZH is könnyen kimaxolható. Ugyanakkor semmiképp nem ingyenkredit, heti készülést és gyakorlást igényel. A megszerzett tudás nagyon hasznos, számtalan dolog jóval egyszerűbb, mint a prog2-ből megtanult őskori technikák, ha a későbbiekben akarsz C++-szal foglalkozni, mindenképpen érdemes megtanulnod az újdonságokat. És Czirkos Zoltán tartja, kell más indok? [[Szerkesztő:Nagy Marcell|Nagy Marcell]] ([[Szerkesztővita:Nagy Marcell|vita]]) 2017. július 12., 15:40 (UTC)


[[Kategória:Valaszthato]]
[[Kategória:Valaszthato]]

A lap 2017. július 12., 17:40-kori változata

C11 és C++11 programozás
Tárgykód
VIEEAV01
Általános infók
Kredit
4
Tanszék
EET
Követelmények
Jelenlét
laboron igen, előadáson nem
Labor
van
KisZH
nincs
NagyZH
van
Házi feladat
van (2 db)
Vizsga
van
Elérhetőségek

A tárgy a C és C++ nyelv elmúlt 15-20 év alatt bekövetkezett változásait, újdonságait mutatja be, példátlanul alapos módon.

Követelmények

Előtanulmányi rend

A programozás alapjai II tárgyból kredit megszerzése szükséges a tárgy felvételéhez. - Alapos ismerete szükséges a tárgy magabiztos teljesítéséhez!

A szorgalmi időszakban

  • Az aláírás feltételei:
    • A laboralkalmak legalább 70%-án való részvétel. - a laborfeladat utólagos elküldésével és/vagy tárgyfelelőssel való megbeszélés után túl lehet lógni a 70%-on, de alapos indok kell
    • ZH sikeres (min. 50%) megírása.
    • 2 db házi sikeres elkészítése.
  • Megajánlott jegy: gyakorlatilag a ZH-ra (PZH-ra, PPZH-ra) megajánlott vizsgajegyet kapsz.
  • Pótlási lehetőségek:
    • A ZH-t utolsó héten lehet pótolni és van egy pót-pótlási lehetőség póthéten.

A vizsgaidőszakban

  • Vizsga: írásbeli. Tematikája megegyezik a ZH-val.

Félévvégi jegy

  • A jegyet a ZH pontszámára és a szorgalmi pontokra kapod a következő módon:
  • Ponthatárok:
P Jegy
0 - 19 1
20 - 24 2
25 - 29 3
30 - 34 4
35 - 5


Tematika

Részletes változat, hogy tudd, miről lesz szó és eszerint vedd fel a tárgyat - vagy sem.

  1. Bevezető és C99 nyelvi elemek
    • Típusok és osztályok
    • C99 jelölt inicializáló adattagok és összetett típusok literálisai
    • A C99 változó méretű tömbök (variable length array, VLA)
    • A C99 restrict kulcsszó
  2. Objektumok memóriaképe
    • Öröklés C-ben
    • A virtuális függvények
  3. Adattag pointerek
    • Perzisztencia
    • Iterálás az adattagokon
    • Reflektivitás C++-ban
  4. Osztályhierarchiák C++11-ben
    • Kifejezések, konstansok, változó
  5. Típusok használata
    • RAII = Resource Acquisition is Initialization
    • A koordinátarendszerek
  6. Változók élettartama
    • Szabad és kötött változók
    • A funarg problémák
    • Érték és pointer szemantika, okos pointerek
  7. Tároló osztályok
    • Hányféle new operátor van?
    • Az std::vector megvalósítása
    • Az iterátorok és az auto kulcsszó, „range-based for” ciklus
    • std::initializer_list
  8. Jobbérték referenciák
    • A sok felesleges másolás problémája, tulajdonos szemantika problémája
    • Balértékek és jobbértékek (lvalues and rvalues), mozgató konstruktorok
    • Az std::move() függvény használata
  9. Kivételek
    • A throw/catch vezérlési szerkezet
    • A konstruktordelegálás szerepe a kivételkezelésben, alap, erős, és noexcept garanciák
  10. Sablon metaprogramozás
    • Sablonok tárolóknál és algoritmusoknál, típusinformációs osztályok használata
    • SFINAE
  11. Paraméterlisták és -továbbítás
    • C++11 változó hosszúságú sablonparaméterlista
    • A C++11 új levezetési és összevonási szabályai
    • Az std::move() és az std::forward() függvények
  12. Lambda függvény
    • Függvények manipulációja: std::bind és std::ref
    • Lambda kifejezések, funarg problémák: a [] zárójelpár szerepe
    • std::function
  13. Többszálúság
    • thread, mutex és lock_guard osztályok közös használata
    • A holtpont, atomi típusok
    • std::condition_variable, std::async és std::future
  14. Nyelvi elemzők (alkalmi előadás)

Segédanyagok

A tárgyhonlapon elérhető részletes jegyzet. Ennek felépítése a prog1-es InfoC oldallal megegyező, a jegyzet mértéke is azonos. A tárgyhonlap megtekintése bejelentkezéshez kötött, de ha nem vetted fel a tárgyat, próbáld meg elkérni a tárgyfelelőstől az anyagot.

Számonkérések

Zárthelyi

Körülbelül ilyen struktúrával kell számolni:

  1. Első rész
    • Válaszolj röviden
    • Alkalmazd a C++11-ben tanult nyelvi elemeket (azaz írj át modernné egy pár soros C++98 kódot)
    • Igaz-Hamis
  2. Második rész
    • 2-3db fél A4-es oldalon átlagos betűkkel lekódolható program. pl. implementálni kell modern nyelvi eszközökkel egy tárolót, vagy fel kell tölteni megfelelő konstruktorokkal és másoló operátorral egy osztályt.
    • Lehet választani a két utolsó feladat közül. Ha mindkettőt megírod mindkettőre kaphatsz pontot.

Kis Házi

Az előadó által meghatározott feladatot kell teljesíteni. (pl. írj egy std::shared_ptr implementációt, készíts okos stringet referenciaszámlálással) Ezt kiegészítve extra feladatokkal (melyeket szintén az előadó határoz meg), szorgalmi pontokat kapsz. Vigyázz! Nagyon pontosan kell teljesítened a követelményeket, különben az előadó nem fogadja el és javítás után újra be kell adnod amíg nem fogadja el.

Nagy Házi

A második házira nem sok megkötés van. Egy listából lehet válogatni, de egyeztetés után egyéni feladatot is csinálhatsz. A lényeg, hogy használd a tananyagban lévő újításokat, azok felhasználásával készíts egy kis projektet.

Linkek

Tippek

Előadás

Egy előadáson kb. 30-an vagytok. Búg a projektor, az előadó előad, programozik a kivetítőn, rajzol a táblára. Barátságos a légkör, mindenki azt kérdez amit akar. És még jelenlét sincs. Megéri bemenni, de a tárgyoldal részletessége miatt szükség esetén akár teljesen ki lehet hagyni.

Labor

Számítógép laborban leültök, csináljátok a feladatsort. Óra elején jelenléti ív megy körbe. Ha elkésel, még aláírhatod. A feladatsort megoldani nem kötelező, de mivel nincs nagyon alternatíva ezért jobbára mindenki ezt csinálja. Ha kész lennél vele, előbb elmehetsz, bár ez leginkább lehetetlen.

Szorgalmi feladatok

Év közben minden héten 1 vagy 2 szorgalmi feladat is befuthat az infoc oldalra gyanúsan hasonlító felületre. Itt leginkább meglévő STL függvényeket kell implementálni, valamilyen trükköt kell alkalmazni, a metaprogramming témakör után pedig egyszerűen csak elszabadul a pokol. A szorgalmikra nehézségtől függetlenül + fél pont jár. Az összes szorgalmi megoldásával akár 2 jeggyel is jobbat szerezhetsz.

Vélemények

  • Nem egy nehéz tárgy, ha már van jártasságod a C++-ban, és érdekel is a téma. Az anyag érthető, a laborfeladatok nem nehezek. A ZH is könnyen kimaxolható. Ugyanakkor semmiképp nem ingyenkredit, heti készülést és gyakorlást igényel. A megszerzett tudás nagyon hasznos, számtalan dolog jóval egyszerűbb, mint a prog2-ből megtanult őskori technikák, ha a későbbiekben akarsz C++-szal foglalkozni, mindenképpen érdemes megtanulnod az újdonságokat. És Czirkos Zoltán tartja, kell más indok? Nagy Marcell (vita) 2017. július 12., 15:40 (UTC)