Prolog: el sistema - gpd.sip.ucm.esgpd.sip.ucm.es/jaime/docencia/pl/bloque1.pdf · [X+5, s(s(c))]...

4
Prolog: el sistema Disponible en: http: //www. swi-prolog. org/ para distintas plataformas. Posibilidades de interpretaci´ on/compilaci´ on. Habitualmente utilizamos el int´erprete. Consola con: Welcome to SWI-Prolog (Multi-threaded, Version 5. 6. 14) ... For help, use ?- help(Topic). or ?- apropos(Word). ?- Desde este prompt se lanzan objetivos terminados en . Para salir ?- halt. 7/27 Un programa. Parejas de baile Sabiendo los invitados que vendr´an a una fiesta, determinar posibles parejas de baile chico/chica. Escribimos en un archivo de texto ’parejas.pl’: chica(rosa). chica( laura) . chica( ana) . chico(pedro). chico(juan). chico(pablo). parej a( X, Y) : - chico( X) , chica(Y). Guardamos el archivo y lo consultamos (cargamos) desde el int´erprete: ?- [parejas]. o bien ?- consult(parejas). ?- consult(’ parejas. pl’ ). ?- [’ < path> /parejas. pl’ ] . 8/27

Transcript of Prolog: el sistema - gpd.sip.ucm.esgpd.sip.ucm.es/jaime/docencia/pl/bloque1.pdf · [X+5, s(s(c))]...

Page 1: Prolog: el sistema - gpd.sip.ucm.esgpd.sip.ucm.es/jaime/docencia/pl/bloque1.pdf · [X+5, s(s(c))] [el, [gato], [sobre, [el], tejado]] [] (lista vacia) La longitud de la lista es el

P rol og: e l si stem a

D i sp on i b l e en : http: / /www. s wi - prolog. org/ p a ra d i sti n ta sp l a ta form a s.

P osi b i l i d a d es d e i n terp reta ci on / com p i l a c i on .

H a b i tu a l m en te u ti l i zam os el i n ter p rete. Con sol a con :

Welc ome to SWI -Prolog ( Multi -threaded, Vers i on 5 . 6 . 1 4)

. . .

For help, us e ? - help( Topi c ) . or ? - apropos ( Word) . ? -

D esd e este prom p t se l a n za n ob jeti vos term i n a dos en .

P a ra sa l i r

? - halt .

7 / 27

U n program a . P a reja s d e b a i l e

Sa b i en do l os i n vi ta dos q u e ven d r a n a u n a fiesta , d eterm i n a r p osi b l esp a reja s d e b a i l e ch i co/ch i ca .

E scr i b i m os en u n a rch i vo d e texto ’ p a reja s. p l ’ :

chi c a( ros a) .

c hi c a( laura) .

c hi c a( ana) .

c hi c o ( pedro ) .

c hi c o ( j uan) .

c hi c o ( pablo ) .

pare j a( X, Y) : - c hi c o ( X) , c hi c a( Y) .

G u a rd am os el a rch i vo y l o con su l tam os ( ca rgam os) d esd e eli n ter p rete:

? - [ parej as ] .

o b i en

? - c ons ult( parej as ) . ? - c ons ult( ’ pare j as . pl ’ ) .

? - [ ’ < path> /parej as . pl ’ ] .

8 / 27

Page 2: Prolog: el sistema - gpd.sip.ucm.esgpd.sip.ucm.es/jaime/docencia/pl/bloque1.pdf · [X+5, s(s(c))] [el, [gato], [sobre, [el], tejado]] [] (lista vacia) La longitud de la lista es el

Resol vi en do ob jeti vos

Qu e resp u esta ( s) d eb em os ob ten ter p a ra l os si gu i en tes ob jeti vos:

? - pare j a( X, Y) .

? - pare j a( X, ana) .

? - pare j a( X, j uan) .

? - pare j a( lui s , Y) .

D esa r rol l a r e l a r b ol d e b u sq u ed a p a ra

? - pare j a( X, Y) .

9 / 27

Op era ci on es con n u m eros n a tu ra l es

H em os d efin i d o l a su m a p a ra n a tu ra l es represen ta dos con c ( cero)y s ( su cesor ) . D efin i r l a s si gu i en tes op era ci on es:

m u l ti p l i ca c i on

r esta (X − Y d eb e ser 0 si X < Y ) .

m en or (X es m en or q u e Y)

p oten ci a XY

