Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

·

Sectiuni
domains declara lintele
se var
i
Nume-string
Presume-string
Lista = integer
*

database-studenti - se declara baza de date dinamica


Studenti/Nume ,
Presume)

predicates - se declara
&
predicatele ,
ce contin
depinde de tipul de problema
clauses -se defines predicatele
fapte predicate intotdeauna
=
odev
.
-

reguli introduce -(dacal


-

= cr :

goal e

pt .
scop intern

Tipuri de problema
·
Liste :
lista-integer *

E : - afisare , member al listei

domains
Hista-integer
*

Elem-integer
predicates
membe /Elem ,
Lista) sau
/integer , Lista) Far Elem in domains
afisare (Lista)

clauses

Lapto-member
~

, dacesteprimule
e very e
autom in

[ afisare
.

-
afirare /(3) : -1 Estei
-

..

((A Lista)) : write (A , "v") fisare( Lista)


~

regula a
-

,
. ·
>
- ur elem
,
afisare , membr al listei , concataz liste ,
elimdin lista

domains

Lista-integer *
Elem-integer
predicates ↓
wr .
elem (Lista
, integer/
afisare (Lista)
concert (Lista , Lista Lista) ,

Clim
(integer Lista , , Lista) elimina elem din lista si amane vestrel
Lista) listen
member
(integer ,

clauses
we dam ((3 0) .

~_ elem ((-1<] N) : -

m -
elem ( N1) ,
N = N1 + 1 ·

, ,

member (X ,
[X1 _
]) .
dac este primul elem
member (X -12) : -

member(X , 1 autom in restul


,
.

listei
afirare /(3) : -1 ..

afisare((X1 () write (X "v") : -

, ,
afisane/7) .

concat (11 ,
(3 , 4).
concat([) 12 (2) , ,
·

concat((XIR] , (2 (X(R1]) : =

concat(R L R1)
, ,
·
,

elim (X &
(XIR] ,
R) .

eim (X , (Y1R] , <Y , R1]) : =

elim(X ,
R
,
RI) ·

>
-
palindrom include inversare

inversare (Lista Lista , Listal ,

imv(Lista Listal ,

palindrom (Listal

inv(11 ,
R) : -
inversare(<1 , (3 , R) .

inversare((] , 41
,
(1) ·

inversee ([X/L] ,
(2
,
R) : -

Inversee (C ,
(X 122] R) ,
.

-inv( , )
palindrom() : ·

>
-
interclasare

noimicsaregal (integer integer) ,

interds/Lista Lista Listal , ,

maimicsanegal (X Y) ,
: -XL =
Y .

(X X)
maimicsaregal ,
.

intends (1) , L , 2) ·

interes /L , [] L) ·

,
intends ([H1lT1] , [H2 , T2] CHIIT])
Maimicsaregal CH, e
: -
I
,

interd (T1 ,
CH21T2
interes (CH1lT1] , (H2pT2) , CH2IT]) : - H1 > H2
,
intends)[Hilt1] , T2, T) .

&: citit de la tastatua :


readen

.
pt a verifica apartementa
pt .
a swie into-un fisier sou baza de date
S

· Fisiere
7
file f = > name
Fiser INF) name .
Fis ,
dat s nume simbolic fis
INSF)
- weave si adargare date (fis Studenti) (scop intern) .

domains
file f =

predicates
creare

citive - Sir
(string)
Start

clauses
creave : -write ("Date stud : ") , openwrite (f ,
"studenti dat &
witedevice (f) ,
readhe(s) ,
citire-sin(s) ,
write device(sweet ,
close file (f) .

citire - sir ("#") : -

!.
citive-sir (5) : -

write(s) Needle/s1) ,
citive-sir (S1)
,
.

start : -creare .

>
-
afisare contnut
afisare
citire-linie

aficare -write /"Continut ") read If "Studenti dat')


open
: :
, , ,

readdevice /f) citive-line , close file (f), readdevice (keyboard) .

ctive-linie -not /e0f(f)) , readln(s) :


,
write(s)
,
citive-linie
.

citive linie -eof (f).


-
:

>
-
predicate predefinite
openwrite (NF losefile (NF)
,
NSF) , open
read
, openappend &
deschide fis pt Inchide fis.
.
Dnieve citire
adargone
readdevice (NF) ,
writedevice
,
laf
redirecteaz op. de wine snieve daca am
ajune
la 17 fis
in
Fis
·
Baza de date dinamica
>
-
predicate predefinite :

numeBD) inceputul
asserta ( < fapt ,
<
coanga la BD

paz cuenta
asset 1 -n -1 im
assert - & la sf .
3D
retract) - stege fapt din BA
-a
un

>
-
def .
BD
adangane de fapte la st BA

domains consult (numeBD)


Nume-string citexte fapte dints-un fis
Presence-string save knumefiss <numeBA)
,

salveaza datele bazei in


fis
database-student
Student (Nume Presume) ,
=
fapta

predicatean
creare

adangore (string string) ,

causes
reave : -write ("Date stud ") :
,
write /"Nume") readle (Nume)
, ,

write /"Pren") readle (Pren), Pren) write /"Continuati ! (d/n)")


,
, adaugare(Nume , ,

readchar(opt) write(opt) opt 'd'


S

,
=
,
creare
,
.

adargare (N P) -assertz (student (N , P) .


.

:
,

Start : -create .

Definite :

Prolog-lb descriptiv .
bazat pe
logica ou
pred ,
deod . I

Program Prolog secuenta de = o clauze = le


compune dints-un predicat umat
M sou

permite existente
nu de
agumente fe logica =
.
cone descrierea relativlor
&
intre obietele problemei

Op logic
.
: SAU ; Sio NOT not))

de date elementare real (2 6)


Tipuvi char
integer string symbol (pt
: :
, , , , .
un
,

complexe : liste
Sg .
cur .
(
Continuare linte

>
- minim bista (maxim este invers)
domains
lista-integer *

predicates
minim (lista ,
integer
clauses
minim([X Y] , X] : X Y , . ,
=
=

minim([X , Y3 , y3 : = x > Y , %.
minim([H/X] Y1 : minim (X Y) -

,
Hx =
Y !.
, ,

minim (CH/X] H) := minim IX , Y) HY !·


, ,

Probleme simple

>
-
factorial
predicates
fact (integer integer ,

clauses
fact (0 ,
11 .

(X , N) fact (x1 , N1)


fact : X1 = X 1 N = X + N1
-
-

, ,

cmmde
>
si comma
-

predicates
modulo /in are
,integer iinte
ger
,
mude (in nteger)
-eger ,

ommuc ( in
-eger ,
Y wh
-eger , nteger)
i

clauses
modula (x 4 , ,
2) : -

X < .
Y
modula (X Y z) ,
: -
X) =
Y
,
X1 = X- Y modula (X1 Y , z)
, , , .

mmde (X , 0 , X) .

ammdc(X Y C) : -
modulo (X Y 2) crumde(y z C).
, , , ,
, , ,

crummc(X Y c) : - aude (X , Y A) ,
C = (x Y)/A
*
.
, , ,

You might also like