Programozás 3 - 2020/2021 I. félév

Utolsó változtatás  2022 aug. 26.

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év folyamán 2 nagy ZH és max 13 óra eleji 5 perces kis ZH kerül megíratásra. A kis ZH-k egy-egy, az előző órák anyagából vett programozási kérdésből állnak.
A félévközi jegy megszerzése: A jegy kiszámítása a következő:

x = (N1 + N2 + K + B - 40) / 1,35

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.


Ponthatárok
PontJegy
0..401
41..552
56..753
76..904
90..5

Tematika

  1. 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)
  2. 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)
  3. 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.)
  4. 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.
  5. 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.
  6. 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).
  7. A Modell / Nézet (Model / View) osztályok és programozásuk
    QListView, QTreeView, QTableView. Példa: "adatbázis" megjelenítése.
  8. I. nagy ZH
  9. 2D grafika QT-vel 1. rész
    • QPicture, QImage és QBitmap
    • QPainter
    • QPen, QBrush
    • vonalak és alakzatok
  10. 2D grafika QT-vel 2. rész
    • görbék megjelenítése
    • színezés
    • interaktivitás
  11. 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
  12. 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
  13. 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
  14. II. nagy ZH

Segédanyagok