„C11 és C++11 programozás” változatai közötti eltérés
Nincs szerkesztési összefoglaló |
a Nem csak az infós prog2 jó hozzá, így kivettem a linket. |
||
25. sor: | 25. sor: | ||
=== Előtanulmányi rend === | === 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 === | === A szorgalmi időszakban === |
A lap 2017. július 12., 16:43-kori változata
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:
- 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.
- 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ó
- Objektumok memóriaképe
- Öröklés C-ben
- A virtuális függvények
- Adattag pointerek
- Perzisztencia
- Iterálás az adattagokon
- Reflektivitás C++-ban
- Osztályhierarchiák C++11-ben
- Kifejezések, konstansok, változó
- Típusok használata
- RAII = Resource Acquisition is Initialization
- A koordinátarendszerek
- Változók élettartama
- Szabad és kötött változók
- A funarg problémák
- Érték és pointer szemantika, okos pointerek
- 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
- 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
- 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
- Sablon metaprogramozás
- Sablonok tárolóknál és algoritmusoknál, típusinformációs osztályok használata
- SFINAE
- 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
- 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
- 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
- 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:
- 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
- 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
- C/C++ referencia - ha nem lenne elektronikus, a félév alatt rojtosra lenne lapozva
- Google - "C++ <probléma kulcsszavai>" --> Stack Overflow találatok
- 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. Ó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)