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

A VIK Wikiből
Nincs szerkesztési összefoglaló
13. sor: 13. sor:
| nagyzh = van
| nagyzh = van
| hf = van (kicsi + nagy)
| hf = van (kicsi + nagy)
| 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/
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.
*'''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.
*Előfeltétele: az aláírás megléte.



A lap 2015. május 25., 20:24-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 (kicsi + nagy)
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.
  • 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.
  • Előfeltétele: az aláírás megléte.

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

Ütemterv

Természetesen az ütemterv változhat, ez csak egy időbeosztást könnyítő táblázat.

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

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

Hivatalos egyetemi jegyzetek

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

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) 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

Kitalálsz egy feladatot magadnak, elküldöd az előadónak, ha bólint rá, megírod C++11-ben.

(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

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

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.

Szorgalmi pontozás

Valamilyen ikonszerűségek vannak a feladat mellett. Körülbelül 10 pontot lehet összesen elérni, ez +2 jegy!!! 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.