Académique Documents
Professionnel Documents
Culture Documents
Contenido
El Lenguaje Prolog ........................................................................................................................ 2 Elementos del Lenguajes............................................................................................................... 2 Estructura del Programa: ........................................................................................................... 2 Tipo de Datos: ........................................................................................................................... 2 Constantes: ............................................................................................................................... 2 Variables:................................................................................................................................... 2 Functor/Predicado: .................................................................................................................... 2 Hechos: ......................................................................................................................................3 Relaciones: .................................................................................................................................3 Reglas:........................................................................................................................................3 Operadores: .............................................................................................................................. 4 Sintaxis: ..................................................................................................................................... 4 Ejemplos Vistos en Clase ............................................................................................................... 6
Paradigmas y Lenguajes
Bolilla 4
Pagina 1
El Lenguaje Prolog
Prolog es un lenguaje perteneciente al paradigma declarativo lgico, en realidad es El lenguaje de este paradigma ya que es el ms utilizado y difundido, es uso frecuente en Inteligencia Artificial donde la manipulacin de smbolos y la inferencia acerca de ellos es una tarea comn. Prolog consiste en una serie de reglas y hechos. Un programa que se ejecuta mediante la presentacin de consultas y ver si esto se puede probar en contra de estas reglas conocidas y los hechos. Para las clases prcticas se utilizara SWI-Prolog.
Tipo de Datos:
Prolog no es un lenguaje Tipado, esto quiere decir que no existen tipos de datos para cada una de las variables del programa. La misma variable puede contener cualquier tipo, ya sea texto, nmeros o un valor booleano (Verdadero o Falso).
Constantes:
Las constantes o tomos son smbolos que representa algo dentro de una relacin o hecho. Tcnicamente son cadenas de texto, dgitos o guiones bajos "_", deben comenzar con minscula, pero puede ser tambin una cadena que comienza con una letra mayscula o incluir espacios en blanco, pero debe estar encerrado entre comillas. As, "Sebastian".
Variables:
Las Variables no tienen tipo, se utilizan tanto en las consultas, como en la definicin de reglas. Deben siempre comenzar con mayscula.
Functor/Predicado:
El Functor es el nombre de un predicado o regla. Debe comenzar en minscula
Paradigmas y Lenguajes
Bolilla 4
Pagina 2
Hechos:
Los hechos son sentencias que definen una propiedad de un objeto. Constan de dos partes primero el predicado que dar nombre a la propiedad y luego entre parntesis el objeto. Por ejemplo. hombre('Lautaro'). hombre('Sebastian'). mujer('Carolina'). mujer('Victoria'). Estos hechos definen que los objetos Sebastian y Lautaro son hombre, y que Victoria y Carolina Mujeres.
Relaciones:
Las Relaciones determinan una relacin entre objetos. Sus partes son el predicado que define la relacin y entre parntesis los objetos separados por coma. Por Ejemplo. padre('Sebastian','Lautaro'). padre('Sebastian','Victoria'). Estas relaciones determinan que Sebastian es padre de Lautaro y Victoria.
Reglas:
Las reglas permiten definir nuevas propiedades o relaciones a traves de la utilizacin de los hechos, relaciones y otras reglas ya declaradas. Una regla consiste en una cabeza (un predicado) y un cuerpo (una secuencia de predicados separados por comas o punto y coma). Cabeza y cuerpo estn separadas por el signo: - . Existen Reglas: Conjuntivas: son aquellas en que todos los predicados del cuerpo deben ser verdad, para que se cumpla la regla
Paradigmas y Lenguajes
Bolilla 4
Pagina 3
Disyuntivas son aquellas en que solo basta que uno de sus miembros se verdad para cumplir la regla.
Operadores:
Operadores aritmticos +, - , * , / // : Cociente de la divisin (divisin entera) mod : resto de la divisin (mdulo) ^ : Potencia (primer operando elevado a segundo operando) Operadores relacionales >,<,>=,<= Operadores de igualdad =: unificacin. Es verdadero si ambos operandos unifican, en cuyo caso se realiza la unificacin. \= :no unificacin. Es verdadero si ambos operandos NO unifican, en cuyo caso NO se realiza la unificacin. is :evaluador. Se utiliza para evaluar las expresiones aritmticas y funciones. Evala la parte de la derecha y unifica a la parte izquierda. Si no se usa el is, las expresiones se mantienen en su forma original ( X=3+3 en lugar de X=6 ). = = :significa es exactamente igual que. Compara trminos sin evaluar expresiones.(no unifica). Ambos trminos tienen que estar instanciados. \= = :es falso cuando dos trminos son exactamente iguales. (no unifica). =:= :mismo valor. Evala los dos operandos, a derecha y a izquierda, y es verdadero si los valores obtenidos son iguales. (no unifica).
Listas:
Una lista en Prolog es una secuencia de un nmero arbitrario de trminos separados por comas y encerrados entre corchetes. Por ejemplo: Paradigmas y Lenguajes Bolilla 4 Pagina 4
[a] es una lista compuesta de un elemento. [a, b] es una lista formada por dos elementos. [a, X, padre (X, Alejo)] es una lista compuesta de un elemento, una variable, y un trmino compuesto. [[a, b], [[[padre (X, Alejo)]]]] es una lista formada por dos sublistas. [] es el tomo que representa la lista vaca. Aunque no es evidente a partir de estos ejemplos, las listas de Prolog son trminos compuestos y la notacin de corchetes cuadrados es slo un atajo. El functor o predicado lista es un punto: . y [a, b] es equivalente a la expresin. (a,. (b, [])). Se componen de dos partes: una cabeza, el primer elemento de una lista, y una cola, la lista queda sin su primer elemento, la cabeza y la cola se corresponden con el primer y segundo argumento de la functor lista. La notacin "|" divide una lista en su cabeza y la cola, y [H | T] es equivalente a .(H, T). La divisin de una lista nos permite acceder a cualquier elemento de la misma y por lo tanto es un operacin muy frecuente. Estos son algunos ejemplos de su uso: ? - [A, b] = [H | T]. H = A, T = [b] ? - [A] = [H | T]. H = A, T = [] ? - [A, [b]] = [H | T]. H = A, T = [[b]] ? - [A, b, c, d] = [X, Y | T]. X = A, Y = b, T = [c, d] ? - [[A, b, c], d, e] = [H | T]. H = [a, b, c], T = [d, e]
Paradigmas y Lenguajes
Bolilla 4
Pagina 5
Hechos.
hombre('Lautaro'). hombre('Sebastian'). hombre('Alejo'). hombre('Martin'). hombre('Ignacio'). hombre('Luis'). hombre('Lalo'). mujer('Carolina'). mujer('Victoria'). mujer('Constanza'). mujer('Patricia'). mujer('Jimena'). mujer('Fiorella'). mujer('Laura'). padre('Sebastian','Lautaro'). padre('Sebastian','Victoria'). padre('Sebastian','Constanza'). padre('Carolina','Lautaro'). padre('Carolina','Alejo'). padre('Carolina','Victoria'). padre('Carolina','Constanza'). padre('Patricia','Sebastian'). padre('Lalo','Sebastian'). padre('Luis','Carolina'). padre('Laura','Carolina'). padre('Luis','Jimena'). padre('Laura','Jimena'). padre('Martin','Ignacio'). padre('Martin','Fiorella'). padre('Jimena','Ignacio'). padre('Jimena','Fiorella'). diferente(A,B):-not(A=B). hijo(A,B):-padre(B,A),hombre(B). hija(A,B):-padre(B,A),mujer(A). madre(A,B):-padre(A,B),mujer(A). nieto(A,B):-padre(B,C),padre(C,A),hombre(A). hermano(A,B):-padre(C,A),padre(C,B),diferente(A,B). primo(A,B):-padre(C,A),padre(D,B),hermano(C,D),diferente(D,C). tio(A,B):-padre(C,B),hermano(C,A),hombre(A). abuelo(A,B):-nieto(B,A). tia(A,B):-padre(C,B),hermano(C,A),mujer(A). sobrino(A,B):-hijo(A,C),hermano(C,B),hombre(A). Bolilla 4 Pagina 6
Relaciones
Paradigmas y Lenguajes
Paradigmas y Lenguajes
Bolilla 4
Pagina 7