Está en la página 1de 3

Práctica 10

Estructura y componentes de un programa prolog.

Objetivo.
Que el alumno conozca y se familiarice con la estructura y las partes que componen a los
programas escritos en Prolog. Se corresponde con el Tema 4 “Fundamentos de la
Programación Lógica” del programa de la materia.
Manual de Prácticas Programación Lógica y Funcional

Elementos en Prolog
Para construir programas en Prolog necesitamos una serie de elementos:
 Átomos: Es una definición genérica de un objeto del mundo que queremos representar.
 Predicados: Se utilizan para expresar propiedades (caracteristicas, atributos) de los
objetos, predicados monádicos, y relaciones entre ellos, predicados poliádicos. En
Prolog los llamaremos hechos.

Hechos (predicados)
Característica o relación entre objetos. Por ejemplo decir que una pelota tiene la característica
(atributo) del color que es rojo: color(pelota, rojo). Suponiendo que se quiera expresar el hecho
de que "un coche tiene ruedas". Este hecho, consta de dos objetos, "coche" y "ruedas", y de
una relación llamada "tiene": tiene(coche,ruedas).
 Los nombres de objetos y relaciones deben comenzar con una letra minúscula.
 Primero se escribe la relación, y luego los objetos separados por comas y encerrados
entre paréntesis.
 Al final de un hecho debe ir un punto (".").
El orden de los objetos dentro de la relación es arbitrario, pero debemos ser coherentes a lo
largo de la base de hechos.

Variables
Representan objetos que el mismo PROLOG determina. Una variable puede estar instanciada
ó no instanciada. Estar instanciada cuando existe un objeto determinado representado por la
variable. Los nombres de variables comienzan siempre por una letra mayúscula.

Reglas
Se utilizan en PROLOG para significar que un hecho depende de uno ó mas hechos. Son la
representación de las implicaciones lógicas del tipo p ---> q (p implica q).
 Una regla consiste en una cabeza y un cuerpo, unidos por el signo ":-".
 La cabeza está formada por un único hecho.
 El cuerpo puede ser uno ó mas hechos (conjunción de hechos), separados por una coma
(","), que actúa como el "y" lógico o por punto y coma (;) que actúa como el “o” lógico.
 Las reglas finalizan con un punto (".").

La cabeza en una regla PROLOG corresponde al consecuente de una implicación lógica, y el
cuerpo al antecedente, como se menciona en los apuntes de clase.
Para generalizar una relación entre objetos mediante una regla, utilizaremos variables. Por
ejemplo:

Representación lógica: es_un_coche(X) ----> tiene(X,ruedas)


Representación PROLOG: tiene(X,ruedas):- es_un_coche(X).

Con esta regla generalizamos el hecho de que cualquier objeto que sea un coche, tendrá
ruedas. Ejemplo.-

2
Manual de Prácticas Programación Lógica y Funcional

/*
Hechos
*/

padrede(juan, maria). % juan es padre de maria (juan y maria son átomos)


padrede(pablo, juan). % pablo es padre de juan
padrede(pablo, marcela). % pablo es padre de marcela
padrede(carlos, debora). % carlos es padre de debora

% Reglas con variables

% A es hijo de B si B es padre de A
hijode(A,B) :- padrede(B,A).

% A es abuelo de B si A es padre de C y C es padre B


abuelode(A,B) :-
padrede(A,C),
padrede(C,B).

% A y B son hermanos si el padre de A es también el padre de B y si A y B no son lo mismo


hermanode(A,B) :-
padrede(C,A) ,
padrede(C,B),
A \== B.

% consultas

% juan es hermano de marcela?


?- hermanode(juan, marcela).

% carlos es hermano de juan?


?- hermanode(carlos, juan).

% pablo es abuelo de maria?


?- abuelode(pablo, maria).

También podría gustarte