K-INFO
HU
EN
Belépés

Deklaratív programozás

Declarative Programming
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
Tantárgy neve (magyarul, angolul)
Deklaratív programozás
Declarative Programming
Tantárgykód BMEVISZAD00
Tantárgyjelleg
Képzési szint
Kurzustípusok és óraszámok (heti/féléves)
Kurzustípus elmélet gyakorlat laboratóriumi gyakorlat
óraszám (heti) 2 1 0
jelleg (kapcsolt/önálló) kapcsolt
Tanulmányi teljesítmény/értékelés típusa félévközi érdemjegy
Tantárgy kreditértéke 3
Tantárgyfelelős
Dr. Szeredi Péter
Tantárgyat gondozó oktatási szervezeti egység
Számítástudományi és Információelméleti Tanszék
Kar Villamosmérnöki és Informatikai Kar
Tantárgy weboldala https://dp.iit.bme.hu
Tantárgy elsődleges mintatantervi jellege
Közvetlen előkövetelmények – Erős előkövetelmény nincs
Közvetlen előkövetelmények – Gyenge előkövetelmény nincs
Közvetlen előkövetelmények – Párhuzamos előkövetelmény nincs
Közvetlen előkövetelmények – Mérföldkő előkövetelmény nincs
Közvetlen előkövetelmények – Kizáró feltétel nincs

Célkitűzés

Tantárgyprogram

·       1. hét:

(4 óra előadás – bevezetés és funkcionális programozás): Követelmények, szakirodalom, honlap. Motivációs példa logikai és funkcionális nyelven. A deklaratív programozás fő jellemzői: függvények, ill. eljárások, nem frissíthető változók, akkumulátorok, rekurzív algoritmusok és adatstruktúrák, jobbrekurzió, magasabb rendű függvények, ill. eljárások.

Funkcionális programozás: Programozási környezetek. Típusok, műveletek, változók, kifejezések. Szintaxis. Kifejezések mohó és lusta kiértékelése. Listák, listanézet. Iteráció és rekurzió, lineáris és elágazó rekurzió, jobbrekurzió, akkumulátorok. Modulok.

·       2. hét:

(2 óra gyakorlat): Programozás funkcionális nyelven.

(2 óra előadás – funkcionális programozás):  Beépített függvények. Összetett kifejezések. Listák és ennesek. Mintaillesztés. Típusspecifikáció. Modulokról bővebben.

·       3. hét:

(4 óra előadás – funkcionális programozás): Magasabb rendű függvények, függvényértékek. Gyakori könyvtári függvények. Kivételkezelés.

Összetett adatszerkezetek és kezelésük: listák, halmazok, gráfok. Kulcs-érték párok, bináris fák. Lineáris és elágazó rekurzió újra. Programhelyesség igazolása. Lusta kiértékelés, lusta lista.

·       4. hét:

(2 óra gyakorlat): Programozás funkcionális nyelven, felkészítés a zárthelyire.

(2 óra előadás – logikai programozás): Bevezetés példákon keresztül. A nyelv alapszintaxisa, adatstruktúrák. Listakezelés.

·       5. hét:

(2 óra gyakorlat): Programozás logikai nyelven.

(2 óra előadás – logikai programozás): A végrehajtási algoritmus. Redukciós lépés, egyesítés, keresési tér. A nyomkövetés dobozmodellje.

·       6. hét:

(4 óra előadás – logikai programozás): Operátorok. További vezérlési szerkezetek: diszjunkció, feltételes szerkezet, negáció. Jobbrekurzió, akkumulátorok. A keresési tér szűkítése. Determinizmus és indexelés. Vezérlési eljárások.

·       7. hét:

(2 óra gyakorlat): Programozás logikai nyelven.

(2 óra előadás – logikai programozás): Meta-logikai eljárások. Megoldásgyűjtő eljárások. Magasabb rendű eljárások.

·       8. hét:

(4 óra előadás – deklaratív programozás): Korlát-alapú programozási módszerek.

·       9. hét:

(2 óra gyakorlat): Programozás funkcionális és logikai nyelven.

(2 óra előadás – deklaratív programozás): Szélességi és mélységi keresések.

·       10. hét:

(2 óra gyakorlat): Programozás funkcionális és logikai nyelven.

(2 óra előadás – deklaratív programozás): Összefoglalás és kitekintés.

·       11. hét:

(2 óra gyakorlat): Programozás funkcionális és logikai nyelven, felkészítés a zárthelyire.

