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í, náplň druhé části přednášky
je možné do značné míry přizpůsobit zájmům studentů.
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řednáška rozvržena K1 čtvrtek 14:00, cvičení K4 čtvrtek 12:20
V prvním týdnu výuky - ve čtvrtek 27.února se cvičení nekoná, přednáška bude jen motivační
na ostro začneme od druhého týdne
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í
- 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.
První termín zkoušky se koná v pátek 27.května od 14:00 - sraz před mojí pracovnou.
Na tento termín není nutné se přihlašovat. Další termíny budou vypsány podle zájmu studentů.
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).
Dvě ukázkové sady příkladů ke stažení ve formátu rtf.
Ú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:
- 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