Vous êtes sur la page 1sur 8

Paradigmas y Lenguajes

Apunte de Ctedra Unidad IV Prctica


Universidad Nacional de La Rioja Lic. Sebastin Torralba Lic. Mnica Gimnez

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.

Elementos del Lenguajes


Estructura del Programa:
Los programas escritos en Prolog estn basados en hechos, relaciones o predicados y reglas que se almacenan en unos archivos de extensin .pl para despus cargarlos en el intrprete para ser consultados.

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

Ejemplos Vistos en Clase


Arbol Genealogico

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

Reglas Simples Reglas Conjuntivas

Paradigmas y Lenguajes

Reglas Disyuntivas Reglas con Listas

sobrina(A,B):-hija(A,C),hermano(C,B),mujer(A).v esposos(A,B):-hijo(C,A),hijo(C,B);hija(D,A),hija(D,B). sobrinos(A,B):-sobrina(A,B);sobrino(A,B). hombres([]). hombres([H|T]):-hombre(H),hombres(T). noPertenece(_,[]). noPertenece(X,[H|T]):-X\=H,noPertenece(X,T). padres([]). padres([H|T]):-padre(H,_),padres(T).

Paradigmas y Lenguajes

Bolilla 4

Pagina 7

Vous aimerez peut-être aussi