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 12:20 v K2, cvičení pátek 14:00 K2
24.února jen motivační přednáška a úmluva, cvičení není.
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.
Kurs má dvě části:
- První - dominantní - část
je věnována principům neprocedurálního programování.
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 jazyka LISP.
-
Druhá část je alternativní - přizpůsobím se přáním studentů:
- Buď dále prohloubíme poznatky z neprocedurálního programování - této variantě dávám přednost já
- nebo se věnujeme principům objektového návrhu programů. Jako základ si vezmeme jazyk Java.
Vůbec však nepůjde o technické detaily jazyka,
- nebo případně něco úplně jiného
Zda a kolik materiálu této části se bude zkoušet,
bude určeno podle fakticky probrané látky a zájmu studentů. Velmi pravděpodobně se tato část zkoušet nebude.
- 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.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.
Literatura pro druhou část přednášky:
Bude upřesněna později.
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 Prologu, v nichž má student prokázat,
že ovládl základní techniku neprocedurálního programování
(u každého příkladu může být předepsané i jak má být řešen).
Ú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
- Definování operátorů
- 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.
-->