lab 5
DESCRIPTION
LAB 5TRANSCRIPT
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