Prolog

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

Prolog je programski jezik.

Primer programa

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

otrok(tea,lili).     tejin otrok je lili
otrok(leo,lili).
otrok(lili,ana).

roditelj(X,Y) :-     sklepni del
   otrok(Y,X).       pogojni del

Komunikacija s prologom

?- <-- prompt prologa

?- consult('primer')    odpri datoteko "primer" in dodaj v svojo bazo znanja ta program
yes                     (dvakratno dodajanje pomeni da imamo dvojni program, kar ne želimo)
                        več datotek naenkrat lahko damo v seznam ['file1','file2',...]
?- reconsult('primer')  pred dodajanjem pobriše vse relacije (varnejša varianta od consult)
yes

Ko je program prebran in preverjen, če je sintatkično pravilen, prolog odgovori z "yes".


Prolog odgovori na vprašanje če je lili otrok ane z yes.

?- otrok(lili,ana).
yes

Prolog odgovori na vprašanje z no ker mu ni uspelo dokazati, da je lili otrok od lea.

?- otrok (lili,leo).
no

Zanima nas kdo je otrok od ane. Prolog odgovori z X = lili, ko pritisnemo enter nam prolog vrne yes kar pomeni konec odgovorov.

?- otrok(X,ana).
X = lili
yes

Zanima nas kdo je starš od "tea". Prolog odgovori z lili, ker ni več odgovorov nam prolog po entru vrne zopet yes.

?- otrok(tea,x).
X = lili
yes

Kdo je čigav otrok? Zanimajo nas vsi pari kjer je X otrok od Y. Prolog nam vrne vse možne odgovore dokler pritiskamo enter. Ko pritisnemo podpičje, prolog prekine izvajanje ( ; = logična disjunkcija - aka "hočem nek drug odgovor"). Ker ne najde drugega vrne "no".

?- otrok(X,Y).
X = tea
Y = lili;
X = leo
Y = lili;
X = lili
Y = ana;
no

Iščemo nek drug odgovor, ker ne najde nobenega drugega para X z lili, vrne "no".

?- roditelj(X,lili).
X = ana;
no

Povezave

Vzpostavljeno iz »http://www.e-studij.si/Prolog«
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja