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

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
 
(5 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva)
11. sor: 11. sor:
 
| labor = van
 
| labor = van
 
| kiszh = nincs
 
| kiszh = nincs
| nagyzh = van
+
| nagyzh = nincs
| hf = van (kicsi + nagy)
+
| hf = van (2 db)
| vizsga = papíron létezik, nem szokott lenni
+
| vizsga = van
 
| levlista =  
 
| levlista =  
 
| tad = https://portal.vik.bme.hu/kepzes/targyak/VIEEAV01/
 
| tad = https://portal.vik.bme.hu/kepzes/targyak/VIEEAV01/
25. sor: 25. sor:
 
=== Előtanulmányi rend ===
 
=== Előtanulmányi rend ===
  
[[A programozás alapjai II.|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 programozás alapjai 2 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 ===
 
=== A szorgalmi időszakban ===
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.
*'''Megajánlott jegy:''' gyakorlatilag a ZH-ra megajánlott vizsgajegyet kapsz.
+
**'''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:'''
 
*'''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 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 ===
 
===A vizsgaidőszakban ===
*'''Vizsga''': írásbeli. Mivel megajánlott jegyet kap mindenki 1-es fölött, és erre van 2 javítási lehetőség, gyakorlatilag nincs vizsga.
+
*'''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.
+
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 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 jelenlegi, 2018. szeptember 4., 18:23-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
nincs
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 2 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:
[math]P=P_{ZH} + P_{szorgalmi}[/math]
  • 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)