Programozás 3 - 2020/2021 I. félév
A 2022/2023-as tanév I. félévére vonatkozó aktualizált információk megfeleleő számú jelentkező esetén kerülnek fel ide, de nem lesznek annyira különbözőek a mostanitól
Tárgyismertető
A Programozás és Programozás 2 tárgyakban a hallgatók megismerkedtek a C++ nyelv alapjaival és egyszerűbb C++ programok írásával. A Programozás 3 tárgy ezekre az alapokra épít de egy speciális területtel foglalkozik, amelynek támái:
- Grafikus felhasználói felületek és
- 2D számítógépes grafika
- mobil eszközökre és asztali számítógépekre
- C++ nyelven
- a Qt eszköz és operációs rendszer (Windows OSX, iOS, Linux) független keretprogram rendszer felhasználásával.
A tárgy megismerteti a hallgatókat a hagyományos és az eseményvezérelt programozás közti különbségekkel, a Qt rendszerrel, a grafikus felhasználói felületeket (GUI) készítésével, illetve kétdimenziós egyszerűbb grafikai és képfeldolgozó feladatokat megoldani, továbbá átfogó képük lesz a számítógépes grafikáról.
Tanrendi elfoglaltság: Minden héten 1 ó. Előadás, 1 ó. Labor
Az egyes előadásokhoz segédanyagok is készülnek. Azokat szintén innen lehet letölteni.
Az előadások és gyakorlatok egységesen keverten kerülnek leadásra. Az órákon tárgyalt programokat az előadóval együtt készíti el a hallgatóság.
Követelmények
Az órákon mindenki a saját számítógépével vesz részt. Az előadás során Windows 10-et és azon
Visual Studio 2019-et fogok használni, kivéve, ha a hallgatóság többsége QT Creator-t, illetve
Linux-ot akar használni, mert akkor én is azt fogok.
Ezeken a rendszereken - ha szükséges - a fordítóprogram és a QT telepítését is az órán végezzük el.
Az a hallgató aki számítógépének operációs rendszere nem Windows vagy Linux, hanem pl. OS-X, Android vagy iOS, annak magának kell gondoskodnia a következők teljesüléséről:
- a hallgató tudja a rendszert használni
- egy legalább C++ 11-et ismerő fordító program legyen rajta vagy a hallgató képes legyen önállóan feltelepíteni azt,
- a Qt telepítve legyen, vagy a hallgató képes legyen önállóan feltelepíteni azt.
A Qt rendszer Windows-on, illetve Linux-on történő telepítéséhez segítség ebben a dokumentumban található.
Jelenléti követelmény: A 14 gyakorlat és előadás közül 9-en kötelező részt venni (64.3%).
A félévközi jegy megszerzése: A jegy kiszámítása a következő:
N1,N2 a nagy ZH pontjai. Mindkét nagy ZH 50 pontos lehet, 20 pont alatt elégtelen.
K a 7 legtöbb pontot elért minimum 2 pontos kis ZH-k pntjainak összege, max 35 pont
B a bónusz pontok száma: maximum 10 bónusz pont szerezhető. A bónusz pontok az órai szereplésért járnak. Az 5-ös jegy elérhető bónuszpontok nélkül is.
Pont | Jegy |
---|---|
0..40 | 1 |
41..55 | 2 |
56..75 | 3 |
76..90 | 4 |
90.. | 5 |
Tematika
-
A fejlesztőrendszer és a QT telepítése és használata (a linkek új ablakban nyílnak meg)
- a Visual Studio telepítése:
- Windows-on kényelmesebb a Visual Studio használata a QtCreator helyett (telepítő rendszer) és használata
- Windows-on és Linux-on
- a QT telepítése (telepítő rendszer)
-
Játsszunk! 1. rész
Tetris - Egy egyszerű játékprogram a hagyományos módon ciklusokkal.Nulláról indulva a két óra alatt megírjuk, és leteszteljük a programot, ami a Windows-os parancssorban fut.
(A program az üres és megjegyzés sorok nélkül csak kb 200 sor!
A Linuxos parancssorban futó verzióval csak akkor foglalkozunk, ha a hallgatók többsége Windows helyett Linuxot használ.)
Az alábbiakat érinjük:- Egy játékprogram általános felépítése
- Időzítések
- felhasználói inputok lekezelése
- A parancssor programozása (Windows és feltételesen - Linux)
-
Játsszunk! 2. rész
Tetris - Egy egyszerű játékprogram eseményvezérelten, QT-vel.
- QT alapok. QT projekt és makefájlok. qmake és make
- Jelek és ékezetes betük problémája (lokalizáció, UNICODE)
- Az eseményorientált programozás alapjai.
- Események, és üzenetek (SIGNALok és SLOTok.)
-
Játsszunk! 3. rész
Tetris - Egy egyszerű játékprogram eseményvezérelten, QT-vel.
- QT designer használata.
- A QLabel osztály
- A moc és az ilc.
-
Fontos, nem grafikus Qt osztályok és használatuk
- QVector, QMap, QMultiMap, QChar, QByteArray, QString, QStringList, QMap,
- QVector, QMap, QMultiMap, QChar, QByteArray, QString, QStringList, QMap,
- QFile, QDataStream, QTextSream. I/O, "vastag" és "keskeny" végű adatok.
- >(Big and Little Endian data).
- Objektumok hierarhiája. Dinamikus memória kezelés Qt alatt.
- Objektumok azonosítása.
-
GUI-k és fontos, grafikus Qt osztályok
- QML és QT
- QColor
- GUI elemek. Widget-ek. frame-ek, cimkék (HTML),
- SIGNAL-ok és SLOT-ok (kvázi) autmatikus definiálása
- QGroupBox, QScrollArea, QToolBox, QTabWidget, QStackWidget,
- QListWidget, QTreeWidget, QTableWidget
- gombok (nyomó-, eszköz-, rádió-),
- jelölőnégyzet, beviteli mezők (sor-, szöveg-, egyszerű szöveg-),
- Elemek elrendezései (layout).
-
A Modell / Nézet (Model / View) osztályok és programozásukQListView, QTreeView, QTableView. Példa: "adatbázis" megjelenítése.
- I. nagy ZH
-
2D grafika QT-vel 1. rész
- QPicture, QImage és QBitmap
- QPainter
- QPen, QBrush
- vonalak és alakzatok
-
2D grafika QT-vel 2. rész
- görbék megjelenítése
- színezés
- interaktivitás
-
2D grafika QT-vel 3. rész
- függvényábrázolás
- Saját widgetek használata a QT Creator-ban.
- A QCustomplot csomag
-
Képfeldolgozás
- 2D képek, képalkotás
- Felbontás, színmélység, bitmélyság
- Az RGB, HSL CYMK és LAB modellek
- alfa csatorna
- Nagyítás, kicsinyítés
- forgatás és torzítás
- Digitális fényképezés. RAW formátum, Bayer és Foveon szenzorok, zaj
-
Műveeletek képekkel
- Képek kombinálása (blending)
- Szűrők: élesítés, zajcsökkentés, élkeresés
- Fényerő és kontraszt
- színhőmérséklet
- II. nagy ZH