Deklaratív Programozás Záróvizsgakérdések 2004/2005-ben 2004. december 11. SzP/HP ------------------------------------------------------------------ PL-jegyzet: Szeredi Péter, Benkő Tamás: Deklaratív programozás. Bevezetés a logikai programozásba. Oktatási segédlet, 2004. Letölthető: http://dp.iit.bme.hu/prolog/jegyzet/dp04s_jegyzet.ps.gz http://dp.iit.bme.hu/prolog/jegyzet/dp04s_jegyzet.pdf.gz SML-jegyzet: Hanák D. Péter: Deklaratív programozás. Bevezetés a funkcionális programozásba. Oktatási segédlet, 2001. Letölthető: http://dp.iit.bme.hu/sml/fp-sml-p1.ps.gz http://dp.iit.bme.hu/sml/fp-sml-p1.pdf.gz ------------------------------------------------------------------ Az alábbi kérdésekkel lefedett témák képezik a záróvizsga alapját. A szóbeli záróvizsgán a vizsgázónak az egyik nyelvből egy A típusú, a másik nyelvből egy B típusú kérdést kell megválaszolnia. Az irásbeli záróvizsgán az összes kérdés által lefedett anyagból teszünk fel egy összetett, a Prolog és SML nyelveket egyaránt érintő kérdést (a korábbi évek irásbelivizsga-kérdéseit lásd a honlapon: ). A záróvizsgán (irásbelin és szóbelin egyaránt) a tárgy jegyzetei, egyéb segédanyagok nem használhatók. A. kérdések: A01. A Prolog vezérlési szerkezete A02. A Prolog adatszerkezetei, egyesítési algoritmus A03. Listakezelő eljárások Prologban A04. A Prolog operátor-fogalma és alkalmazásai A05. Vezérlési eljárások Prologban, a vágó eljárás A06. Meta-eljárások Prologban: adatbázis-kezelés, kifejezés-kezelés A07. Nyelvtani elemzés Prologban (DCG nyelvtanok) A08. A funkcionális programozás jellemzői, kifejezések kiértékelése az SML-ben (ld. 2001. évi jegyzet 1.3.-1.6., 2.1., 2.2.4.1.-2.2.4.2. és 9.1. szakasza, továbbá 4. és 5. fejezete) A09. Típusok, típusoperátorok és típusváltozók, típuslevezetés, type és datatype deklaráció az SML-ben (ld. 2001. évi jegyzet 2.2. és 6.1 szakasza, továbbá 8. fejezete) A10. Párok, ennesek, rekordok, listák, fák az SML-ben (ld. 2001. évi jegyzet 3., 6., 12. és 13. fejezete) A11. Minták, mintaillesztés az SML-ben (ld. 2001. évi jegyzet 2.2. szakasza, továbbá 3. és 8. fejezete) A12. Magasabbrendű és részlegesen alkalmazható függvények az SML-ben (ld. 2001. évi 9. és 10. fejezet) A13. Polimorfizmus (többszörös terhelés, paraméteres polimorfizmus) és kivételkezelés az SML-ben (ld. 2001. évi jegyzet 2.2., 6.2. és 8.3. szakasza, továbbá 7. és 11. fejezete) A14. Lusta listák megvalósítása az SML-ben (ld. 2001. évi jegyzet 15.1.-15.3. szakasza) ------------------------------------------------------------------ B. kérdések: B01. A Prolog 4 kapus nyomkövetési modellje B02. Jobbrekurzió, akkumulátorok Prologban B03. Determinizmus és indexelés Prologban B04. Egyenlőségvizsgáló beépített eljárások Prologban B05. Listák megfordítása Prologban: naív és hatékony megoldás B06. Gráfok ábrázolása Prologban B07. Összes megoldás keresése Prologban B08. Könyvtári függvények az SML-ben: String.tokens, String.fields, @, List.rev, List.map, List.filter, List.foldl, List.foldr, List.partition B09. Listák rendezése SML-ben: beszúró rendezés, gyorsrendezés, összefésülő rendezés, simarendezés B10. Bináris fák megvalósítása SML-ben: elem keresése, beszúrása, törlése; listából bináris fa, bináris fából lista előállítása; bináris fa mélysége, leveleinek és éleinek száma, leghosszabb út meghatározása stb. B11. Iteratív függvények SML-ben: jobbrekurzió, gyűjtőargumentum. B12. Halmazműveletek megvalósítása SML-ben: eleme, unió, metszet, különbség, hatványhalmaz, listából halmaz előállítása stb. B13. Kivételkezelés az SML-ben: exception, raise, handle, az exn típus. B14. Lokális és egyidejű deklarációk az SML-ben: let, local, and; láthatóság és hatáskör.