Imperatív programozás
A tárgy a Programtervező informatikus alapszakos hallgatóknak van meghirdetve az őszi félévekben. (A rendelkezésre álló erőforrások függvényében igyekszünk keresztféléves indulást is biztosítani.)
Sillabusz
A tárgy célja, hogy programozási nyelvekkel kapcsolatos fogalmakkal ismertesse meg a hallgatókat, melyek alapján a hallgatók a programozás során képesek lesznek tudatosan választani a nyelvi eszközök közül. A tárgyalt ismeretkör az imperatív, a procedurális és (kisebb részben) a moduláris programozási paradigmát fedi le, alapot teremtve későbbi, az objektum-orientált és konkurens programozási paradigmákat tárgyaló kurzusoknak. A tárgy utal a vele egy időben tartott Funkcionális programozás kurzusra is (és viszont). A tárgy szoros kapcsolatban áll a vele egy időben tartott Programozás, illetve (kisebb mértékben) a Számítógépes rendszerek kurzusokkal. Jelen tárgynak nem célja, hogy a hallgatókat programozni tanítsa – ez a Programozás kurzus feladata –, de természetesen hozzájárul a hallgatók programozási készségeinek fejlődéséhez.
Az előadásokon és a gyakorlatokon kötelező részt venni. A géptermi gyakorlatok a gyakorlatvezetővel segített önálló munkát tűzik ki célul. A félév során sem a gyakorlatokon, sem a géptermi zárthelyiken nem használunk integrált fejlesztői környezetet, csak programozói szövegszerkesztőket (pl. geany, notepad++, gedit, (g)vim, emacs) és parancssoros fordítást/futtatást. Ennek az a célja, hogy így a hallgatók megértik az eszközök működési elvét, tudatos eszközhasználókká válnak, és a későbbiekben az IDE-eszközök konfigurálására is képesek lesznek. A gyakorlatokon ösztönözzük a hallgatókat, hogy többféle operációs rendszeren (Windows, Linux) elsajátítsák a programkód megírásának, lefordításának és futtatásának technikáját.
Tematika
Az alábbi témaköröket C nyelven tekintjük át. (A 3 kiemelt csoport Python nyelvet is tanul.)
- Programozási paradigmák és nyelvek, történelem (opcionális).
- Programozási nyelv célja (ember-gép és ember-ember kommunikáció) és hatása a programok minőségére, a szoftverfejlesztési folyamat minőségére.
- Programozási nyelv szabályrendszere: lexika, szintaxis, szemantika. Pragmatika.
- Programok felépítése: kifejezések, utasítások, alprogramok, modulok.
- Forráskód, tárgykód. Előfeldolgozás, fordítás, szerkesztés, futtatás. Interpretálás, REPL.
- C-preprocesszor, makrók.
- Fordítási egységek, függőségek, külön fordítás. Moduláris programozás.
- Kifejezések és kiértékelésük
- lexikális elemek: literálok, azonosítók, operátorok, zárójelek stb.
- szintaktika: arítás, fixitás;
- szemantika: precedencia, bal- és jobbasszociativitás, lustaság/mohóság, mellékhatás, operandusok kiértékelési sorrendje, szekvenciapont.
- Utasítások és vezérlési szerkezetek
- változódeklarációk
- kifejezés-utasítás
- értékadás
- elágazások
- ciklusok
- nem strukturált: break, continue, return, goto
- Deklarációk: hatókör, láthatóság. Változók élettartama.
- Alprogramok
- programok strukturálása
- végrehajtási verem, lokális változók automatikus tárolása
- paraméterátadás
- érték és cím szerinti paraméterátadás
- érték-eredmény-szerinti paraméterátadás (opcionális)
- paraméterek alapértelmezett értéke
- globális változók, static local változók
- blokkszerkezetes nyelv.
- Típusok
- alaptípusok és ábrázolásuk
- automatikus és explicit típuskonverziók
- tömbök
- listák, rendezett n-esek (opcionális)
- rekordok / struktúrák
- unionok (opcionális)
- mutatók.
- Dinamikus memória kezelése. Élettartam.
- Szemétgyűjtés (opcionális).
- Láncolt adatszerkezetek, sekély és mély másolás/összehasonlítás.
- Pointer aritmetika. Tömbök és pointerek kapcsolata C-ben.
- Input-output, printf/scanf, szövegfájlok feldolgozása.
Irodalom
- Kozsik Tamás (és mások): Imperatív programozás. Jegyzetek az előadáshoz, 2018. Elérhető (meghívás után) a canvasben.
- Porkoláb Zoltán: Imperatív programozás. Jegyzetek az előadáshoz, 2018. http://gsd.web.elte.hu/imper/
- Kernighan – Ritchie: A C programozási nyelv, Műszaki Könyvkiadó. ISBN 9631605523
- Bjarne Stroustrup: A C++ programozási nyelv, Kiskapu Kiadó, 2001. ISBN: 9789639301191
- Mark Summerfield: Python 3 programozás. Kiskapu Kiadó, 2009. ISBN: 978 963 963 7641
- C reference (zárthelyin is használható).
- Python 3.7.4 Documentation