0% encontró este documento útil (0 votos)
374 vistas5 páginas

Tarea 5 Lebni López

Este documento presenta una introducción al lenguaje de programación lógica Prolog, incluyendo un ejemplo de una familia y sus relaciones. Se definen reglas para determinar relaciones familiares como hermanos, hijos, padres, nietos, abuelos, etc. También se muestran ejemplos de cálculos numéricos en Prolog para calcular densidades poblacionales. Finalmente, se propone un pequeño problema lógico sobre objetos que se tocan y soportan.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd

Temas abordados

  • programación de relaciones múl…,
  • programación de hechos,
  • ejecución de Prolog,
  • programación de relaciones fam…,
  • definición de relaciones,
  • resultados de consultas,
  • programación de relaciones de …,
  • soporte,
  • consultas de densidad,
  • sintaxis de Prolog
0% encontró este documento útil (0 votos)
374 vistas5 páginas

Tarea 5 Lebni López

Este documento presenta una introducción al lenguaje de programación lógica Prolog, incluyendo un ejemplo de una familia y sus relaciones. Se definen reglas para determinar relaciones familiares como hermanos, hijos, padres, nietos, abuelos, etc. También se muestran ejemplos de cálculos numéricos en Prolog para calcular densidades poblacionales. Finalmente, se propone un pequeño problema lógico sobre objetos que se tocan y soportan.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd

Temas abordados

  • programación de relaciones múl…,
  • programación de hechos,
  • ejecución de Prolog,
  • programación de relaciones fam…,
  • definición de relaciones,
  • resultados de consultas,
  • programación de relaciones de …,
  • soporte,
  • consultas de densidad,
  • sintaxis de Prolog

Práctica

Programación en Prolog.

Introducción
El lenguaje Prolog (Programación Lógica) puede ser visto como un lenguaje prescriptivo, así como un lenguaje
descriptivo. El enfoque de Prolog es describir un conjunto de hechos conocidos y un conjunto de relaciones entre
esos hechos respecto al problema a solucionar, más que describir la secuencia de pasos que debe seguir la
computadora para resolver el problema. Prolog tiene implementada cierta “inteligencia” para resolver el problema
(esta “inteligencia” es un mecanismo de razonamiento automático llamado “motor de inferencia” basado en un
algoritmo que se conoce como resolución).

Un programa en Prolog consiste de un conjunto de cláusulas, donde cada una es, o un hecho o una regla acerca
de cómo puede inferirse alguna solución para los hechos dados.

esposos
francisco victoria

padres padres
esposos esposos
mario alicia eduardo veronica

padres padres
beatriz luis

Figura 1. Una bonita familia.

Actividades
1. Captura las siguientes cláusulas y guarda el archivo con el nombre [Link] (que representa las
relaciones familiares mostradas en la Figura 1).

/*
Archivo: [Link]
Clausualas sobre una familia y reglas para determinar las relaciones
familiares
*/
varon(eduardo).
varon(francisco).
varon(luis).
varon(mario).

mujer(alicia).
mujer(veronica).
mujer(victoria).
mujer(beatriz).

padres(eduardo,francisco,victoria).
padres(alicia,francisco,victoria).
padres(luis,eduardo,veronica).
padres(beatriz,alicia,mario).

esposos(eduardo,veronica).
esposos(mario,alicia).
esposos(francisco,victoria).

hermana(Ella,X) :- mujer(Ella),padres(Ella,M,P),padres(X,M,P).
hermano(El,X) :- varon(El),padres(El,M,P), padres(X,M,P).

hijo(El,X) :- varon(El),padres(El,X,_).
hijo(El,X) :- varon(El),padres(El,_,X).

hija(Ella,X) :- mujer(Ella),padres(Ella,X,_).
hija(Ella,X) :- mujer(Ella),padres(Ella,_,X).

2. Ejecuta el intérprete de Prolog dando clic sobre su icono (tecleando pl, desde una terminal X en Linux)
2.1. Para cargar el programa contenido en el archivo [Link], tecleamos:

consult('[Link]').
O también puede cargarse tecleando:
['[Link]']

2.2. “Convierte” a Prolog las siguientes preguntas, ejecútalas y reporta los resultados:

a) ¿Eduardo y Alicia son hermanos?


Consulta en Prolog: Hermano (eduardo, alicia)
Resultados: true

b) ¿Quiénes son los padres de Beatriz?


Consulta en Prolog: Padres (beatriz,X,Y)
Resultados: X= alicia, Y=mario

c) ¿Eduardo es hijo de Mario?


Consulta en Prolog: hijo(eduardo,mario)
Resultados: false

d) ¿Luis es hijo de Verónica?


Consulta en Prolog: hijo(luis,veronica)
Resultados: true

e) ¿De quien es hija Beatriz?


