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.

  1. 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 */.
% Este es un comentario de una sola línea

/*
Este es un comentario
de múltiples líneas
*/

  1. Hechos

Los hechos son afirmaciones sobre el mundo que se consideran verdaderas. Se escriben en forma de predicados.

gato(tom).
perro(fido).

En estos ejemplos, gato(tom) y perro(fido) son hechos que indican que Tom es un gato y Fido es un perro.

  1. 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.

amigo(X, Y) :- gusta(X, Y), gusta(Y, X).

En este ejemplo, amigo(X, Y) es verdadero si gusta(X, Y) y gusta(Y, X) son verdaderos.

  1. 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 ..

?- gato(tom).

Esta consulta pregunta si tom es un gato. Prolog responderá true si el hecho gato(tom) está definido, de lo contrario, responderá false.

  1. Variables

Las variables en Prolog comienzan con una letra mayúscula o un guion bajo _. Se utilizan para representar valores desconocidos o genéricos.

es_mamifero(X) :- gato(X).

En este ejemplo, X es una variable que puede representar cualquier valor.

  1. 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.

?- es_mamifero(tom).

Prolog intentará unificar es_mamifero(tom) con es_mamifero(X) :- gato(X), y si gato(tom) es verdadero, la consulta será exitosa.

  1. 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.

gusta(maria, pizza).
gusta(maria, pasta).
gusta(juan, pizza).

?- gusta(maria, X).

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:

  1. Define los siguientes hechos:

    • pajaro(tweety).
    • pez(nemo).
  2. Define una regla es_animal(X) que sea verdadera si X es un gato, perro, pájaro o pez.

  3. 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.

© Copyright 2024. Todos los derechos reservados