Cvičení z Neprocedurálního programování

Termín

St 12:20 S10

Plán cvičení

Na cvičeních se budu snažit dávat zajímavé příklady a zaměřit se na problémové oblasti jazyků. Také bych aspoň okrajově zmínil teorii za jazyky, člověk pak spíše ví, co píše.
Začneme Prologem, poté letmý úvod do Lispu a zakončíme to Haskellem.

Požadavky na zápočet

Požadavky na zápočet jsou následující
Domácí úkoly budou zadávány postupně, bude na ně deadline a musí být plně funkční.
  1. Test prvočíselnosti v unární aritmetice
  2. Sat solver pro predikátovou logiku (alg. DPLL)
  3. Prevod formule do CNF
Zápočtové testy budou dva, jeden z Prologu, druhé z Haskellu. Oba je třeba rozumně napsat (hlavní myšlenky musí být správně, chyby syntaxe mi nevadí). Na testy bude v případě potřeby i více pokusů.
  • První zápočtový test (Prolog)
    • Termín: 3.4.2013
    • Obsah: Rekurze, aritmetika, práce se seznamy, práce s datovými strukturami, operátory, dekompozice termů
    • Zadání: test_prolog.txt
    • Řešení: test_prolog_reseni.pl
  • Druhý zápočtový test (Haskell)
Zápočtový program musí být plně funkční, obsahuje testovací data a součástí bude i dokumentace.
  • Seznam zápočtových témat je zde. Jakmile si někdo vybere, nechť mi pošle email a doladíme podrobnosti.
  • Specifikace: musí obsahovat název, popis, musí mít popsané vstupy a výstupy. Zapište to prosím do šablony v tomto stylu:
  • Termín na poslání specifikace je 3.4.

Kdo nesplní požadavky, nemá nárok na zápočet!!!

Zní to sice jako jasný předpoklad, ale radši ho po zkušenostech z minulého roku explicitně píši.

Tito lidé jsou zapsáni a vím o nich. Pod odkazem je i přehled, kdo má co splněno pro zápočet.

Obsah cvičení

  1. Základní názvosloví, práci s proměnnými, jednoduché dotazy a rekurze na databázi s rodinou, velmi letmo jsme začali seznamy. cviceni1.pl
  2. Práce se seznamy, unifikace cviceni2.pl
  3. Komplikovanější příklady na seznamy, aritmetika, zadání prvního domácího úkolu cviceni3.pl
  4. Datové struktury v prologu a příslušné testy, práce se soubory, matice cviceni4.pl
  5. Operátory, dekompozice termů, řezy cviceni5.pl
  6. Test, predikáty vyššího řádu, práce s databází, použití červeného řezu cviceni6.pl
  7. Rozdílové seznamy, průlet scheme a úvod do Haskellu cviceni7.pl, cviceni7.rkt a cviceni7.hs
  8. Seznamy, fce vyššího řádu, zajímavé příklady cviceni8.hs
  9. Písemka na Haskell
  10. Zajímavé příklady na haskell cviceni10.hs

Odkazy (budou průběžně doplňovány)