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
Marussy Kristóf
adjunktus
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.
BME-MIT