En esta sección, aprenderemos sobre la sintaxis y la estructura básica de Prolog. Este conocimiento es fundamental para escribir programas en Prolog de manera efectiva.
- Comentarios
En Prolog, los comentarios se utilizan para explicar el código y no son ejecutados por el intérprete. Existen dos tipos de comentarios:
- Comentarios de una sola línea: Comienzan con
%
. - Comentarios de múltiples líneas: Comienzan con
/*
y terminan con*/
.
- Hechos
Los hechos son afirmaciones sobre el mundo que se consideran verdaderas. Se escriben en forma de predicados.
En estos ejemplos, gato(tom)
y perro(fido)
son hechos que indican que Tom es un gato y Fido es un perro.
- Reglas
Las reglas definen relaciones entre hechos y se utilizan para inferir nueva información. Se escriben usando :-
para separar la cabeza de la regla del cuerpo.
En este ejemplo, amigo(X, Y)
es verdadero si gusta(X, Y)
y gusta(Y, X)
son verdaderos.
- Consultas
Las consultas se utilizan para preguntar al sistema Prolog si ciertos hechos o reglas son verdaderos. Se escriben en la consola de Prolog y terminan con un punto .
.
Esta consulta pregunta si tom
es un gato. Prolog responderá true
si el hecho gato(tom)
está definido, de lo contrario, responderá false
.
- Variables
Las variables en Prolog comienzan con una letra mayúscula o un guion bajo _
. Se utilizan para representar valores desconocidos o genéricos.
En este ejemplo, X
es una variable que puede representar cualquier valor.
- Unificación
La unificación es el proceso de hacer coincidir dos términos. Prolog intenta unificar los términos en una consulta con los hechos y reglas definidos.
Prolog intentará unificar es_mamifero(tom)
con es_mamifero(X) :- gato(X)
, y si gato(tom)
es verdadero, la consulta será exitosa.
- Retroceso
El retroceso es una característica de Prolog que permite buscar todas las posibles soluciones a una consulta. Si una solución falla, Prolog retrocede y prueba otra posibilidad.
Prolog primero unificará X
con pizza
, y si se solicita otra solución, retrocederá y unificará X
con pasta
.
Ejemplo Completo
A continuación, se muestra un ejemplo completo que incluye hechos, reglas y consultas:
% Hechos gato(tom). perro(fido). gusta(maria, pizza). gusta(maria, pasta). gusta(juan, pizza). % Reglas es_mamifero(X) :- gato(X). es_mamifero(X) :- perro(X). amigo(X, Y) :- gusta(X, Y), gusta(Y, X). % Consultas ?- es_mamifero(tom). % true ?- es_mamifero(fido). % true ?- amigo(maria, juan). % false ?- gusta(maria, X). % X = pizza; X = pasta
Ejercicio Práctico
Ejercicio:
-
Define los siguientes hechos:
pajaro(tweety)
.pez(nemo)
.
-
Define una regla
es_animal(X)
que sea verdadera siX
es un gato, perro, pájaro o pez. -
Realiza una consulta para verificar si
tweety
es un animal.
Solución:
% Hechos gato(tom). perro(fido). pajaro(tweety). pez(nemo). % Reglas es_animal(X) :- gato(X). es_animal(X) :- perro(X). es_animal(X) :- pajaro(X). es_animal(X) :- pez(X). % Consultas ?- es_animal(tweety). % true
Conclusión
En esta sección, hemos cubierto la sintaxis y la estructura básica de Prolog, incluyendo comentarios, hechos, reglas, consultas, variables, unificación y retroceso. Estos conceptos son fundamentales para escribir y entender programas en Prolog. En la próxima sección, profundizaremos en la definición de hechos y cómo utilizarlos en nuestros programas.
Curso de Programación en Prolog
Módulo 1: Introducción a Prolog
- ¿Qué es Prolog?
- Instalando Prolog
- Primeros Pasos en Prolog
- Sintaxis y Estructura Básica
- Hechos, Reglas y Consultas
Módulo 2: Programación Básica en Prolog
Módulo 3: Estructuras de Datos en Prolog
Módulo 4: Programación Avanzada en Prolog
- Unificación Avanzada
- Corte y Negación
- Meta-Programación
- Gramáticas de Clausulas Definidas (DCGs)
- Programación Lógica con Restricciones
Módulo 5: Prolog en la Práctica
- Entrada/Salida de Archivos
- Depuración de Programas Prolog
- Bibliotecas de Prolog
- Interfaz con Otros Lenguajes
- Construyendo una Aplicación en Prolog