Cvičení - Výpočtová logika (IA008)

Semestr:jaro 2009
Cvičící:Jan Strejček
xstrejc@fi.muni.cz

Ukončení

Cvičení není ukončeno udělením zápočtu, nicméně účast na něm je povinná pro udělení povolení absolvovat závěrečnou zkoušku z předmětu. Jsou povoleny dvě neomluvené neúčasti.

Obsah cvičení

Poznámka: Naleznete-li v materiálech chyby, nahlaste je prosím cvičícímu.


Prolog

Na FI MUNI je k dispozici implementace programovacího jazyka Prolog zvaná SICStus Prolog (najdete ji v modulu sicstus). K  dalším rozšířeným distribucím patří např. SWI Prolog a Yap Prolog.

Při spuštění systémů SICStus a Yap můžeme k načtení předložit soubor s programem:

      sicstus -l zdroj[.pl]
      yap -l zdroj[.pl]

Po spuštění inerpreteru pak lze načíst program zadáním nějakého z dotazů:

      ?- [zdroj1,'zdroj2.pl'].
      ?- consult([zdroj1,'zdroj2.pl']).
      ?- reconsult([zdroj1,'zdroj2.pl']).
      ?- compile([zdroj1,'zdroj2.pl']).
      ?- recompile([zdroj1,'zdroj2.pl']).

Řada predikátů je dostupná přímo v distribucích jazyka. Je však nutné je načíst. V případě SICStus a Yap to provedeme příkazem use_module/1. Např. use_module(library(list)). načte predikáty pro práci se seznamy.

Dotazy interpretru zadáváme v podobě atomických formulí oddělených čárkou a s tečkou na konci.

      ?- use_module(library(list)).
         [ reconsulting /packages/local/Yap-4.4.4/share/Yap/lists.yap... ]
         [ reconsulted /packages/local/Yap-4.4.4/share/Yap/lists.yap in module lists, 10 msec 18024 bytes ]
         yes
        
      ?- reverse([a,b,c],X).
         X = [c,b,a] ? 
         yes

      ?- sort([2,5,1,3,9,0],X),reverse(X,Y),length(Y,L).
         L = 6,
         X = [0,1,2,3,5,9],
         Y = [9,5,3,2,1,0] ? ;
         no

Interpreter se ukončí stiskem kláves <Ctrl> + d.


Literatura