Sunteți pe pagina 1din 6

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei


Facultatea Calculatoare, Informatic i Microelectronic

Raport
Lucrarea de laborator nr. 1
PLIA
Tema: Introducere n limbajul Prolog. Mecanisme de control al procesului de
backtracking.

A efectuat:

St. gr. Ti-123 Moldoveanu Sofia

A verificat:

Lazu Victoria

Chiinu 2015

Scopul lucrrii
nsuirea principiilor fundamentale de programare a limbajului Prolog
Se va citi breviarul teoretic. Se atrage atenia asupra faptului c toate cunotinele
din aceast lucrare vor fi necesare i la efectuarea celorlalte lucrri.
Se vor studia exemplele propuse, ncercnd gsirea altor posibiliti de soluionare a
acestora. Se vor utiliza i alte scopuri(interogri) pentru a testa definiiile
predicatelor introduse.
Se va elabora un arbore genealogic i o baz de cunotine Prolog care ar descrie
relaiile existente n familia dumneavoastr proprie care ar permite cercetarea
acestor relaii prin utilizarea scopurilor externe. Arborele genealogic elaborat trebuie
s conin cel puin trei niveluri. Pentru cercetarea relaiilor existente n familie se
vor utiliza nu mai puin de ase scopuri.
nsuirea noiunilor privind mecanismele specifice limbajului Prolog pentru
controlul procesului de backtracking: cut i fail
Citii breviarul teoretic. Se atrage atenia asupra faptului c toate cunotinele din
aceast lucrare vor fi necesare i la efectuarea celorlalte lucrri.
Lansai la executare programul elaborat n lucrarea 1 i cercetai schimbrile
semanticii procedurale:
o prin schimbarea ordinii propoziiilor fapte;
o prin schimbarea ordinii propoziiilor - reguli; (dou variante)
o prin schimbarea subscopurilor n reguli; (dou variante)
o tragei concluzii.
Rezolvai urmtoarele probleme propuse i urmrii execuia lor corect.
o Elaborai i testai un program pentru determinarea unei valori minime din
dou numere (X i Y), fr utilizarea predicatului cut.
o Elaborai i testai un program pentru determinarea unei valori minime din
dou numere (X i Y), utiliznd predicatul cut rou i cut verde.
o Care vor fi rspunsurile programului

( 1).

( 2) :- !.

( 3).

Efectuai o analiz comparativ ntre utilizarea predicatelor cut n spaiul bazei de


cunotine i spaiul scopurilor pentru ntrebrile formulate n lista de scopuri ce urmeaz:

( X).

( X), p(Y).

( X), !, p(Y).

Doi copii pot juca un meci ntr-un turneu de tenis dac au aceeai vrst. Fie
urmtorii copii i vrstele lor: copil(peter,9). copil(paul,10). copil(chris,9).
copil(susan,9). Definii un predicat din care rezult toate perechile de copii care pot juca
un meci ntr-un turneu de tenis.

Introducei schimbrile corespunztoare n programul din punctul 2., utiliznd cut


verde cel puin n dou reguli din baza de cunotine.

Introducei schimbrile corespunztoare n programul din punctul 2., utiliznd cut


rou n reguli din baza de cunotine. Tragei concluzii.

Prezentai darea de seam.

Boris

Oxana

Lidia

Elena

IonC

Selena

Gherghe
Junior

IonG

Gheorghe

Elizaveta

Vladimi
r

Tatian
a

NicolaieG

Stefan

IonI

Mirce
a

Baza de cunotine i scopurile arborelui genialogic


%lab 1
femeie(elizaveta).
femeie(lidia).
femeie(elena).
femeie(oxana).
femeie(tatiana).
femeie(selena).
barbat(gheorghe).
barbat(boris).
barbat(vladimir).
barbat(ionI).
barbat(ionC).
barbat(gheorgheJunior).
barbat(ionG).
barbat(nicolai).
barbat(stefan).
barbat(mircea).
parinti(boris,lidia,ionC).
parinti(boris,lidia,elena).
parinti(gheorghe,elizaveta,vladimir).
parinti(gheorghe,elizaveta,tatiana).
parinti(ionC,oxana,selena).
parinti(vladimir,elena,gheorgheJunior).
parinti(vladimir,elena,ionG).
parinti(vladimir,elena,nicolai).
parinti(ionI,tatiana,stefan).
parinti(ionI,tatiana,mircea).
tata(X,Z):-parinti(X,_,Z),barbat(X).
mama(Y,Z):-parinti(_,Y,Z),femeie(Y).
bunel(X,Z):-parinti(X,_,Y),(parinti(Y,_,Z);parinti(_,Y,Z)).
bunica(X,Z):-parinti(_,X,Y),(parinti(Y,_,Z);parinti(_,Y,Z)).
parinte(X,Y):-parinti(X,_,Y);parinti(_,X,Y).
frate(X,Y):-parinti(Z,W,X),parinti(Z,W,Y),barbat(X),not(X=Y).
sora(X,Y):-parinti(Z,W,X),parinti(Z,W,Y),femeie(X),not(X=Y).
matusa(X,Y):-parinte(Z,Y),(frate(X,Z);sora(X,Z)),femeie(X).
unchi(X,Y):-parinte(Z,Y),(frate(X,Z);sora(X,Z)),barbat(X).
verisori(X,Y):-parinte(Z,X),parinte(W,Y),(frate(Z,W);sora(Z,W)),not(X=Y).
parinti2(X,Y):-parinti(X, Y, _),!.
pereche(Barbat, Femeie):-parinti(Barbat,Femeie,_),barbat(Barbat),femeie(Femeie).
nora(Parinte, Nora):-femeie(Nora),parinte(Parinte, Sot),barbat(Sot),pereche(Sot, Nora).
ginere(Parinte, Ginere):- barbat(Ginere),parinte(Parinte, Sotie),femeie(Sotie),pereche(Ginere, Sotie).

Baze de cunostinte de calcularea minim si a celor copii care pot sa mearga in turneu.

%lab 2
%calculeaza min fara cut
min(X, Y) :- X =< Y, write(X).
min(X, Y) :- X > Y,write(Y).
%calculez minim cu cut verde
min1(X, Y) :- X =< Y,write("X="),write(X),!.
min1(X, Y) :- X > Y,write("Y="),write(Y).
%calculez minim cu cut rosu
min2(X, Y) :- X =< Y, write(X),!.
min2(X, Y) :- write(Y).
copil(peter,9).
copil(paul,10).
copil(chris,9).
copil(susan,9).
turneu(Copil1, Copil2) :- copil(Copil1, Virsta), copil(Copil2, Virsta),
not(Copil1 = Copil2), !.

Concluzii
Prolog este un limbaj potrivit pentru a putea modela un sistem inteligent artificial.
Mecanismul de backtracking al limbajului Prolog este foarte simplu dar, cum este
organizat acesta poate efectua un ir de operaii/algoritmi. n urma creerei acestui laborator
am neles mai bine crearea programelor in prolog i crearea unui program inteligent.