Professional Documents
Culture Documents
LABORATORIO 1
ENTORNO DE PROGRAMACIN VISUAL PROLOG
Capacidades
Habilidad
Desarrollar ejercicios en modo consola o texto.
Prolog
Prolog. Programming in Logic (Prolog), es otro de los lenguajes de programacin
ampliamente utilizados en Inteligencia Artificial. Prolog fue desarrollado en Francia,
en 1973 por Alain Colmenauer y su equipo de investigacin en la Universidad de
Marseilles. Inicialmente fue utilizado para el procesamiento de lenguaje natural, pero
posteriormente se populariz entre los desarrolladores de aplicaciones de Inteligencia
Artificial por su capacidad de manipulacin simblica. Utilizando los resultados del
grupo francs, Robert Kowalski de la Universidad de Edimburgo, en Escocia,
desarroll la teora de la programacin lgica. La sintaxis propuesta por Edimburgo,
se considera el estndar de facto del Prolog. A partir de 1981 tuvo una importante
difusin en todo el mundo, especialmente porque los japoneses decidieron utilizar
Prolog para el desarrollo de sus sistemas de computacin de quinta generacin.
Actualmente existen varios dialectos del Prolog para diferentes plataformas.
Es un lenguaje de programacin lgico hecho para representar y utilizar el
conocimiento que se tiene sobre un determinado dominio. El dominio es un conjunto
de objetos y el conocimiento se representa por un conjunto de relaciones que
describen las propiedades de los objetos y sus interrelaciones. Un conjunto de reglas
que describa estas propiedades y estas relaciones es un programa Prolog.
Prolog es un lenguaje de programacin que es usado para resolver problemas
que envuelven objetos y las relaciones entre ellos.
Prolog es un lenguaje utilizado para implementar inteligencia artificial y
sistemas expertos. Gran parte de su xito se debe a su conveniencia por ser cdigo
abierto (modificable) y se obtiene fcilmente en internet, adems de su capacidad de
deduccin de respuestas para las consultas realizadas, Prolog es un lenguaje simple y
fcil de programar, hasta para principiantes, pero sus motores de inferencia no siempre
son eficientes. Sus aplicaciones varan desde sistemas ambientales hasta la resolucin de
funciones automatizadas.
Una de las caractersticas que hacen de Prolog un lenguaje de gran inters es su
reducido nmero de mecanismos de soporte, entre los que se encuentran el
reconocimiento de patrones, la unificacin, el reintento ("backtracking"), el manejo de
listas y de estructuras de datos flexibles, as como la recursividad.
1
Ventajas:
La habilidad de PROLOG para calcular de forma procedural es una de las
ventajas especficas que tiene el lenguaje. Como consecuencia esto anima al
programador a considerar el significado declarativo de los programas de forma
relativamente independiente de su significado procedural. Es decir, las ventajas
de la forma declarativa de este lenguaje son claras (es ms fcil pensar las
soluciones y muchos detalles procedurales son resueltos automticamente por el
propio lenguaje) y podemos aprovecharlas.
Una ventaja desde el punto de vista del usuario es la facilidad para programar ya
que se pueden escribir programas rpidamente, con pocos errores originando
programas claramente legibles, aun si no se conoce muy bien el lenguaje.
No hay que pensar demasiado en la solucin del problema, ya que Prolog infiere
sus respuestas basndose en las reglas declaradas dentro del programa.
Modularidad: cada predicado (procedimiento) puede ser ejecutado, validado y
examinado independiente e individualmente. Prolog no tiene variables globales,
ni asignacin. Cada relacin est auto contenida, lo que permite una mayor
modularidad, portabilidad y reusabilidad de relaciones entre programas.
Polimorfismo: se trata de un lenguaje de programacin sin tipos, lo que permite
un alto nivel de abstraccin e independencia de los datos (objetos).
En Prolog, se puede representar incluso los mismos programas Prolog como
estructuras.
Prolog utiliza un mecanismo de bsqueda independiente de la base de hechos.
Aunque pueda parecer algo retorcido, es una buena estrategia puesto que
garantiza el proceso de todas las posibilidades. Es til para el programador
conocer dicho mecanismo a la hora de depurar y optimizar los programas.
Manejo dinmico y automtico de memoria.
En prolog se utiliza notacin prefija e infija
Desventajas:
La resolucin automtica no siempre es eficiente, por lo que eventualmente se
podra dar una respuesta incorrecta a una consulta.
Prolog algunas veces es incapaz de reconocer que un problema es (para su
propio conocimiento) inaplicable o insuficiente. Si el programa no contiene
suficiente informacin para contestar una consulta, es incapaz de reconocerlo y
responde no. En esta situacin sera ms eficiente conocer que la respuesta no es
negativa, sino que no es posible inferir un resultado.
1. TIPOS DE DATOS EN PROLOG
2
Presionamos la opcin New del men File. lo que aparecer una ventana en la
cual copie lo siguiente:
Luego almacene su archivo donde deseara pero siempre con la extensin pro.,
luego de almacenar el archivo notara el cambio de color de algunas letras del
programa que copio, si no ubic la extensin no suceder el cambio.
Goal Valioso(X).
X es una variable, por ello va en mayscula
Al ejecutar la consulta la respuesta ser:
X=oro
X=plata
X=bronce
3 soluciones
PREDICATES
hermanos(persona,persona)
CLAUSES
hermanos(A,B):-hermano(A,B). %una clusula hermano corresponde a
hermanos
hermanos(A,B):-hermano(B,A). %un hermano puede referirse en forma
inversa definindose as en hermanos
hermanos(A,B):-hermana(A,B). %una clusula hermana corresponde a
hermanos
hermanos(A,B):-hermana(B,A). %una hermana puede referirse en forma
inversa definindose as en hermanos
hermanos("Popo","Ququ"). %Puede definirse nuevas clusulas
hermanos("Maria", "Pedro").
Referencia: Ntese que un predicado no es solamente una definicin si no que se puede
sobrecargar, osea redefinirla varias veces.
Consultas:
Todos los hermanos existentes:
GOAL
Respuesta:
TRABAJO APLICATIVO
1. Sobrecargue el predicado hermanos, para encontrar a los hermanos que tengan el
mismo padre, utilizando el predicado hijo:
11
12