Sunteți pe pagina 1din 7

Ministerul Educaiei al Republicii Moldova

Facultatea Calculatoare Informatic i Microelectronic


Catedra Informatica Aplicat

Lucrare de Laborator Nr.2


Sisteme de inteligen artificial

Chiinau 2012
Codul Sursa :

Scopul lucrrii: De a elabora un program cu ajutorul mijloacelor limbajului


Prolog pentru a rezolva funcii recursive i de a utiliza eficient tierea verde i
roie.
I. S se scrie predicatele Prolog, care ar realiza urmtoarele funcii recursive:

x 2 dac t 0

f x, y, t y 2 dac t 1
f x, y, t 2 dac t 1

Codul sursa :
PREDICATES
f(integer,integer,integer,integer)
CLAUSES
f(X,_,T,F):-T=0,F=X*X.
f(_,Y,Y,F):-Y=1,F=Y*Y.
f(X,Y,T,F):-T>1,TT=T-3,f(X,Y,TT,F).
GOAL
write("introduceti X,Y,T"),
readint(X),
readint(Y),
readint(T),
f(X,Y,T,F),
write("Valoarea funtiei este ",F)

Fig. 1 Funcia recirsiv

II. Fie urmtorul program ce realizeaz o funcie viteza(X,Y), unde X este


variabila de intrare, iar al doilea argument este variabila de ieire.
viteza(X, mica) :- X<=30.
viteza(X, medie):- 30<X<50.
viteza(X, mare) :- X=>50.
Codul surs
PREDICATES
viteza(integer,symbol).
CLAUSES
viteza(X,mare):-X>=50.
viteza(X,mica):-X<=30,!.
viteza(X,medie):-X>30,X<50,!.
%viteza(_,mare).
%viteza(X,mica):-X<=30,!.
%viteza(X,medie):-X>30,X<50,!.
Diferena ntre tiere roie este mai rapid deoarece la schimbarea cu locul al clauselor
mai bine spus a ultimii va da o greeal adic dou rspunsuri din motiv c lipsete condiia dar
n caz perfect avem ctig de timp la execuia programului.

Fig.2 Utilizarea tierii

III.

De elaborat un program n limbajul PROLOG, care conine o baza de


fapte de automobile la un AUTO-magazin.

1. De verificat programul cu ntrebri de tipul:


care sunt automobilele de culoarea neagr

care sunt automobilele de anumit marc i serie


care sunt automobilele cu pretul mai mic ca 3000
care sunt automobilele de culoarea neagr, cu anul mai mare ca 1995 i
cu preul mai mic ca 4500
care sunt automobilele cu volumul motorului intre 2.0 si 3.0 de culoarea
neagra sau roie.
2. De adugat o regul care ar determina ce nseamn un automobil sportiv:
sport_car ( Marca, Seria).
3. De adugat n program urmtoarele definiii de tipuri de automobile:
automobil_de_familie
automobil_de_prestigiu
automobil_pentru_dame
automobil_de_anticariat
Codul surs
DOMAINS
marca,seria,combustibil,cutie,culoarea,accesorii=SYMBOL
anul,viteza,loc=integer
volumul,pretul=real
PREDICATES
auto(marca,seria,anul,viteza,combustibil,cutie,culoarea,volumul,accesorii,pretul,loc).
%autoaa(marca,seria,anul,viteza,combustibil,cutie,culoarea,volumul,accesorii,pretul,loc).
auto_familie.
auto_anticar.
auto_prest.
auto_sport.
auto_dame.
CLAUSES
auto(bmw,z2,2000,160,diesel,automat,roz,1.3,yes,3000,2).
auto(bmw,d520,1990,260,benzin,manual,alb,4,yes,6000,4).
auto(ford,transit,1986,180,benzin,manual,alb,2.1,yes,4000,4).
auto(wv,golf,1996,180,benzin,manual,negru,3.1,yes,9000,5).
auto(honda,civic,2008,280,benzin,automat,negru,2.1,yes,6000,4).
auto(ferrari,laguna,2010,260,benzin,automat,rosu,3.5,yes,360000,2).
auto(ciaika,z22,1948,80,benzin,manual,negru,1.1,no,50000,4).
auto(bentley,romeo,2010,220,benzin,automat,verde,3.0,yes,120000,2).
auto(ford,mustang,2006,260,benzin,automat,alb,3.0,yes,30000,2).
auto(mitsubishi,lancerX10,2012,200,benzin,automat,galben,4.3,yes,14000,2).
auto(wv,miniven,1998,180,hibrid,manual,albastru,3.3,no,10000,6).