Consulta en Prolog: padres(Beatriz,X,Y)
Resultados: X=alicia,Y=mario

2.3. Define reglas para las relaciones nieto y nieta.


Regla para nieto: nieto(El,X):- varon(El).padres(El,P, ),padres(P,X, ).
nieto(El,X):- varon(El).padres(El, , M),padres(M, ,X).

Regla para nieta: nieta(Ella,X):- mujer(Ella).padres(Ella,P, ),padres(P,X, ).


nieta(Ella,X):- mujer(Ella).padres(Ella, , M),padres(M, ,X).

2.4. Defina reglas para la relación abuelo y abuela


Regla para abuelo: abuelo(El,X):- varón(El).padres(El,P, ),hija(P,X, ).
abuelo(El,X):- varón(El).padres(El, , M),hijo(M, ,X).
abuelo(Ella,X):-mujer(Ella),padresabuelo(Ella,X):-
mujer(Ella),padres(Ella,P, ),hija(P,X),(Ella, ,M),hijo(M,X).

Regla para abuela: abuela(Ella,X):- mujer(Ella).padres(El,P, ),hija(P,X, ).


abuela(Ella,X):- mujer(Ella).padres(El, , M),hijo(M, ,X).
abuela(El,X):-varon(El),padres(El, ,M), hija (M,X).
abuela(El,X):-varon(El),padres(El, ,M), hija (M,X).

2.5. Edita el archivo [Link] para agregar las reglas definidas en los pasos anteriores, guarda el archivo,
cárgalo nuevamente en el intérprete de Prolog y realiza las siguientes consultas:
a) ¿Eduardo es abuelo?
Consulta en Prolog: abuelo (X,eduardo)
Resultados: false

b) ¿Victoria es abuela?
Consulta en Prolog: abuela(X,victoria)
Resultados: X=beatriz

c) ¿De quién es nieto Luis?


Consulta en Prolog: nieto(Luis,X)
Resultados: X=francisco

d) ¿Francisco es abuelo de Beatriz?


Consulta en Prolog: abuelo(beatriz,francisco)
Resultados: true

2.6. Define al menos 2 de las siguientes relaciones: sobrino, sobrina, cuñado o cuñada. Codifícala en Prolog,
modifica el archivo [Link] y prueba que la relación está bien definida por medio de varias preguntas.
Relación: sobrino(Beatriz,X)
Codificación:
sobrino(El,X):- varon(El).padres(El, ,P),hermano(P,X, ).
sobrino(El,X):- varon(El).padres(El,M, ),hermana(M, ,X).

Preguntas y resultados:
Ninguna pregunta, Resultados resueltos

3. Captura el siguiente programa que ilustra el uso de cálculos numéricos en Prolog:


/*
Archivo: [Link]
Muestra la densidad poblacional de varios paises.
*/
area(usa, 3).
area(india, 1).
area(china, 4).
area(brasil, 3).
pob(usa, 203).
pob(india, 548).
pob(china, 800).
pob(brasil, 108).

densidad(Pais, Densidad) :- pob(Pais, P), area(Pais, A),


Densidad is P/A.

3.1. Codifica en Prolog y realiza las siguientes consultas:


a) ¿Cuál es la densidad poblacional de Brasil?

Consulta en Prolog: densidad(brasil,Y)


Resultados: Y=36

b) ¿Cuál es la densidad poblacional de China?


Consulta en Prolog: densidad (china,Y)
Resultados: Y=200

c) ¿Cuál es la población de la India?


Consulta en Prolog: densidad (india,Y)
Resultados: Y=548

d) ¿Cuál es la superficie de USA?


Consulta en Prolog: area(usa,Y)
Resultados: Y=3

4. Dada la siguiente información:


i) Si X está encima de Y, Y soporta a X.
ii) Si X está arriba de Y y se tocan una y otra, entonces X está encima de Y.
iii) La taza está arriba del libro.
iv) La taza toca al libro.

4.1. Escribe un programa en Prolog que use esta base de conocimiento y muestre que SOPORTA(libro,taza)
es verdadero.

Programa en Prolog:

Arriba(T,L).
Toca(L,T).
Soporta(T,L)
Encima(Y,X):- Soporta(X,Y).
Encima(Y,X

4.2. SOPORTA(libro,taza) V: _X__F: ____

4.3. Convierte a Prolog la pregunta: ¿Qué soporta a la taza?


Pregunta en Prolog: soporta(taza,X).
Respuesta: libro
4.4. Convierte a Prolog la pregunta: ¿Qué está encima del libro?
Pregunta en Prolog: encima(libro,X).
Respuesta: X=taza

5. Comentarios y conclusiones
Ninguno, no me dio tiempo de terminar de probar todo ☹

También podría gustarte