0% found this document useful (0 votes)
18 views5 pages

PLPF Probl Prolog

Uploaded by

Fifu One
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views5 pages

PLPF Probl Prolog

Uploaded by

Fifu One
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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