%autoaa(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret,Loc):auto(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret),Cul=negru,write(Ma,' ',Se,' ',An,' ',Vit,' ',Com,'


',Cut,' ',Cul,' ',Vol,' ',Acc,' ',Pret,' ',Loc),nl,fail.
%autoaa(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret,Loc):auto(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret),Cul=rosu,Vol>2.0,Vol<3.0,write(Ma,' ',Se,' ',An,'
',Vit,' ',Com,' ',Cut,' ',Cul,' ',Vol,' ',Acc,' ',Pret,' ',Loc),nl,fail.

%autoaa(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret,Loc):auto(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret),Cul=negru,Vol>2.0,Vol<3.0,write(Ma,' ',Se,'
',An,' ',Vit,' ',Com,' ',Cut,' ',Cul,' ',Vol,' ',Acc,' ',Pret,' ',Loc),nl,fail.
%autoaa(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret,Loc):auto(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret),Cul=negru,An>1995,Vol>2.0,Vol<3.0,Pret<2000,
write(Ma,' ',Se,' ',An,' ',Vit,' ',Com,' ',Cut,' ',Cul,' ',Vol,' ',Acc,' ',Pret,' ',Loc),nl,fail.
%------------auto_familie:auto(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret,Loc),Vol>3.0,Vit<200,Cut=manual,Loc>4,write(
Ma,' ',Se,' ',An,' ',Vit,' ',Com,' ',Cut,' ',Cul,' ',Vol,' ',Acc,' ',Pret,' ',Loc),nl,fail.
auto_anticar:auto(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret,Loc),An<1950,Vit<100,Cut=manual,Pret>40000,
write(Ma,' ',Se,' ',An,' ',Vit,' ',Com,' ',Cut,' ',Cul,' ',Vol,' ',Acc,' ',Pret,' ',Loc),nl,fail.
auto_prest:auto(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret,Loc),An>2005,Vit>200,Cut=automat,Pret>11000
0,Acc=yes,write(Ma,' ',Se,' ',An,' ',Vit,' ',Com,' ',Cut,' ',Cul,' ',Vol,' ',Acc,' ',Pret,' ',Loc),nl,fail.
auto_sport:auto(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret,Loc),An>2000,Vit>180,Cut=automat,Vol>2.0,Ac
c=yes,Pret<20000,write(Ma,' ',Se,' ',An,' ',Vit,' ',Com,' ',Cut,' ',Cul,' ',Vol,' ',Acc,' ',Pret,'
',Loc),nl,fail.
auto_dame:auto(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret,Loc),An>1990,Vit<200,Cut=automat,Vol<2.0,Ac
c=yes,Cul=roz,write(Ma,' ',Se,' ',An,' ',Vit,' ',Com,' ',Cut,' ',Cul,' ',Vol,' ',Acc,' ',Pret,' ',Loc),nl,fail.
GOAL
%autoaa(Ma,Se,An,Vit,Com,Cut,Cul,Vol,Acc,Pret).
%auto_anticar.
%auto_prest.
%auto_sport.
%auto_dame.
auto_familie

Rezultatele programului:

Fig. 3 Maini de anticariat.

Fig. 4 Maini de prestigiu.

Fig. 5 Maini de sport.

Fig. 6 Maini pentru dame

Fig. 7 Maini de familie


Concluzie:
n efectuarea lucrrii de laborator ntrit cunotinele asupra funciilor recursive, am
analizat avantajele i dezavantajele ale tierii verzi i roii. n a treia parte a lucrrii am efectuat
reguli cu diferite tipuri maini difereniindu-le prin caracteristicile lor