Loading…
Transcript

progenitor (teresa,jorge).

Reglas

Para todos X e Y,

X es descendiente de Y SI

Y es progenitor de X.

descendiente(X,Y) :- progenitor(Y,X).

Para todos X e Y,

SI Y es progenitor de X

Entonces X es descendiente de Y.

Infijo:

xfx no es asociativo

xfy de derecha a izquierda

yfx de izquierda a derecha

Prefijo:

fx no es asociativo

fy de izquierda a derecha

Sufijo:

xf no es asociativo

yf de derecha a izquierda

1200 xfx -->, :-

1200 fx :-, ?-

1150 fx dynamic, multifile, module_transparent,

discontiguous, volatile, initialization

1100 xfy ;, |

1050 xfy ->

1000 xfy ,

954 xfy \

900 fy \+

900 fx ~

700 xfx <, =, =.., =@=, =:=, =<, ==, =\=, >, >=,

@<, @=<, @>, @>=, \=, \==, is

600 xfy :

500 yfx +, -, /\, \/, xor

500 fx +, -, ?, \

400 yfx *, /, //, <<, >>, mod, rem

200 xfx **

200 xfy ^

Prolog provee ciertos predicados predefinidos

para realizar operaciones aritméticas básicas.

+ Adición

- Sustracción

* Multiplicación

/ División

mod Módulo

div División entera

. . . . . .

?- X = 1 + 2, display(X), Y is X.

+(1, 2)

X = 1+2

Y = 3

TRUE

Operadores relacionales predefinidos

X > YX es mayor que Y

X < YX es menor que Y

X >= YX es mayor o igual que Y

X =< YX es menor o igual que Y

X =:= YLos valores de X e Y son iguales

X =\= YLos valores de X e Y no son iguales

Consultar un programa

Cualquier programa en Prolog tiene que estar escrito en un fichero de texto plano (sin formato). La

manera mas sencilla es usar el Bloc de Notas. Dicho archivo debe poseer la extensin ”.pl” para indicar

que contiene codigo fuente de Prolog

Variables:

El identificador de una variable tendr´a que tener su primera letra en may´usculas.

Ej: X, Atapuerca, Cobaltina, RADgtfCdf

Constantes:

La primera letra de una constante deber´a estar escrita en min´usculas.

Ej: a, incienso, roberto, rADgtfCdf

Tambi´en se consideran constantes a los n´umeros,

Ej: 1, 5.02, 0.7

las palabras entre comillas simples

Ej: ’a’, ’A’, ’a a’

y la lista vac´a [ ].

Funciones:

Al igual que las constantes, su primera letra debe ser una min´uscula. Deber´a estar seguido de un

conjunto de t´erminos (otras funciones, variables o constantes) encerrados entre par´entesis.

Ej: f(c,X), conc arbol(Hijo Izq, Raiz, Hijo Der), rADgtfCdf(RADgtfCdf, rADgtfCdf)

Predicados:

Su sintaxis es la misma que la de las funciones aunque, por su localizaci´on dentro de la cl´ausula (es

decir, dentro del programa Prolog), el compilador los identificar´a como tal, y no como funciones.

Ej: f(c,X), conc arbol(Hijo Izq, Raiz, Hijo Der), rADgtfCdf(RADgtfCdf, rADgtfCdf)

Tambi´en existe la posibilidad de tener predicados 0-arios

Hechos:

Son cl´ausulas de Horn que poseen un ´unico predicado en la cabeza y ninguno en el cuerpo. Tienen

la siguiente forma en sintaxis de l´ogica de primer orden:

P

En Prolog no se escribe la flecha sino que se pone un punto al final:

p.

donde p es un predicado y tiene que seguir su sintaxis. Ej:

padre(aaron, maria).

compositor(shostakovich).

shostakovich(compositor).

Reglas:

Son cl´ausulas de Horn que poseen un ´unico predicado en la cabeza y uno o m´as en el cuerpo.

Tienen la siguiente pinta:

P Q1,Q2,Q3 escritos en sintaxis clausular o

P Q1 ^ Q2 ^ Q3 escritos en sintaxis de l´ogica de primer orden.

En Prolog la flecha se sustituye por ”:-”, las conectivas conjuntivas se escriben como comas ”,” y

la regla termina en punto:

p :- q1, q2, q3.

donde, al igual que los hechos, p y q1, q2 y q3 son predicados. Ej:

cuadrado(X) :- poligono(X), numero_lados(X,4).

Objetivos:

Son cl´ausulas de Horn que no poseen ning´un predicado en su cabeza:

Q1,Q2,Q3

Los predicados se escriben separados por comas y terminados en punto. S´olo pueden sen lanzados

desde el shell de SWI-Prolog.

?- padre(X, Y),padre(Y, Z).

Grafos

Es importante recordar que

un mismo grafo puede tener

diferentes representaciones gráficas

Gracias

un grafo es un conjunto de objetos llamados vértices o nodos unidos por enlaces llamados aristas o arcos, que permiten representar relaciones binarias entre elementos de un conjunto.

?- progenitor (jorge,miguel)

False

?- progenitor (teresa,raquel)

True

Pedro

Maria

Ver la lista de comandos

elena

Teresa

Que es Prolog?

Jorge

Raquel

Es un lenguaje de programacion practico para especificar

tareas utilizando la logica de predicados en lugar de la

programacion convencional.

Miguel

progenitor (pedro, teresa).

False

progenitor (maria, teresa).

X= teresa;

Modo depuracion

Sintaxis

progenitor (maria, elena).

Fundación Unoversitaria

San Martín

progenitor (teresa,raquel).

?- progenitor (X,raquel).

Programar en Prolog.

progenitor (rauel,miguel).

Mercedes Rincon

Declarar echos sobre objetos y sus relaciones

Declarar reglas sobre los objetos y sus relaciones

Guillermo Fuquen

Hacer preguntas sobre los objetos y sus relaciones

Prolog

Ejemplos

"Raquel es hija de teresa"

hija (raquel, teresa).Declarar echos sobre objetos y sus relaciones

Objetos: raqule, teresa.

relacion: hija

False

Y= jorge;

?- progenit0r(teresa,Y).

Comandos Basicos

X

Tipo de operador

Swi Prolog

Progenitor

Descendiente

h

Y

Trace

mi_prog

Operadores predefinidos

Aritmética