Deklaratív programozás

VISZAD01  |  Mérnökinformatikus BSc  |  Félév: 7  |  Kredit: 5  |  Hivatalos tantárgyi adatlap

A tantárgy célkitűzése

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.

A tárgy oktatói

A tantárgy részletes tematikája

Az előadások részletes tematikája 

  • 1.hét: 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. 

  • 2. hét: 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, listajelölő. Iteráció és rekurzió, lineáris és elágazó rekurzió, jobbrekurzió, akkumulátorok. Modulok. 

  • 3. hét: 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. 

  • 4. hét: Funkcionális programozás: Magasabb rendű függvények, függvényértékek. Gyakori könyvtári függvények. Kivételkezelés. 

  • 5. hét: Funkcionális programozá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. 

  • 6. hét: Logikai programozás: Bevezetés példákon keresztül. A nyelv alapszintaxisa, adatstruktúrák. Listakezelés. 

  • 7. hét: 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. 

  • 8. hét: Logikai programozás: Operátorok. További vezérlési szerkezetek: diszjunkció, feltételes szerkezet, negáció.  

  • 9. hét: Logikai programozás: Jobbrekurzió, akkumulátorok. A keresési tér szűkítése. Determinizmus és indexelés. Vezérlési eljárások. 

  • 10. hét: Logikai programozás: Meta-logikai eljárások. Megoldásgyűjtő eljárások. Magasabb rendű eljárások. 

  • 11. hét: Deklaratív programozás: Korlát-alapú programozási módszerek. 

  • 12. hét: Deklaratív programozás: Szélességi és mélységi keresések. 

  • 13. hét: Deklaratív programozás: Megvalósítási módszerek. 

  • 14. hét: Deklaratív programozás: Összefoglalás és kitekintés. 


     A gyakorlatok részletes tematikája

  • 1. hét: A funkcionális programozás alapelvei és módszerei. 

  • 2. hét: Listakezelés funkcionális nyelven. 

  • 3. hét: Akkumulátorok, jobbrekurzió. 

  • 4. hét: Magasabb rendű függvények, lusta listák. 

  • 5. hét: Gyakorlás az 1. nagyzárthelyire. 

  • 6. hét: A logikai programozás alapelvei és módszerei. 

  • 7. hét: Listák kezelése logikai nyelven, többirányú végrehajtás. 

  • 8. hét: Diszjunktív szerkezetek programozása. 

  • 9. hét: Hatékonyságnövelő eszközök a logikai programozásban. 

  • 10. hét: Magasabb rendű és meta-logikai eljárások programozása. 

  • 11. hét: A korlátprogramozás eszközei logikai és funkcionális nyelveken. 

  • 12. hét: Szélességi és mélységi keresések programozása. 

  • 13. hét: Gyakorlás a 2. nagyzárthelyire. 

  • 14. hét: Kis házi feladatok megbeszélése.

  •