Kurzus nemzetközi vendég- és részidős hallgatóknak

Kar
Informatikai Kar
Szervezet
IK Programozási Nyelvek és Fordítóprogramok Tanszék
Kód
IP-18fIMPROGEG
Cím
Imperativ programozás Ea+Gy
Tervezett félév
Mindkét
Meghirdetve
2023/24/2
ECTS
5
Nyelv
en
Oktatás célja
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. 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. 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.
Tantárgy tartalma
Programozási nyelvek célja, szabályrendszere: lexika, szintaktika, szemantika. Forráskód és tárgykód. Fordítás, futtatás, interpretálás. Fordítási és futási hibák. Hibakeresés. Kifejezések felépítése, literálok, operátorok. Kifejezéskiértékelés, precedencia, asszociativitás, lustaság. Vezérlési szerkezetek, kivételkezelés. Strukturált programozás. Alaptípusok, rekordok, tömbök. Mutatók, referenciák. Procedurális programozás, alprogramok, paraméterátadás. Végrehajtási verem és dinamikus tárhely. Memória allokálása és felszabadítása, szemétgyûjtés. Hatókör, láthatóság, élettartam. Statikus és dinamikus szemantikai szabályok, típusellenõrzés. Számábrázolás, karakterkódolás. Assembly alapismeretek. Utasítások és vezérlési szerkezetek fordítása assembly nyelvre. A végrehajtási verem használata. A fordítóprogram mûködése, a gépi kód szerkezete.
Számonkérés és értékelés
A számonkérésmódja (koll. / gyj. / egyéb): gyj (összevont)
Irodalomjegyzék
• 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 • Kitlei Róbert: Assembly programozás, 2007. https://www.inf.elte.hu/dstore/document/269/assembly.pdf

Kurzus szakjai

Név (kód) Nyelv Szint Kötelező Tanév ...
Erasmus program keretében (IK-ERASMUS-NXXX) en Kötelező
programtervező informatikus - F (ELTE-K7473-S-N-10-ENG) en 6 Kötelező 1/3
Vissza