A deklaratív – más néven nonimperatív – programozási paradigma megismertetése, a két fő irányzat – a funkcionális és a logikai programozás – bemutatása, valamint gyakoroltatása kis-közepes feladatok megoldásával.    

Tanulmányi eredmények

Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:

Tudás

Nincsenek rögzített tanulási eredmények.

Képességek

Nincsenek rögzített tanulási eredmények.

Attitűd

Nincsenek rögzített tanulási eredmények.

Autonómia és felelősség

Nincsenek rögzített tanulási eredmények.

Oktatási módszertan

14*2 óra előadás és 7*2 óra gyakorlat a félév első 11 hetében.

Tanulástámogató anyagok

Online források
Szeredi Péter, Benkő Tamás: Deklaratív programozás. Oktatási segédlet.; Bevezetés a logikai programozásba. Számítástudományi és Információelméleti; Tanszék, Budapest, 2005. Letölthető a tárgy honlapjáról.; Ajánlott; irodalom:; a. Erlang on-line; documentation http://erlang.org/doc.html; b. Erlang Programming. Wiki Books. http://en.wikibooks.org/wiki/Erlang_Programming; c. Fred Hébert: Learn you some Erlang.; https://learnyousomeerlang.com/; d. Erlang Tutorial. https://www.tutorialspoint.com/erlang; e. Elixir. https://elixir-lang.org/; f. Elixir Tutorial. https://www.tutorialspoint.com/elixir; g. An Introduction to Elm. https://guide.elm-lang.org/; h. Beginning Elm. https://elmprogramming.com/; i. Elm Tutorial. ttps://www.tutorialspoint.com/elm/; j. Farkas Zsuzsa, Futó Iván,; Langer Tamás, Szeredi Péter: MProlog programozási nyelv. Műszaki; Könyvkiadó, Budapest, 1989.; k. Márkusz Zsuzsa: Prologban programozni; könnyű. Novotrade, Budapest, 1988.; l. Richard A. O'Keefe: The Craft of Prolog.; MIT Press, 1990. ISBN 0-262-15039-5; m. Leon Sterling, Ehud Shapiro: The Art of; Prolog. Advanced Programming Techniques, 2nd Edition, MIT Press,; 1994, ISBN 0-262-19338-8; n. Peter Flach: Logikai Programozás. Az; intelligens következtetés példákon keresztül. Panem-John Wiley & Sons, 2001; o. Ulf Nilsson and Jan Maluszynski: Logic, Programming and Prolog (2nd; ed.). Previously published by John Wiley & Sons Ltd. http://www.ida.liu.se/%7Eulfni/lpp/;  

A tantárgy teljesítéséhez ajánlott előzetes ismeretek

