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

A VIK Wikiből
174. sor: 174. sor:
=== Kis Házi ===
=== Kis Házi ===


Az előadó által meghatározott feladatot kell teljesíteni. Ezt kiegészítve pluszfeladatokkal, szorgalmi pontokat kapsz. (pl. írj egy std::shared_ptr implementációt) Vigyázz! Nagyon pontosan kell teljesítened a követelményeket, különben az előadó nem fogadja el.  
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 ===  
=== Nagy Házi ===  

A lap 2015. május 20., 00:38-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
papíron létezik, nem szokott lenni
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 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. Mivel megajánlott jegyet kap mindenki 1-es fölött, és erre van 2 javítási lehetőség, gyakorlatilag nincs vizsga.
  • 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

Tárgyoldal - legfontosabb C/C++ referencia - ha nem lenne elektronikus, a félév alatt rojtosra lenne lapozva Google - "C++ <probléma kulcsszavai>" --> Stack Overflow Olvasásra: The C++ Programming Language (4th Edition)

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. A feladatsort megoldani nem kötelező, de mivel nincs nagyon alternatíva ezért jobbára mindenki ezt csinálja.

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ögnöd egy-egy komplikált feladaton, nagyon komoly előnyt jelent a szorgalmik elkészítése.