Prolog

Solo disponible en BuenasTareas
  • Páginas : 3 (537 palabras )
  • Descarga(s) : 0
  • Publicado : 29 de octubre de 2011
Leer documento completo
Vista previa del texto
PROgramación LOGica g PROLOG
Dr. Oldemar Rodríguez Rojas D Old R dí R j Escuela de Informática Universidad de Nacional

¿Dónde bajar? Strawberry PROLOG:
www.dobrev.com

PROLOG -> PROgrammingin LOGig Paradigma -> El lenguaje de la lógica p puede ser usado para programar p p g Padre de PROLOG -> Francés Alain Colmerauer Fue desarrollado en 1970 en la Universidad de Marseilles En el cursousaremos Strawberry PROLOG Versión 2.3 O OG ó La interfaz

Ejemplo 1:
le_gusta(elena,tenis). le_gusta(jony,football). le_gusta(tomas,baseball). le_gusta(erik,natacion). le_gusta(marco,tenis). legusta(marco,tenis). le_gusta(_,tenis). le_gusta(juan,X) :- le_gusta(tomas,X).

?-le_gusta(juan,tenis).

Las clausulas contienen hechos y reglas
Un hecho es: le_gusta(elena,tenis) que correspondea: "a elena le gusta el tenis" a tenis Una regla es: le_gusta(juan,X):-le_gusta(tomas,X). que corresponde a la regla lógica: a tomas le gusta X => a juan le gusta X o equivalentemente: a juan le gustaX si a tomas le gusta X

Dos Co das os Corridas:
?-le_gusta(juan,baseball) g (j , ) Yes. ?-le_g gusta(jony,tenis) (j y, ) Yes

Variables: a ab es
En la regla: g le_gusta(juan,X) :le_gusta(tomas,X). le gusta(juan X) :- le gusta(tomas X) aparece la variable X La variables deben comenzar con letra mayúscula.

Uso del fail
Cuando PROLOG tiene una meta interna encuentra solamente unasolución para cada p submeta y continua con la próxima submeta, por lo que encuentra solamente una solución. Cuando PROLOG tiene una submeta a la derecha de una regla también encuentra l t l ió solamenteuna solución. El uso del fail forzará el backtraking (reevaluación) en ambas situaciones con l ( l ió ) b it i lo que si se encontrarán todas las soluciones.

EJEMPLO: Versión sin failpadre(leonardo,katherine). padre(carlos,jason). p padre(carlos,marilyn). ( , y ) todos :padre(X,Y), padre(X Y) write(X), write(" es el padre de "), ( ), write(Y),nl. ?-todos. ?-todos

S Salida:
leonardo es...
tracking img