Zpět PRM002
PRM002 Programování II pro neinformatiky.
přednáška |
středa 9:00 S3 |
cvičení |
středa 10:40 S6
|
Co bylo na přednáškách a cvičeních
Domluvili jsme se, že i cvičení může posunovat látku kupředu, nejen procvičovat látku z přednášky.
Proto zde budeme uvádět i takový obsah cvičení
- přednáška 25.února
- přednáška 3.března
- přednáška 10.března
- přednáška 17.března
- přednáška 24.března
- přednáška 31.března
- přednáška 7.dubna
- přednáška 14.dubna
- přednáška 21.dubna
- přednáška 28.dubna
- přednáška 5.května
- přednáška 19.května
- přednáška 25.února
- Náplň kursu, podmínky pro zápočet, zkouška.
- Neprocedurální funkcionální, logické programování.
- Příklad jednoduchého programu v Prologu a dotazů na něj.
- Fakt, pravidlo, proměnná, anonymní proměnná.
- Definice seznamu a notace pro jejich zápis.
- cvičení :
Jednoduhé predikáty pro práci seznamy, např. :
- member(?Co,?Kde)
- prvni_prvek(?Co,?Ceho)
- posledni_prvek(?Co,?Ceho)
- predikáty pro vypouštění prvku (jednoho nebo všech výskytů) ze seznamu
- zřetězeni seznamů conc(?L1,?L2,?L3)
- Problémy k rozmyšlení
- prostredni_prvek(?Co,?Ceho)
zpět na začátek
- přednáška 3.března
- Syntaxe Prologu (proměnné, atomy, řetězce, struktury, klausule, fakty, pravidla, procedury, ... ).
- Unifikace.
- Algoritmus interpretu Prologu (unifikace + backtracking).
- cvičení :
- predikát pro slévání dvou seznamu zip(?S1,?S2,?S3)
- predikát pro permutování seznamu
- vybrana_posloupnost(+Zceho,-Vybrana)
- obracení seznamů obrat(?L,?ObrL) v kvadratickém čase
- prostredni_prvek(?Co,?Ceho) v kvadratickém čase - uřezáváním zepředu a zezadu
- půlení a třetění seznamu
- matice, diag(Diag,Ceho), otoc(Mat,OtMat)
- Problémy k rozmyšlení
- obrácení seznamu v lineárním čase
- starsi_bratr(Kdo,Koho), nejstarsi_bratr(Kdo,Koho), mladsi_bratr(Kdo,Koho), nejmladsi_bratr(Kdo,Koho)
- slupka(+Mat,-Slupka,-Pecka)
- spirala(+Mat,-Spirala)
zpět na začátek
- přednáška 10.března
- Lineární obracení seznamu (reverse_append) pomocí akumulátoru.
- Aritmetika v Prologu.
- Jednoduché příklady - největší společný dělitel, maximum, maximum seznamu, délka seznamu,
generování aritmetické posloupnosti, rostoucí posloupnost, ...
- Následující permutace v lexikografickém uspořádání.
- Quicksort - rozmyslet variantu bez zřetězení
- cvičení :
- Spirála
- Fibonnaciova posloupnost
zpět na začátek
- přednáška 17.března
- Binární vyhledávací stromy, vyhledávání, vkládání, vypouštění, vkládání do listu,
nedeterministické vkládání, které lze použít i pro vypouštění. Visualizace stromu.
- Deklarativní význam prologovského programu
- Vliv permutace klausulí a permutací cílů na pravé straně jednotlivých pravidel
na procedurální sémantiku procedurálně správné procedury.
zpět na začátek
přednáška 24.března
- Vytváření dokonale vybalancovaného binárního vyhledávacího strmu ze začátku (dané délky) rostoucí posloupnosti.
- Krabičkový model výpočtu.
- Ladění, predikáty trace/0, notrace/0, spy/1, nospy/1.
- Rozdílové seznamy jako příklad neúplně definovaných datový struktur.
Zřetězení rozdílových seznamů.
- Řez.
- Příklady použítí řezu
- Příklady predikátů pro třídění seznamů (bublinkové třídění, třídění výběrem, zatřiďování).
- Negace.
- Při použití řezu nelze již mluvit o deklarativním významu v původním smyslu.
- Standardní predikáty functor, arg, =.., name .
- Řešení algebrogramu
zpět na začátek
přednáška 31.března
- Program Eliza.
- Vstup a výstup v Prologu
- Kopírování souborů
- Naprogramování cyklů, predikáty repeat a fail, "for cyklus"
zpět na začátek
přednáška 7.dubna
- Quicksort bez zřetězení, varinta pro rozdílové seznamy.
- Převody mezi seznamy a rozdílovými seznamy.
- Použití řezu pro kontrolu výpočtu, predikát for.
- Zjednodušování aritmetických výrazů
- Operátory v Prologu, standardní predikát op/3
- Příkazy
-
cvičení :
- Predikat flatten, varianta bez zřetězení seznamů.
- Problémy k rozmyšlení
- Repezentace permutací jako vektor obrazů, seznam netriviálních cyklů a vektor inverzí.
Převody mezi reprezentacemi,
zpět na začátek
přednáška 14.dubna
- Operátory - příklady
- Prostředky pro zvyšování efektivity prologovských programů
- predikáty bagof a setof
- I/O ošetření programu Eliza
- Predikáty assert, retract, retractall. Jejich vliv na efektivitu a význam programu.
zpět na začátek
přednáška 21.dubna
- Rodina jazuků LISP.
- Výrazy v LISPu - prefixový způsob zápisu, vyhodnocování expanzí a redukcí.
- Forma define
- Podmínky: formy cond a if, nil jako false.
- Příklady: faktoriál rekursivně a iterativně, efektivní umocňování, odmocnina Newtonovou metodou.
- Funkce jako parametry.
- (nestandardní) lokální define.
- Forma lambda.
- Formy lambda a let, lokalita ve formě let.
zpět na začátek
přednáška 28.dubna
zpět na začátek
přednáška 5.května
zpět na začátek
přednáška 19.května
zpět na začátek
Zpět PRM002