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í
- přednáška 16.října
- přednáška 23.října
- přednáška 30.října
- přednáška 6.listopadu
- přednáška 13.listopadu
- přednáška 20.listopadu
- přednáška 27.listopadu
- přednáška 4.prosince
- přednáška 11.prosince
- přednáška 18.prosince
- přednáška 8.ledna
- přednáška 16.října
- 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.
- 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
- Problémy k rozmyšlení
- obrácení seznamu v lineárním čase
- 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
- přednáška 23.října
- Lineární obracení seznamu (reverse_append) pomocí akumulátoru.
- Syntaxe Prologu (proměnné, atomy, řetězce, struktury, klausule, fakty, pravidla, procedury, ... ).
- Unifikace.
- Algoritmus interpretu Prologu (unifikace + backtracking).
- Aritmetika v Prologu.
- 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
- přednáška 30.října
- 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ý).
- Čtyři varianty deklarativně správné definice předka - porovnání jejich procedurální správnosti (rozmyslet).
- 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
- Následující permutace v lexikografickém uspořádání.
- Quicksort - rozmyslet variantu bez zřetězení
- Binární strom - reprezentace, byti_ve_stromu(Prvek,Strom).
- Binární vyhledávací stromy. Vkládání a vypouštění prvků. Tisk stromu.
- 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
- přednáška 6.listopadu
- Krabičkový model. Brány CALL, EXIT, FAIL, REDO.
- Princip ladění. Predikáty trace/0, notrace/0, spy/1, nospy/1.
Ukázka možného výstupu při ladění.
- Quicksort - varianta bez explicitního zřetězení.
- 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.
- Operátor ř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.
- 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
přednáška 13.listopadu
- 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í.
- Rovnosti a nerovnosti v Prologu:
unifikace
|
= , \=
|
identita
|
== , \==
|
aritmetika
|
=:= , =\=
|
- consult a reconsult.
- Předdefinované predikáty var/1, nonvar/1, number/1, atom/1, atomic/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í.
- 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.
- "Cykly" v Prologu ("věčný" cyklus repeat .... fail a jeho ukončení,
"repeat until" cyklus , "for" cyklus )
- Zjednodušování aritmetického výrazu (program)..
- cvičení 8.listopadu
- Reprezentace permutace a jejich vzájemné převody.
zpět na začátek
přednáška 20.listopadu
- Nabídka témat zápočtových úloh.
- Operátory. Příkaz op/3, asociativita, priorita operátoru. Jednoduché příklady použití operátorů.
- Predikáty bagof a setof, "existenční kvantifikátor ^ ", jednoduché příklady užití.
zpět na začátek
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.
- 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.
- Forma lambda.
zpět na začátek
přednáška 4.prosince
- Formy lambda a let, lokalita ve formě let.
- Dvojice : formy cons, car, cdr. Implementace, alternativní konstrukce dvojic.
- Seznamy, forma list, příklady jednoduchých funkcí pro práci se seznamy.
- Forma quote.
- Datová struktura = konstruktory + selektory (+metody).
- Implemenace zlomku jako příklad nutnost "inteligentních" konstruktorů a selektorů.
- Eliza (v Prologu).
přednáška 11.prosince
Prolog:
- Predikáty modifikace databáze, assert, asserta, assertz, retract, retractall.
Vhodnost resp. nevhodnost použití těchto příkazů. bagof pomocí assert a retract.
- Efektivita prologovských programů
- Akumulátor
- Řez
- Neúplně definované datové struktutury - rozdílové seznamy
- Iterativní výpočty - na příkladu Fibonacciho posloupnosti.
- Databáze versus parametry
Poznámky o vývoji programovacích jazyků
- Strukturované programování (strukturované příkazy, strukturované datové typy, důsledné chápání role podprogramů při programování)
- Modulární programování
zpět na začátek
přednáška 18.prosince
- Předávání parametrů podprogramům (hodnotou, referencí, jménem, "a la Fortran")
- Jak šel život (ve výpočetní technice, v programování, na fakultě, ve společnosti)- odpovědi na dotazy.
- cvičení 20.prosince
C letem světem.
zpět na začátek
přednáška 8.ledna
- C++ letem světem.
- cvičení 20.prosince
- Šablony.
- Vyjímky.
- Java letem světem.
zpět na začátek
Zpět PRM002