Zpět PRG005

PRG005 Programování II   -  pondělí 12:20 M1

Co bylo na přednášce

  1. přednáška 14.října
    1. Náplň kursu, podmínky pro zápočet, zkouška.
    2. Neprocedurální programování.
    3. Příklad jednoduchého programu v Prologu a dotazů na něj.
    4. Fakt, pravidlo, proměnná, anonymní proměnná.
    5. Definice seznamu a notace pro jejich zápis.
    6. Jednoduhé predikáty pro práci seznamy, např. :
      • member(?Co,?Kde)
      • prvni_prvek(?Co,?Ceho)
      • posledni_prvek(?Co,?Ceho)
      • zřetězeni seznamů conc(?L1,?L2,?L3)
      • obracení seznamů obrat(?L,?ObrL) v kvadratickém čase
    7. Problémy k rozmyšlení
      • zřetězení seznamů v lineární čase
      • prostřední prvek seznamu
    zpět na začátek
  2. přednáška 21.října
    1. Nalezení prostředního prvku seznamu.
    2. Lineární obracení seznamu (reverse_append) pomocí akumulátoru.
    3. Syntaxe Prologu (proměnné, atomy, řetězce, struktury, klausule, fakty, pravidla, procedury, ... ).
    4. Unifikace.
    5. Algoritmus interpretu Prologu (unifikace + backtracking).
    6. Deklarativní a procedurální význam programu v Prologu. Deklarativně správná procedura je procedurálně parciálně správná (může se zacyklit a nedat správnou odpověď, ale nemůže dát špatnou odpověď).
    7. Procedura predek a její modifikace vzniklé permutací klausulí a cílů v jejich tělech (rozmyslet).
    8. Aritmetika v Prologu.
    9. Největší společný dělitel, délka seznamu, generování seznamu obsahujícího aritmetickou posloupnost.
    zpět na začátek
  3. přednáška 4.listopadu
    1. Opakování aritmetiky a algoritmu zodpovídání Prologovského dotazu.
    2. Quicksort. Rozmyslet implementaci bez (explicitního volání) zřetězování seznamu.
    3. Slévání dvou uspořádaných seznamů do jednoho. Co je deterministická procedura (deterministický predikát).
    4. Nalezení následující permutace v lexikografickém uspořádání.
    5. Reprezentace binárního stromu - buď atom nil jako reprezentace prázdného stromu
      nebo term t(Levy,Koren,Pravy), který konstruuje neprázdný strom z Korene, Leveho a Praveho podstromu.
    6. Tisk binárního stromu pomocí indentace.
    7. Test zda je daný term prvkem stromu.
    8. Průchod stromem do hloubky a do šířky.
    9. Vkládání do binárního vyhledávacího stromu (obvyklý algoritmus vkládající do listu) a proč nemůže být použito obecně pro vypouštění.
    10. Vypouštění z binárního vyhledávacího stromu (obvyklý algoritmus záměny kořene např. nejmenším z větších).
    11. Vkládání do kořene a jeho použití pro konstrukci vkládání, které je schopno také vypouštět.
    12. Krabičkový model. Brány CALL, EXIT, FAIL, REDO.
    13. Princip ladění. Predikáty trace/0, notrace/0, spy/1, nospy/1. Ukázka možného výstupu při ladění.
    zpět na začátek
  4. přednáška 11.listopadu zpět na začátek
  5. přednáška 18.listopadu
    1. Rovnosti a nerovnosti v Prologu:
      unifikace   =   , \=
      identita   ==  , \==
      aritmetika   =:= , =\=
    2. Operátory. Příkaz op/3, asociativita, priorita operátoru. Jednoduché příklady použití operátorů.
    3. Ukázky programů v Prologu:
    4. Predikáty bagof a setof, "existenční kvantifikátor ^ ", jednoduché příklady užití.
    5. Predikáty modifikace databáze, assert, asserta, assertz, retract, retractall.
      Vhodnost resp. nevhodnost použití těchto příkazů. bagof pomocí assert a retract.
    6. Úvod do LISPu.
    zpět na začátek
  6. přednáška 25.listopadu
      Probírá se dialekt Scheme jazyka LISP. Přehled základních předdefinovaných forem je v materiálu.
    1. Výrazy v LISPu - prefixový způsob zápisu, vyhodnocování expanzí a redukcí.
    2. Forma define
    3. Podmínky: formy cond a if, nil jako false.
    4. Příklady: faktoriál rekursivně a iterativně, efektivní umocňování, odmocnina newtonovou metodou.
    5. Funkce jako parametry.
    6. Formy lambda a let, lokalita ve formě let.
    7. Dvojice : formy cons, car, cdr. Implementace, alternativní konstrukce dvojic.
    8. Seznamy, forma list, příklady jednoduchých funkcí pro práci se seznamy.
    9. Forma quote.
    10. Datová struktura = konstruktory + selektory (+metody).
    11. Implemenace zlomku jako příklad nutnost "inteligentních" konstruktorů a selektorů.
    12. Binární strom:
      • konstruktory Nulltree, Tree(L,V,R)
      • test nulltree?
      • selektory Root, Left, Right
    13. Výpis listů stromu do seznamu (bez nutnosti zřetězovat seznamy).
    zpět na začátek
  7. přednáška 2.prosince
    Výklad jazyka Haskell na této přednášce poměrně těsně sledoval výklad v publikaci "A Gentle Introduction to Haskell 98".
    Probrali jsme přibližně látku obsaženou na stránkách  1 - 18  tohoto materiálu. zpět na začátek
  8. přednáška 9.prosince zpět na začátek
  9. přednáška 16.prosince
  10. přednáška 8.ledna

Zpět PRG005