Table of Contents

JUI - 8. cvičení - Prolog

prolog - uvod

reprezentant logickeho programovani

  • relace
    • unarni - mnozina
    • binarni - mnozina dvojic
    • ternrni - mnozina trojic
  • atom - male pocatecni pismeno
  • promenna - velke pocatecni pismeno
  • klausule (znamena relaci) - je zakoncena teckou
    • fakta
    • pravidlo
  • ; logicke or
  • , logicke and
%unarni relace
 
 muz (petr).
 muz (pavel).
 zena (Eva).
 %pozor, musi byt hned za sebou, jinak se prepisou
 
 ?- muz (petr).
  yes
 
 ?- muz (eva).
   no
 
 ?- muz(X).
   X = petr  ;
   X = pavel
 
% //komentar
% predek(?Pred, ?Pot)
% ? oboji, - vystupni, + vstupni
 
+
=:=  rovnost
=\= nerovnost
>
<
=<
>=
prirazeni
 promenna is vyraz
 X is 1 + 2
muz(pavel).
muz(petr).

zena(iva).
zena(eva).

manzele(petr,eva).
manzele(pavel,iva).
manzele(karel,marie).

rodic(petr,josef).
rodic(eva,josef).
rodic(pavel,karel).
rodic(iva,karel).
rodic(karel,petrik).

deda(D,V) :- otec(D,X), rodic(X,V).
tchyne(B,O) :- zena(B), rodic(B,X), manzele(O,X).
tchyne(B,O) :- zena(B), rodic(B,X), manzele(X,O).

predek(P,O) :- rodic(P,O).
predek(P,O) :- rodic(P,X), predek(X,O).
 
vzdalenost(P,O,V) :- rodic(P,O), V is 1.
%alternativne vzdalenost(P,O,1) := rodic(P,O).
vzdalenost(P,O,V) :- rodic(P,X), vzdalenost(X,O,W), V is W + 1.

% abs (+C,-Vysl)
abs(C,Vysl) :- C >= 0, Vysl is C; Vysl is -C.
% fact (+C, -Vysl)
fact(0,1).
fact(C,V) :- C1 is C - 1, fact(C1,M), V is M *C.
rez - zabranuje backtrackingu skrze rez
cykly - 
 repeat, c1, c2, ... , cn , fail. %nekonecne-krat se opakuje

vstup:- repeat,
        write ('Zadej cislo:'),
        read (N),
        integer(N),
        N < 100,
        !.

seznamy
jui/cviko8.txt · Last modified: 2011/08/16 22:33 (external edit)
Back to top
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0