Sunteți pe pagina 1din 5

Programare logica Laboratorul 1

Prolog - Introducere
Isabela Dramnesc

Link-uri utile
Resurse pentru curs.
Resurse pentru laborator.
Ghidul studentului pentru cursul de Programare Logica.
Implementare: SWI-Prolog.
SWI-Prolog Manual de utilizare.

Concepte
Programare logic
a
Predicate
Clauze
Fapte
Reguli
T
inte (Goal, Formul
a obiectiv)
Variabile
Conjunctii

Prolog

Programare logic
a: programele = set de axiome; executia = demonstratie
constructiv
a pentru o tint
a stabilita.
PROgraming in LOGic.
Limbaj declarativ - se descrie ce trebuie rezolvat (nu cum programare
imperativ
a).
Folosit pentru rezolvarea unor probleme modelate n termeni de obiecte si
relatii ntre aceste obiecte (presupune anumite limitari).
Reprezentarea cunostiintelor - bazata pe logica (logica predicatelor de ordinul I)
Relatiile dintre obiecte - exprimate cu ajutorul predicatelor.
Programarea n prolog = conversatie cu intrepretorul:
1

declar
am fapte (despre obiecte si relatiile dintre ele), aceste fapte stim ca
sunt adev
arate. Dac
a declaram verde(zapada). interpretorul va considera
adevarat indiferent c
a nu corespunde cu lumea reala.
Exemplu:
mama( ion , maria ) . / mama l u i i o n e s t e maria /
t a t a ( ion , doru ) .

/ t a t a l u i i o n e s t e doru /

Sau putem scrie:


mama( maria , i o n ) . / maria e s t e mama l u i i o n /
definim reguli
Exemplu:
c o p i l ( ion , maria , doru ):
mama( ion , maria ) ,
t a t a ( ion , doru ) .
Sau:
u n c h i (X,Y):
t a t a (Y,X) ,
f r a t e (Y, Z ) ,
s o a c r a (X, Z ) .
/ X e s t e u n c h i u l l u i Y daca :
tata lui Y este X si
fratele lui Y este Z si
s o a c r a l u i X e s t e Z . /
Sau:
g i n e r e (X,Y):
t a t a ( Z ,Y) ,
c a s a t o r i t (X, Z ) .
g i n e r e (X,Y):
mama( Z ,X) ,
c a s a t o r i t (Y, Z ) .
punem ntreb
ari
mama(X, maria ) . / Mama c u i e s t e maria ? /
g i n e r e (X,X ) .

/ Cine e s t e p r o p r i u l l u i g i n e r e ? /

u n c h i ( ion ,X ) . / Cine e s t e u n c h i u l l u i i o n ? /
Fapte + Reguli = Baza de cunostinte.
|
{z
}
Clauze

Prin definirea unor fapte si relatii se construieste un model.


2

Utilizare:
Calcul simbolic;
Inteligent
a artificial
a;
Procesarea limbajului natural, etc.

3.1

Comenzi utile:

Ctrl-D sau halt. pentru a parasi interpretorul.


help(nume comanda).
apropos(cuv
ant cheie). afiseaza toate predicatele, funtiile si sectiunile
n care se reg
aseste cuv
antul cheie.
consult(nume fisier). sau [nume fisier]. pentru a ncarca baza de
cunostinte dintr-un fisier. Ex: [problema1]. sau [problema1.pl]. Se pot
citi mai multe fisiere odata: [problema1, problema2, problema3].
listing. Afiseaz
a clauzele din baza de cunostinte.
listing(predicat). Afiseaza toate clauzele din baza de cunostinte care
definesc predicatul respectiv. Similar dar pentru mai multe predicate
odat
a: listing([pred1, pred2, pred3]).
; C
and am obtinut o solutie si mai dorim si alte solutii. Provoaca
repetarea c
aut
arii pentru a obtine si alte solutii valide.
trace. Urm
areste interactiv fiecare pas al executiei.

3.2

Exercitii:

1)
a r t i s t ( emerese ) .
a r t i s t ( denis ) .
a u s t r i a c ( emerese ) .
grec ( emerese ) .
? a u s t r i a c ( e m e r e s e ) .
? a r t i s t ( d e n i s ) .
? g r e c ( e m e r e s e ) .
? a c t o r (X ) .
2)
mananca ( ion , p e s t e ) .
mananca ( ion , p i z z a ) .
mananca ( maria , p l a c i n t e ) .
mananca ( maria , sandwish ) .
mananca ( ion , d u l c i u r i ) .
3

mananca ( v i c t o r , supa ) .
?mananca ( maria , p l a c i n t e ) .
?mananca ( ion ,X ) .
?mananca (X,Y ) .
?mananca ( v i c t o r , Z ) .

Conjunctii 3) Introduceti baza de cunostinte pentru urmatoarele interogari:


? p l a c e ( ion , maria ) , p l a c e ( maria , i o n ) .
? p l a c e ( ion ,X) , p l a c e ( maria ,X ) .
? p l a c e ( ion ,X) , p l a c e ( maria ,Y ) .

4)
barbat ( a l b e r t ) .
b a r b a t ( edward ) .
femeie ( a l i c e ) .
femeie ( v i c t o r i a ) .
p a r i n t i ( edward , v i c t o r i a , a l b e r t ) .
parinti ( alice , victoria , albert ).
s o r a (X,Y):
f e m e i e (X) ,
p a r i n t i (X, B, F ) ,
p a r i n t i (Y, B, F ) .
? s o r a ( a l i c e , edward ) .
? s o r a ( a l i c e ,X ) .
? s o r a (X,X ) .
? s o r a (X,Y ) .
Modificati baza de date astfel ncat la interogarea
? s o r a (X,X ) .
sa afiseze 3 solutii: edward, alice, albert.
5)
p l a c e ( marian , b e r e ) .
p l a c e ( mariana , bomboane ) .
p l a c e ( mariana , sampanie ) .
p l a c e ( marian ,X) :
p l a c e (X, sampanie ) .
p l a c e ( mariana ,Y):
p l a c e (Y, sampanie ) .
? p l a c e ( marian , mariana ) .
? p l a c e ( marian ,X ) .
? p l a c e ( mariana ,X ) .
4

? p l a c e (X,X ) .
6)
Introduceti baza de date pentru a afla raspunsurile urmatoare:
Ce cursuri are alex marti?
In ce zi are alina cursul de analiza?
Cine are miercuri curs de programare-logica?
Ad
augati n baza de date cel putin o regula pentru a afla raspunsul la
ntrebarea:
Care sunt cursurile comune dintr-o zi ale lui alex si alinei?

3.3

Tema:

Tema1.
Not
a: Termen de realizare: laboratorul urmator.