Sunteți pe pagina 1din 6

Ministerul Educaţiei 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


A verificat: Lazu Victoria

Chişinău 2015
Scopul lucrării
 Însuşirea principiilor fundamentale de programare a limbajului Prolog
 Se va citi breviarul teoretic. Se atrage atenția asupra faptului că toate cunoștințele
din această lucrare vor fi necesare și la efectuarea celorlalte lucrări.
 Se vor studia exemplele propuse, încercând găsirea altor posibilități de soluționare a
acestora. Se vor utiliza și alte scopuri(interogări) pentru a testa definițiile
predicatelor introduse.
 Se va elabora un arbore genealogic şi o bază de cunoştinţe Prolog care ar descrie
relaţiile existente în familia dumneavoastră proprie care ar permite cercetarea
acestor relaţii prin utilizarea scopurilor externe. Arborele genealogic elaborat trebuie
să conţină cel puţin trei niveluri. Pentru cercetarea relaţiilor existente în familie se
vor utiliza nu mai puţin de şase scopuri.
 Însușirea noțiunilor privind mecanismele specifice limbajului Prolog pentru
controlul procesului de backtracking: cut și fail
 Citiţi breviarul teoretic. Se atrage atenţia asupra faptului că toate cunoştinţele din
această lucrare vor fi necesare şi la efectuarea celorlalte lucrări.
 Lansaţi la executare programul elaborat în lucrarea 1 şi cercetaţi schimbările
semanticii procedurale:
o prin schimbarea ordinii propoziţiilor – fapte;
o prin schimbarea ordinii propoziţiilor - reguli; (două variante)
o prin schimbarea subscopurilor în reguli; (două variante)
o trageţi concluzii.
 Rezolvaţi următoarele probleme propuse şi urmăriţi execuţia lor corectă.
o Elaboraţi şi testaţi un program pentru determinarea unei valori minime din
două numere (X şi Y), fără utilizarea predicatului cut.
o Elaboraţi şi testaţi un program pentru determinarea unei valori minime din
două numere (X şi Y), utilizând predicatul cut roşu şi cut verde.
o Care vor fi răspunsurile programului
▪ р( 1).
▪ р( 2) :- !.
▪ р( 3).
◦ Efectuaţi o analiză comparativă între utilizarea predicatelor cut în spaţiul bazei de
cunoştinţe şi spaţiul scopurilor pentru întrebările 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 aceeaşi vârstă. Fie
următorii copii şi vârstele lor: copil(peter,9). copil(paul,10). copil(chris,9).
copil(susan,9). Definiţi un predicat din care rezultă toate perechile de copii care pot juca
un meci într-un turneu de tenis.
 Introduceţi schimbările corespunzătoare în programul din punctul 2., utilizând cut
verde cel puţin în două reguli din baza de cunoştinţe.
 Introduceţi schimbările corespunzătoare în programul din punctul 2., utilizând cut
roşu în reguli din baza de cunoştinţe. Trageţi concluzii.
 Prezentaţi darea de seamă.
Boris Lidia Gheorghe Elizaveta

Oxana IonC Elena Vladimi Tatian IonI


r a

Selena Gherghe IonG NicolaieG Stefan Mirce


Junior a
Baza de cunoștințe ș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 operații/algoritmi. În urma creerei acestui laborator
am înțeles mai bine crearea programelor in prolog și crearea unui program inteligent.