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.
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.