Programacion-Declarativa-Practica

📝 Programación Declarativa

Paradigma de Programación Lógica

Sintáxis de Prolog

Índice

Hechos

Los hechos son afirmaciones sobre el mundo. Se utilizan para representar datos y relaciones que siempre se consideran verdaderas. Una colección de hechos se conoce como base de hechos alt text Ejemplos de hechos:

hombre(carlos).
le_pertenece(maria, moneda).
padre(homero, bart).

Hechos anidados o estructuras compuestas

actividad(juan, deportes([futbol, skate, taekwondo])).
actividad(juan, ocupaciones([estudiante])).
Consulta
?- actividad(juan, X)
X = deportes([futbol, skate, taekwondo])
X = ocupaciones([estudiante])

Operadores Lógicos

Conjunción (AND)

Representada por , (coma). Indica que ambas condiciones deben ser verdaderas.

feliz(X) :- tieneTrabajo(X), buenaSalud(X).

X es feliz si X tieneTrabajo y buenaSalud

Disyunción (OR)

Representada por ;. Se usa cuando alguna de las condiciones debe ser verdadera.

contento(X) :- juega(X, futbol) ; juega(X, baloncesto).

X está contento si X juega al futbol o X juega al baloncesto

Negación

Representada por \+, que significa “no es cierto que”.

no_tieneHijos(X) :- \+ padre(X, _).

X no tiene hijos si no es cierto que X es padre de alguien

Preguntas

Preguntas sin variable

Su respuesta siempre es true/false. Ejemplo, consderando la siguiente base de hechos:

le_gusta(juan, pescado).
le_gusta(juan, maria).
le_gusta(maria, libro).
le_gusta(juan, libro).
le_gusta(juan, Italia).

Preguntas/consultas:

?-le_gusta(juan, dinero). 
false

?-le_gusta(juan, maria). 
true

Preguntas con variable

Su respuesta es el objeto que cumple el objetivo o false Preguntas/consultas:

% Consulta: ¿Qué le gusta a juan?
?- le_gusta(juan, X)
% Respuesta: 
X = pescado
X = maria
X = libro
X = italia

% Consulta: ¿A qué le gusta maria?
?-le_gusta(X, maria).
% Respuesta: 
X = juan

% Consulta: ¿Qué le gusta a Maria & a Juan?
?-le_gusta(maria, X), le_gusta(juan, X).
% Respuesta:
X = libro.

Reglas

Las reglas definen relaciones o condiciones entre hechos. Se leen como “es verdadero si…”. En Prolog, el operador :- se usa para expresar “si”.

hijo(X, Y) :- padre(Y, X).
abuelo(X, Z) :- padre(X, Y), padre(Y, Z).

hijo(X, Y) es verdadero si Y es padre de X. abuelo(X, Z) es verdadero si X es padre de Y y Y es padre de Z.

Expresiones

Prolog cuenta con operadores para la unificación y comparación, sea con evaluación o sea simbólica, como los siguientes:

?- X is 3+5.
   X = 8

?- X = 3+5.
   X = 3+5

?- 3+5 =:= 2+6.
   yes

?- 3+5 == 2+6.
   no

?- 3+5 == 3+5.
   yes

✍️ Autor: Emilio Giordano
🔗 Más resúmenes de Programación Declarativa en el repositorio