Comienza acercarte a la programación lógica con Prolog.
Su sintaxis , los términos, la creación de hechos y reglas al momento de programar por primera vez en Prolog.
2. Introducción
Prolog es un lengua de programación computacional basado en el paradigma de
programación lógica.
Surge alrededor de 1970, siendo usado en muchos programas para aplicaciones de
computación simbólica como es en:
• Relación de base de datos
• Lógica matemática
• Resolución de problemas abstractos
• Operación con lenguaje natural
• Análisis de estructura bioquímica
• Muchas áreas de la inteligencia artificial
3. Objetos y relaciones
Prolog es usado para resolver problemas que involucran objetos y las relaciones
entre objetos.
Por ejemplo, juan tiene un libro, donde declaramos que hay una relación de
propiedad existente entre un objeto juan y otro objeto individual el libro.
Algunas veces las relaciones tienen un orden especifico.
4. Programas en Prolog
• Un programa en Prolog consiste en definir cláusulas donde se busca obtener información ,
ya sean reglas sobre cómo se debería relacionarse o en base a que hechos.
Este programa
dispone de tres
clausulas.
5. Questions
Al tener nuestro programa en Prolog este debe ser consultado por la interfaz de
usuario para cargar las clausulas a la base de datos para su posterior uso.
En la interfaz el usuario puede ingresar uno o mas metas(goals) que el
programa buscara en las clausulas que se encuentra en la database hasta que
satisfaga dicha meta.
Si la meta es satisfecha el programa devolverá un true , si este no se cumple
mostrara un false.
Una meta puede tener una o mas respuestas.
7. Sintaxis y terminología
• Prolog utiliza objetos de datos llamados términos, para todo dato.
• Un término es una secuencia de caracteres, de los cuales se disponen los
siguientes :
=
8. Términos
Los términos se dividen en :
• Constantes
Números
Átomos
• Variables
• Listas
• Estructura o términos compuestos
9. Constantes
• Números
Todas las versiones de Prolog permiten el uso de números enteros. Además del
uso números punto flotante y notación sobre potencia de 10.
Ejemplos:
-17 -2.67 99.9 12 6.02e-23
Además de poder disponerse de librerías para trabajar con operaciones
aritméticas o números racionales y números de arbitraria precisión.
10. Constantes
• Átomos
Los átomos son constantes que no tienen valores numéricos. Donde hay tres
formas en que se pueden escribir los átomos.
Con cualquier secuencia de una o más letras (mayúsculas o minúsculas), números y
guiones bajos, comenzando con una letra minúscula.
Con cualquier secuencia de caracteres entre comillas simples, incluidos espacios y
letras mayúsculas.
Con cualquier secuencia de uno o más caracteres especiales.
11. Átomos
• Ejemplos:
Secuencia iniciando con
minúscula
Secuencia dentro de
comillas simples
Caracteres especiales
hoy_es_martes ‘hoy es martes’ ?-
juan ‘hoy-es-jueves’ :=
fred_jones a32_BCD ‘23-jame’ >
12. • Estos no son constantes:
Constantes incorrectas
Hoy
123213dasd
hoy-es-martes
Vacio_nada
13. Términos
• Variables
Se ven como los átomos ,ya que se denotan por cualquier secuencia de una o más
letras (mayúsculas o minúsculas), números y guiones bajos, excepto que estos
comienzan con una letra mayúscula o un guion bajo.
En una consulta, una variable es un nombre utilizado para representar un
término que se va a determinar, por ejemplo, la variable X puede representar a
perro (atómico) , el número 12.3, un término compuesto o una lista.
14. Variables
• Variable anónima
A veces uno necesita usar variables , pero de los cuales nunca usaremos su
nombre.
Por ejemplo si tu necesitas decir que algo que le gusta a Juan , pero no
sabes que es eso , puedes utilizar algo llamado variable anónima .
Las variables anónimas son solo una línea baja de carácter “_” .
16. • Estos no son variables:
Variables incorrectos
45_Haber
Persona-
Un Autor
17. Listas
Se considera un termino compuesto, al igual que otros lo consideran por
separado como un objeto de datos.
Las listas se escriben como un número ilimitado de argumentos (conocidos como
elementos de lista) encerrados entre corchetes y separados por comas.
[perro, gato, pez, hombre]
Que es posible que hacer que número de elementos que tiene una lista no tenga
que decidirse de antemano cuando se escribe un programa.
18. Listas
• Elementos de la lista
Estos puede ser un término de cualquier tipo, incluido un término compuesto u
otra lista.
O no tener contenido, siendo llamado lista vacía.
Ejemplos:
Listas
[perro,gato,y,mypred(A,b,c),[p,q,R],z]
[[john,28],[mary,56,maestra],robert,padre(victoria,alberto), [a,b,[c,d,e],f],29]
[uno,tiene,que,trabajar,X]
[]
19. Estructura o términos compuestos.
Los términos compuestos son de fundamental importancia al escribir programas
Prolog.
Es un simple objeto consistente de una colección de otros objetos.
Una termino compuesto en Prolog puede ser especificado por su functor y sus
argumentos(componentes).
Los argumentos son encerrados en paréntesis y separados por comas. El
functor es escrito justo antes de comenzar los paréntesis.
Ejemplo:
argumento
20. Termino compuesto
• Functor
Es un átomo que nombra la general parte de la estructura.
• Termino
Cada termino debe ser un término, que puede ser de cualquier tipo, incluido un
término compuesto
• Forma general
𝑓𝑢𝑛𝑐𝑡𝑜𝑟(𝑡1, 𝑡2, …, 𝑡𝑛) 𝑛 ≥ 1 𝑡 = 𝑡𝑒𝑟𝑚𝑖𝑛𝑜𝑠
23. Caracteres de importancia
• Estos caracteres forman una importancia fundamental al momento de
programar en Prolog.
Carácter Importancia
. El carácter de punto denota una pausa
total o fin de algo.
:- El dos puntos con un guion corto es
llamado dentro las reglas como un if .
, La coma denota el uso del operado and
para la conjunción .
24. Comentarios
Existen dos formas para escribir comentarios en Prolog.
Comentario Funcion
/*Este es un comentario en un espacio*/ El uso de /*….*/ permite escribir
comentario delimitando su espacio para
ello.
%Este comentario en una línea El uso de % provoca que todo lo que que
este después serán comentarios .
25. Clausulas
• Hechos (facts)
Los hechos son de la forma:
head.
Donde head es llamada a la cabeza de la clausula.
Tienen la misma forma que una meta que puede ser ingresada por el usuario.
Estos pueden ser un solo átomo o un termino compuesto. Conocidos
colectivamente como términos de llamada.
26. Reglas(rules)
En Prolog las reglas las usamos para decir que un hecho depende de un grupo de
otros factores, algo asi como un if
Se presentan en la forma
𝒉𝒆𝒂𝒅: − 𝒕𝟏, 𝒕𝟐, …, 𝒕𝒌. (𝒌 ≥ 𝟏)
Con las siguientes partes:
• head es llamado a la cabeza de la clausula(o cabeza de la regla). Que puede
ser un átomo o un termino compuesto. Esto puede verse como un objetivo
principal .
27. Reglas(rules)
• :- es llamado el cuello de la clausula (o operador del cuello) ,que se
pronuncia como un if
• 𝒕𝟏, 𝒕𝟐, …, 𝒕𝒌. Es el cuerpo de la clausula(o cuerpo de la regla) , formado por
átomos o términos compuestos separados por comas.
Estos especifica las condiciones que deben cumplirse para que la conclusión,
representada por la cabeza, sea satisfecha. Por esto son vistos como subobjetivos.
28. Reglas(rules)
Una regla se lee de la siguiente forma:
“La cabeza es verdadera si 𝒕𝟏, 𝒕𝟐, …, 𝒕𝒌. son todas verdaderas”
29. Bibliografía
• Clocksin, W. F., & Mellish, C. S. (2003). Programming in PROLOG: Using the ISO Standard (5th
ed.). Springer.
• Bramer, M. (2013). Logic Programming with PROLOG (2nd 2013 ed.). Springer.