Přeskočit na hlavní obsah
Přeskočit hlavičku
Ukončeno v akademickém roce 2009/2010

Funkcionální a logické programování

Typ studia navazující magisterské
Jazyk výuky čeština
Kód 456-0310/01
Zkratka FLP
Název předmětu česky Funkcionální a logické programování
Název předmětu anglicky Functional and Logic Programming
Kreditů 6
Garantující katedra Katedra informatiky
Garant předmětu prof. RNDr. Marie Duží, CSc.

Osnova předmětu

Přednášky:
Deklarativní programovací jazyky, význam funkcionálního a logického programování.
Lambda kalkul, konverze výrazů, operátor pevného bodu, rekurzivní funkce.
Funkcionální reprezentace dat - logické hodnoty, n-tice, kolekce, čísla.
Datové typy jazyka Haskell, definice uživatelských datových typů, abstrakce.
Definice funkcí, použití vzorů a unifikace, líné vyhodnocování.
Práce se seznamy, využití rekurze, nekonečné seznamy.
Dokazování funkcionálních programů, strukturální indukce.
Imperativní prvky ve funkcionálních programech, monády, reprezentace stavu výpočtu, vstup a výstup, výjimky.
Aplikace funkcionálního programování - denotační sémantika programovacích jazyků.
Aplikace funkcionálního programování - analýza textu.
Principy logického programování - substituce, klauzule, rezoluce.
Datové typy v Prologu - seznamy, n-tice. Uživatelské datové typy, stromy.
Základní programovací techniky logického programování. Vyhledávání, řazení.
Metaprogramování, práce s klauzulemi.

Programování s omezeními - jazyky typu CLP.


Projekty:
Projekt 1: Vypracování řešení zadaného problému funkcionální metodou a jeho implementace v jazyce Haskell.
Projekt 2: Specifikace řešení zadaného problému ve formě klauzulí predikátové logiky a jeho implementace v jazyce Prolog.

Počítačové laboratoře:
V rámci cvičení u počítače budou předváděny praktické ukázky funkcionálních a logických programů a budou procvičovány příklady rozšiřující a doplňující informace z přednášek.
Porovnání imperativních a deklarativního programování
Lambda kalkul, konverze výrazů, operátor pevného bodu, rekurzivní funkce.
Funkcionální reprezentace dat - logické hodnoty, n-tice, kolekce, čísla.
Datové typy jazyka Haskell, definice uživatelských datových typů, abstrakce.
Definice funkcí, použití vzorů a unifikace, líné vyhodnocování.
Práce se seznamy, využití rekurze, nekonečné seznamy.
Příklady na seznamy a rekurzi
Imperativní prvky ve funkcionálních programech, monády, reprezentace stavu výpočtu, vstup a výstup, výjimky.
Aplikace funkcionálního programování - denotační sémantika programovacích jazyků.
Aplikace funkcionálního programování - analýza textu.
Principy logického programování - substituce, klauzule, rezoluce.
Datové typy v Prologu - seznamy, n-tice. Uživatelské datové typy, stromy.
Základní programovací techniky logického programování. Vyhledávání, řazení.
Programovací jazyk Prolog.

Rekurze v Prologu.
Metaprogramování, práce s klauzulemi.
Programování s omezeními - jazyky typu CLP.

Povinná literatura

Materiály k programovacímu jazyku Haskell na http://www.haskell.org
Materiály k programovacímu jazyku Prolog na
http://www.swi.psy.uva.nl/projects/SWI-Prolog/

Mária Bieliková, Pavol Návrat: Funkcionálne a logické programovanie. FEI STU Bratislava, 1997.

Doporučená literatura