C11 és C++11 programozás

A VIK Wikiből
A lap korábbi változatát látod, amilyen Márta Boldizsár (vitalap | szerkesztései) 2018. szeptember 4., 18:23-kor történt szerkesztése után volt.
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez
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)