Professional Documents
Culture Documents
PROCEDIMIENTO
Bsquedas: Entendiendo las Variables y Predicados.
La prctica le permitir proponer un sistema experto que deduzca toda una
estructura familiar partiendo de solo definir quien es padre de quien, esto se ira
definiendo paso a paso.
Primero se ha de construir la base de conocimientos con las siguientes
definiciones:
predicados
padre("Pablo", "Juan").
%Pablo es padre de Juan
padre("Pablo", "Marcela").
padre("Juan", "Maria").
padre("Juan", "Maura").
padre("Carlos", "Debora").
padre("Maria", "Luis").
padre("Maria", "Pati").
padre("Debora", "Miguel").
Nota: Se esta definiendo el predicado padre, que representa al padre de familia,
no se esta considerando el gnero (masculino o femenino).
Consultas:
Quien es el padre de Juan?:
padre(Quien, "Juan")
Respuesta:
Consultas:
Quien es el hijo de Pablo:
hijo(X,Y):-padre(X,Y), X\==Y.
Respuesta:
Juan de quien es
abuelo: Consulta
Respuesta:
Quien es el to de Maria:
Consulta
Respuesta:
Consulta familiar("Juan","Marcela")
Respuesta:
Por qu?: Porque Juan es hermano de Marcela
Consulta familiar("Miguel","Marcela").
Respuesta:
Por qu?: Porque Miguel no tiene ningn parentesco con Marcela
Consulta familiar("Pati","Juan").
Respuesta:
Por qu?: Porque Pati no tiene ningn parentesco con Juan
familiar("Carlos","Miguel").
Respuesta:
Por qu?: Porque Carlos es abuelo de Miguel
Cosulta familiar("Debora",Y).
Respuesta:
Por qu?: Porque Miguel es su hijo y Carlos es su padre
Consulta familiar("Pati","Marcela")
Respuesta:
Por qu?: Porque Pati es nieta de su hermano Juan
Write.
Su sintaxis es: write(`Hello world').
Las comillas simples encierran constantes, mientras que todo lo que se encuentra entre comillas dobles es tratado
como una lista. Tambin podemos mostrar el valor de una variable, siempre que est instanciada: write(X).
nl.
El predicado nl fuerza un retorno de carro(enter) en la salida. Por ejemplo: write('linea 1'), nl, write('linea 2'). tiene
como resultado:
linea 1
linea 2
fail (fallo)
Es un predicado que siempre produce fallo
Es til cuando queremos detectar casos explcitos que invalidan un predicado
Para evitar la aplicacin de una regla, se puede forzar el fallo con una combinacin del corte, y la constante fail
fail es un objetivo que nunca se satisface