Deklaratív programozás
VISZAD00 | Mérnökinformatikus BSc | Félév: 7 | Kredit: 3 | 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
· 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.
BME-MIT