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

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.