LAB 5

download LAB 5

of 10

description

LAB 5

Transcript of LAB 5

Ethan Frome

Inteligen Artificial PROLOG Lucrarea de laborator nr. 5

Aritmetica, comparaii

Expresii aritmeticeExpresiile aritmetice constau din operanzi (constante numerice i variabile), operatori (+, -, *, /, div i mod) i paranteze. Simbolurile din partea dreapt a semnului = ( care este predicatul = ) de mai jos formeaz o expresie aritmetic:

A = 1 + 6 / (11 + 3) * Z

Valoarea unei expresii poate fi calculat dac toate variabilele sunt legate la momentul evalurii. Calculele se fac ntr-o anumit ordine determinat de prioritatea operatorilor aritmetici: operatorii cu cea mai mare prioritate sunt evaluai primii.

Operaii aritmeticeTipul rezultatului unei operaii aritmetice este dat de urmatorul tabel:

Operand1OperatorOperand2Rezultat

ntreg+,-,*ntregntreg

real+,-,*ntregreal

ntreg+,-,*realreal

real+,-,*realreal

ntreg,real/ntreg,realreal

ntregdivntregntreg

ntregmodntregntreg

Ordinea evalurii

1. Subexpresiile din paranteze se evalueaz primele.

2. Apoi, se execut nmulirile (*) sau mpririle (/, div, mod), lucrnd de la stnga la dreapta.

3. Apoi se execut adunrile (+) i scderile (-), lucrnd de la stnga la dreapta.

Funcii i predicateFunciiExplicaie

X mod Yrestul mpririi lui X la Y

X div Yctul mpririi lui X la Y

abs(X)valoarea absolut a lui X

cos(X), sin(X), tan(X)

funciile trigonometrice cer ca X s fie legat de o valoare reprezentnd unghiul n radiani

arctan(X)arctangenta valorii reale de care e legata X

exp(Xe la puterea X

ln(X)logaritm din X, n baza e

log(X)logaritm din X, n baza 10

sqrt(X)rdcina ptrat a lui X

random(X)leag X de o valoare real aleatoare, 0 Yes;

(i,o) - atribuie F:= N! : factorial(4,F) --> F=24;

(o,i) - gsete acel N pt. care N! = F : pentru acest caz trebuie construit alt program;

(o,o) - ? situaia este absurd factorial(N,R), se obine eroare de compilare.

S regndim problema pentru cazul (o,i):Varianta clasic pentru limbajele procedurale este:

i=2;

while(m mod i=0) do

begin

m:=m div i;

i:=i+1;

end;

if (m=1) then n:=i-1;

Varianta PROLOG este:

domains

n = real

f = integer

predicates

fact(f,f)

fact1(f,f,f)

clauses

fact(0,1).

fact(N,M) :- I=2, fact1(N,M,I).

fact1(N,M,I) :- M mod I = 0,

M1=M div I, I1=I+1,

fact1(N,M1,I1).

fact1(N,1,I):-N=I-1.

Tem 8Scriei un predicat care rezolv problema ridicrii la putere:

power(X,Y,Z) unde Z = X la puterea Y.PAGE 1