d i vi si on en tera

fa ctor i a l

ca l cu l a r e l N -esi m o n u m ero d e l a ser i e d e fib on a cci

1 0 / 27

Page 3: Prolog: el sistema - gpd.sip.ucm.esgpd.sip.ucm.es/jaime/docencia/pl/bloque1.pdf · [X+5, s(s(c))] [el, [gato], [sobre, [el], tejado]] [] (lista vacia) La longitud de la lista es el

E stru ctu ra s d e d a tos. L i sta s

Se represen ta n u ti l i za n do term i n os com pu estos f ( t1 , . . . , tn ) ( p a ral os n a tu ra l es ya h em os u ti l i za d o u n a estr u ctu ra d e d a tos s( ) ) .

L a s l i sta s son u n a d e l a s estr u tu r a s m a s u ti l i za d a s en P rol og. Sonsecu en ci a s fin i ta s ( p ero d e l on gi tu d a rb i tr a r i a ) d e el em en tos. L os

el em en tos se escr i b en en tre corch etes [ y ] y sep a ra dos p or

com a s. E jem p l os:

[ a, b, c ]

[ X+5 , s ( s ( c ) ) ]

[ e l , [ gato ] , [ s obre , [ e l ] , te j ado ] ]

[ ] ( l i sta va ci a )

L a l on gi tu d d e l a l i sta es e l n u m ero d e el em en tos q u e ti en e( [ ] ti en e l on gi tu d 0) .

1 1 / 27

E stru ctu ra s d e d a tos. L i sta s I I

L a n ota ci on d e corch etes es a zu ca r si n ta cti co: P rol og p or d eb a jou ti l i za l os fu n ctores ( s ı m b ol os d e fu n ci on )

[ ] ( l i sta va c ı a , a r i d a d 0) y ’ . ’ ( d e a r i d a d 2) .

E n l os ejem p l os a n ter i ores ten em os:

[ a, b, c ] � . ( a, . ( b, . ( c , [ ] ) ) )

[ X+5 , s ( s ( c ) ) ] � . ( X+5 , . ( s ( s ( c ) ) , [ ] ) )

[ e l , [ gato ] , [ s obre , [ e l ] , te j ado ] ] � . ( e l ,

. ( . ( gato , [ ] ) , . ( . ( s obre , . ( . ( e l , [ ] ) , . ( te j ado ,

[ ] ) ) ) , [ ] ) ) )

( se ve m a s fa c i l en form a a rb orea )

1 2 / 27

Page 4: Prolog: el sistema - gpd.sip.ucm.esgpd.sip.ucm.es/jaime/docencia/pl/bloque1.pdf · [X+5, s(s(c))] [el, [gato], [sobre, [el], tejado]] [] (lista vacia) La longitud de la lista es el

E stru ctu ra s d e d a tos. L i sta s I I I

L a n ota ci on con el fu n ctor . es com p l i ca d a . H ay u n a n ota ci on

m a s com od a , r eem p l a za n do ’ . ’ p or e l op era dor i n fi jo |

[ ] si gu e i gu a l

. ( X, Xs ) se escr i b e com o [ X| Xs ]

E sta n ota ci on es u ti l p a r a d efin i r p red i ca dos sobre l i sta s. E s u ti la si m i l a r :

[ X����

cabeza ( elemento )

| Xs����

resto/cola ( lista )

]

P or ejem p l o:

[ a, b, c ] ≡ [ a| [ b| [ c | [ ] ] ] ] ≡ [ a����

cabeza

| [ b, c ]� �� �

resto

]

1 3 / 27

Perten en ci a a u n a l i sta

Qu erem os u n pred i ca do:

esta(X, Ys): := X pertenece a la lista Xs

es ta( X, [ X| Xs ] ) .

e s ta( X, [ Y| Xs ] ) : - e s ta( X, Xs ) .

( N ota : esta esta p red efin i d o en swi -p rol og com o m em b er )

Tam b i en p od em os u ti l i za r va r i a b l es a n on i m a s y escr i b i r :

es ta( X, [ X| ] ) .

e s ta( X, [ | Xs ] ) : - e s ta( X, Xs ) .

E jerc i c i o : u ti l i za n do esta d efin i r e l p red i ca do intersec(X,Xs, Ys): :=Xpertenece a ambas listas Xs e Ys.

P r egu n ta : q u e ob ten em os con el ob jeti vo esta(a , Xs)?

1 4 / 27