Documente Academic
Documente Profesional
Documente Cultură
and
; or
nl din rind nou
Clauzele au forma T:-Q1,Q2,,Qn (1)
Fapte
Un fapt este un adevar neconditionat si specifica o afirmatie despre o
anumita relatie. Relatiile pot fi unare, binare. Forma generala este:
nume_predicat(arg1,arg2,,argn), n>=1.
Numele unui predicat este un identificator care incepe cu o litera mica,
argumentele sunt constant. Faptul este urmat de punct.
goal
write(Ce-i place lui Ion),
nl,likes(Ion,X),
write(Lui Ion ii place,X).
Exemplu:
domains
date=birthday(integer,integer,integer)
predicates
student(symbol,date)
clauses
student(Cozmic,birthday(08,08,1993)).
student(Romanciuc,birthday(07,07,1994)).
goal
student(Cozmic,X), write(Date of birth: ,X).
goal
student(Cozmic,birthday(_,_,Y)), write(Anul de nastere al studentului
este: ,Y).
Exemplu:
domains
thing=misc_thing(rock);
book(author,title)
rock,author,title,person=symbol
predicates
owns(person,thing)
clauses
owns(Andrei,misc_thing(Piano)).
owns(Andrei,book(ICreanga,Amintiri din copilarie)).
Goal:
owns(Andrei,X).
Predicate aritmetice
Operatorii aritmetici sint: + , - , * , / , div , mod. Ordinea efectuarii
operatiilor este cea clasica. Operanzii pot fi numere sau variabile. Expresia
poate fi calculata daca toate variabilele ce apar in ea sint legate. In Prolog se
utilizeaza functiile:
1. X mod Y
2. X div Y
3. round(X)
4. trunc(X)
5. abs(X)
6. cos(x)
7. sin(X)
8. tan(X)
9. arctan(X)
10. exp(X)
11. ln(X)
12. sqrt(X)
13. random(X)
Operatorii relationali sint:
<, <=, >, >=, =, <>
Operatorul =(egal) este utilizat nu numai ca operator relational dar si ca
operator de atribuire.
Exemplu:
domains
n=integer
predicates
add(n,n)
sub(n,n)
multi(n,n)
div(n,n)
clauses
add(X,Y):-T=X+Y,write(X,+,Y,=T),nl
sub(X,Y):-S=X-Y,write(X,-,Y,=,S),nl
division(X,Y):-Y<>0, R=X/Y, write(X,/,Y,=,R).