PRM0046 Programování III pro neinformatiky - 2/2 Z/Zk
Výběrová přednáška pro studenty neinformatických oborů - hlavní náplní je neprocedurální programování.
přednáška pátek 9:00 v K3, cvičení pátek 10:40 K3
Předmět je nepovinný, předpokládá se tedy zájem.
Nic víc - kromě základů algoritmického myšlení -
se de facto nepředpokládá.
Předmět prohlubuje znalosti z programování pro studenty, pro něž není informatika hlavním oborem.
Hlavní náplní kursu je neprocedurálního programování,
které může být na základě zájmu studentů případně doplněno o další témata.
Neprocedurální programování se obejde bez základních kamenů běžných procedurálních jazyků
(Pascal, C, C++, Basic), kterými jsou pojem proměnné (jako jména pro kus paměti) a přiřazovacího příkazu.
Programování se tak přibližuje "klasickému matematickému uvažování".
- Hlavní důraz je věnován programování v jazyce Prolog.
Studenti si prakticky osvojí dovednosti v logickém programování.
V Prologu se také vytvářejí a ladí zápočtové úlohy.
- Jako doplňkové téma se proberou základy funkcionálního programování na bázi jazyků LISP a Haskell.
V těchto jazycích studenti nemusejí prakticky programovat.
- Styl výkladu i požadavky u zkoušky berou ohled na to, že jde o výběrovou přednášku pro nespecialisty v informatice. Z Prologu se zkouší schopnost naprogramovat nepříliš těžké úlohy, z funkcionálního jen hlavní ideje - obdobně jako na jiných zkouškách - na podrobnostech se lze domluvit..
- Rudolf Kryl: Úvod do programovacího jazyka Prolog
učební text - ke stažení z WWW stránek přednášejícího
aktuální verze 3.02 ve formátu pdf
nebo zip
Text byl původně napsán pro čtenáře s o poznání menší programátorskou erudicí, než má většina z Vás.
Proto by mělo jít o "nenáročné čtení před usnutím". Text pokrývá přibližně první polovinu látky z Prologu.
Obsahuje řadu jednoduchých programů.
Budu vděčný za připomínky a opravy chyb - posílejte je na můj mail a v subjectu uveďte číslo verze,
ke které se připomínky vztahují.
-
Přehled předdefinovaných forem ve vykládaném dialektu LISPu
Ke stažení ve formátu pdf
-
ke stažení z www.haskell.org
Poměrně čtivý základní text o programovacím jazyku Haskell. Pokrývá vše z jazyka, co probereme.
Některé partie vynecháme, můžeme však jít dál v programátorské obtížnosti úloh.
Na dané adrese můžete získat úplný přehled o problematice jazyka Haskell.
- P.Jirků a kol. : Programování v jazyku Prolog
SNTL 1991
Pěkná knížkav češtině. Neobsahuje mnoho těžších příkladů, věnuje se však dost podrobně souvislostem s logikou.
- Bratko I.: PROLOG Programming for Artificial Intelligence
Addison-Wesley, Reading, Massachussets, 1986 ISBN 0-201-14224-4
Stále velmi pěkná knížka. První díl obsahuje výklad Prologu
(náš přístup k výkladu je do značné míry poplatný přístupu této knihy),
druhý obsahuje výklad některých základních partií umělé inteligence pomocí programů v Prologu.
- Harold Abelson, Gerald Jay Sussman, Julie Sussman :
Structure and Interpretation of Computer Programs
Mc Graw-Hill Book Company 1985 ISBN 0-07-000-422-6
Výklad principů programování na bázi jazyka XSCHEME (dialekt jazyka LISP).
Kniha byla používána v základnídním kursu programování na MIT.
My použijeme tohoto jazyka i příkladů z této knihy k velmi zběžnému seznámení s principy LISPu.
- Ivan Kalaš : Iné programovanie - stretnutie s jazykom Lisp
Alfa 1992
Krásná kniha s množství originálních příkladů.
Uživaný dialekt LISPu se poněkud liší od toho, se kterým budeme pracovat na přednášce my.
Pokud se nehodí žádný termín, je možno se domluvit na jiném.
K přihlášení ke zkoušce ani ke jejímu skládání není třeba mít zápočet.
Zatím vypsané termíny - vždy v posluchárně S3
- pátek 8.6.2007 od 9:00
- pondělí 18.6.2007 od 9:30
- pondělí 25.6.2007 od 9:00
- pondělí 2.7.2007 od 9:00
Požadavky ke zkoušce
Zkouška má písemnou a ústní část, podstatně větší váhu má část písemná.
V písemné části mají studenti dvě hodiny na vypracování
dvou nepříliš obtížných příkladů, v nichž má student prokázat,
že ovládl základní techniku neprocedurálního programování.
Jeden z příkladů bude mět být napsán v Prologu, u druhého si student může jazyk zvolit (Prolog, XSCHEME, Haskell)
.
Ústní část se skládá ze dvou částí
- společná (zkoušející a zkoušený) oprava vytvořených programů a diskuse nad nimi
- Kromě toho může student dostat otázku z některého z následujících témat:
Prolog
- Tvar programu v Prologu a algoritmus jeho interpretace
- Deklarativní a operační sémantika programu v Prologu
- Operátor řezu, negace
- Rozdílové seznamy
- Predikáty pro řízení databáze (assert,...)
- Predikáty grupování termů (bagof, setof) a jejich užití
- Prostředky a techniky pro vytváření efektivních programů v Prologu
Funkcionální programování a Haskell
- Typy v Haskellu, typová specifikace funkce
- Základní způsoby definování výrazů
- Sémantika "mečování" parametrů, as patterns ( @s ), žolíky ( _ ), lazy-parametry ( ˜x ),
- Lazy vyhodnocování, "nekonečné" termy.