Zpět PRM002

PRM002 Programování II pro neinformatiky.

přednáška     středa 14:00 K1
cvičení     pátek 9:00 K3   nebo   10:40 K6

Co bylo na přednáškách a cvičeních

Domluvili jsme se, že cvičení může posunovat látku kupředu, nejen procvičovat látku z přednášky. Zde budeme uvádět takový obsah cvičení

  1. přednáška 16.října
  2. přednáška 23.října
  3. přednáška 30.října
  4. přednáška 6.listopadu
  5. přednáška 13.listopadu
  6. přednáška 20.listopadu
  7. přednáška 27.listopadu
  8. přednáška 4.prosince
  9. přednáška 11.prosince
  10. přednáška 18.prosince
  11. přednáška 8.ledna
  1. přednáška 16.října
    1. Náplň kursu, podmínky pro zápočet, zkouška.
    2. Neprocedurální funkcionální, logické 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)
      • prostredni_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í
      • obrácení seznamu v lineárním čase
    8. cvičení 18.října
      • predikáty pro vypouštění prvku (jednoho nebo všech výskytů) ze seznamu
      • predikát pro slévání dvou seznamu zip(?S1,?S2,?S3)
      • predikát pro permutování seznamu
    zpět na začátek
  2. přednáška 23.října
    1. Lineární obracení seznamu (reverse_append) pomocí akumulátoru.
    2. Syntaxe Prologu (proměnné, atomy, řetězce, struktury, klausule, fakty, pravidla, procedury, ... ).
    3. Unifikace.
    4. Algoritmus interpretu Prologu (unifikace + backtracking).
    5. Aritmetika v Prologu.
    6. cvičení 25.října
      • starsi_bratr(Kdo,Koho) , nejstrasi_bratr(Kdo,Koho)
      • půlení a třetění seznamu
      • matice, byti_obd_mat(Mat), diag(Diag,Ceho), otoc(Mat,OtMat), spirala(Mat,Spirala)
    zpět na začátek
  3. přednáška 30.října
    1. Procedurální a deklarativní sémantika, deklarativně správná procedura napsaná v "čistém Prologu" je parciálně správná, t.j. nemůže dát špatný výsledek (nanejvýš nedá žádný).
    2. Čtyři varianty deklarativně správné definice předka - porovnání jejich procedurální správnosti (rozmyslet).
    3. Predikáty s pomocí aritmetiky : max(+Zceho,+ACeho,-Je), max_seznamu(+Seznam,-Max),
      nejv_spol_delitel(+Zceho,+ACeho,-Je) Euklieidovým algoritmem,
      delka_seznamu(+Seznam,-Delka), vytvareni seznamu obsahujího aritmetickou posloupnost
    4. Následující permutace v lexikografickém uspořádání.
    5. Quicksort - rozmyslet variantu bez zřetězení
    6. Binární strom - reprezentace, byti_ve_stromu(Prvek,Strom).
    7. Binární vyhledávací stromy. Vkládání a vypouštění prvků. Tisk stromu.
    8. cvičení 1.listopadu
      • "půlení" a "třetění" seznamu vzhledm k význačným prvkům
      • spirala z matice a matice ze spiraly a rozměrů matice
      • slupka(+Mat,-Slupka,-Pecka)
    zpět na začátek
  4. přednáška 6.listopadu
    1. Krabičkový model. Brány CALL, EXIT, FAIL, REDO.
    2. Princip ladění. Predikáty trace/0, notrace/0, spy/1, nospy/1. Ukázka možného výstupu při ladění.
    3. Quicksort - varianta bez explicitního zřetězení.
    4. Rozdílové seznamy jako příklad neúplně definovaných datový struktur. Zřetězení rozdílových seznamů. Převody mezi kanonickou reprezentací seznamů a rozdílovými seznamy. Quicksort na rozdílových seznamech.
    5. Operátor řezu.
    6. Příklady predikátů pro třídění seznamů (bublinkové třídění, třídění výběrem, zatřiďování).
    7. Negace.
    8. cvičení 8.listopadu
      • Pascalův trojúhelník.
      • Výpis listů stromu.
      • Výpis prvků stromu v pořadí podle vzdálenosti od listu.
    zpět na začátek
  5. přednáška 13.listopadu
    1. Předdefinované predikáty pro "rozebírání a skládání" prologovských termů: name/2, functor/3, arg/3, =..   a příklady jejich užití.
    2. Rovnosti a nerovnosti v Prologu:
      unifikace   =   , \=
      identita   ==  , \==
      aritmetika   =:= , =\=
    3. consult a reconsult.
    4. Předdefinované predikáty var/1, nonvar/1, number/1, atom/1, atomic/1.
    5. Předdefinované predikáty pro "rozebírání a skládání" prologovských termů: name/2, functor/3, arg/3, =..   a příklady jejich užití.
    6. Vstup a výstup z/do streamu (souboru nebo konzole). Otvírání, zavírání, zjištění aktuálního streamu.
      Vstup/výstup termů resp. znaků.
      procedura pro kopírování jednoho streamu do druhého.
    7. "Cykly" v Prologu ("věčný" cyklus repeat .... fail a jeho ukončení,
      "repeat until" cyklus , "for" cyklus )
    8. Zjednodušování aritmetického výrazu (program)..
    9. cvičení 8.listopadu
      • Reprezentace permutace a jejich vzájemné převody.
    zpět na začátek
  6. přednáška 20.listopadu
    1. Nabídka témat zápočtových úloh.
    2. Operátory. Příkaz op/3, asociativita, priorita operátoru. Jednoduché příklady použití operátorů.
    3. Predikáty bagof a setof, "existenční kvantifikátor ^ ", jednoduché příklady užití.
    zpět na začátek
  7. přednáška 27.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. Forma lambda.
    zpět na začátek
  8. přednáška 4.prosince
  9. přednáška 11.prosince
    Prolog: Poznámky o vývoji programovacích jazyků zpět na začátek
  10. přednáška 18.prosince zpět na začátek
  11. přednáška 8.ledna zpět na začátek

Zpět PRM002