Tudás típusú kompetenciák
(azon előzetes ismeretek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
Programozás, programozási technológia, matematikai logika
Képesség típusú kompetenciák
(azon előzetes képességek és készségek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
nincs
Ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák
(azon ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák összessége, amelyek jelentősen hozzájárulnak a tantárgy eredményes teljesítéséhez)
Programozás, programozási technológia, matematikai logika
Általános szabályok
Követelmények:   a) Zárthelyi dolgozatok értékelése és elfogadása A félév során két zárthelyi dolgozatot iratunk, elfogadásukhoz a pontszám legalább 40%-át kell megszerezni. Pótlás vagy javítás esetén az utolsó zárthelyi eredménye lesz érvényes. b) Kis házi feladatok  A félév során több alkalommal adunk ki kis házi feladatként programozási feladatokat. A beadás módját a tárgy honlapján közzéteendő feladatkiírás részletezi. A kis házi feladatokra vonatkozó követelmény teljesítéséhez az szükséges, hogy a beadható programok legalább 2/3-a lefusson mindkét programozási nyelven a tesztesetek 100%-os teljesítésével. c) Nagy házi feladatok, megajánlott jegy A nagy házi feladatok megoldása nem kötelező, azonban a féléves osztályzatba beszámít az eredményük, és a beadásukkal megajánlott jegy is szerezhető. A programokat, valamint a dokumentációkat elektronikus úton kell beadni az ütemtervben előírt oktatási héten. A beadás módját a tárgy honlapján közzéteendő feladatkiírás részletezi. A beadott megoldásokkal kapcsolatban a hallgató kérdéseket fog kapni (ez a nagy házi feladat megvédése, az önálló munkavégzés igazolása). A tesztesetek legalább 80%-át megoldó programokat további bonyolultabb, nagyobb méretű tesztesetekkel futtatjuk az ún. létraversenyben. A létraverseny eredményétől függ a megajánlott jegy (lásd alább). d) A féléves osztályzat megállapítása A féléves osztályzatban a zárthelyikre kapott pontszámot 85%-os, a nagy házi feladatra kapott pontszámot 15%-os súllyal vesszük figyelembe. A kis házi feladatok megoldására kapott és a létraversenyen szerzett pontszám az összpontszámot javítja, tehát ezekkel együtt az összpontszám 100%-nál nagyobb is lehet.  Az egyes osztályzatok alsó határai az összpontszám százalékában: elégséges – 40%, közepes – 55%, jó – 70%, jeles – 85%. Jó (4) megajánlott jegyet kaphat az, aki a kis házi feladatokra vonatkozó követelményeket teljesíti, mindkét programozási nyelven beadja a nagy házi feladat megoldását, ezeket megfelelően dokumentálja, a programjai bejutnak a létraversenybe és a nagy házi feladatot sikeresen megvédi. Jeles (5) megajánlott jegyet kaphat az, akinek mindkét programja megoldja a létraverseny teszteseteinek legalább 40%-át. A megajánlott jegy elfogadása esetén a zárthelyit nem kell megírni, az esetleg megírt zárthelyi eredményét nem vesszük figyelembe. e) Meg nem engedett eszközök alkalmazása  A kis és nagy házi feladatokat minden hallgatónak önállóan, egyénileg kell megoldania, másoktól ötleteken kívül egyebet – pl. teljes kódot vagy akár csak kódrészletet – nem vehet át. A programok szerkezeti hasonlóságát automatikus eszközökkel is vizsgálhatjuk. Mástól származó program vagy programrészlet átvétele/átadása és beadása esetén az összes kis és nagy házi feladatot érvénytelennek tekintjük. A zárthelyin a meg nem engedett eszközöket használókat az érvényes kari, ill. egyetemi rendelkezések szerint büntetjük. Egyéb kérdésekben a TVSz rendelkezései az irányadók. Pótlási lehetőségek: A házi feladatokat nem lehet pótolni. A zárthelyik pótlására, illetve javítására két alkalommal lesz lehetőség. Ezen alkalmakkor is a zárthelyiken elvárt tananyagot kell tudni. 
Teljesítményértékelési módszerek
Szorgalmi időszakban végzett teljesítményértékelések részletes leírása

Nincs megadva részletes értékelés.

Szorgalmi időszakban végzett teljesítményértékelések részaránya

Nincs megadva részarány.

Vizsgaidőszakban végzett teljesítményértékelések részletes leírása

Nincs megadva részletes értékelés.

Vizsgarészek részaránya

Nincs megadva részarány.

Érdemjegy megállapítása

Nincs megadva érdemjegy határ.

Jelenléti és részvételi követelmények

Nincs megadva jelenléti követelmény.

Javítás, ismétlés és pótlás különös szabályai

Nincs megadva.

Rövid leírás

Nincs megadva.

Részletes leírás
IMSc program: Az IMSc program hallgatói számára a gyakorlatokon emelt szintű fakultatív programozási feladatokat kínálunk, valamint – részben ezen feladatokhoz kapcsolódó – önállóan tanulmányozandó irodalmat teszünk elérhetővé, fakultatív konzultációs lehetőség biztosításával.   IMSc pontok: A tantárgyból kétféle módon szerezhető IMSc pont:    a zárthelyi során pluszfeladat megoldásával (maximum 10 pont), a létraversenyen a megajánlott jeles érdemjegyhez szükséges 40%-os teljesítés felett, minden további 10% teljesítéséért mindkét fő nyelv esetén 1 – 1 pont (összesen maximum 12 pont). A hallgató a fenti módokon szerzett pontok összegét, de legfeljebb 15 IMSc pontot kap. Az IMSc pontok gyűjtése teljesen független a tantárgyban szerezhető zárthelyi és házi feladat pontoktól. Ezen pontok megszerzése és a fakultatív feladatok megoldása nélkül is jeles szinten teljesíthetők a tantárgy követelményei. Az IMSc pontok megszerzése az IMSc programban nem résztvevő hallgatók számára is lehetséges.
Ajánlott tantárgyak

Nincs megadva.

A tantárgy elvégzéséhez szükséges tanulmányi munka

Nincs megadva munkaidő bontás.

Tantárgykövetelmények hatályossága
Tantárgykövetelmények hatályosságának kezdete:
Tantárgykövetelmények hatályosságának vége:
Tantervi elhelyezés

Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.