SUBPROGRAMACION PROLOG
EJEMPLO PROGRAMA Supongamos que tenemos el siguiente conocimiento sobre divisibilidad: " 2 divide a 6" " 2 divide a 12" " 3 divide a 6" " 3 divide a 12" " Si un número es divisible por 2 y por 3 entonces es divisible por 6" Escribir un programa que represente este conocimiento y usarlo para responder a las siguientes preguntas: (1) ¿Existe algún múltiplo de 2? (2) ¿Cuáles son los divisores de 6? (3) ¿Conocemos algún múltiplo de 6?
PROGRAMA
divide(2,6). divide(2,12). divide(3,6). divide(3,12). divide(6, X):divide(2, X), divide(3, X).
Programa Prolog la clasificación de comidas del restaurante. El programa constara de 10 cláusulas y los predicados a usar son entrada/1, carne/1, pescado/1 y postre/1. Prueba después el programa con preguntas como ?- carne(X). ?- carne(X), postre(X). ... etc... entrada(paella). entrada(gazpacho). entrada(consome). carne(filete_de_cerdo). carne(pollo_asado). pescado(trucha). pescado(bacalao). postre(flan). postre(nueces_con_miel). postre(naranja).
Considera el siguiente programa que describe algunas relaciones familiares padre(andres,bernardo). padre(andres,belen). padre(andres,baltasar). padre(baltasar,david). padre(david,emilio). padre(emilio,francisco). madre(ana,bernardo). madre(ana,belen). madre(ana,baltasar). madre(belen,carlos). madre(belen,carmen).
EJEMPLO Extender el programa para definir las siguientes relaciones familiares (9.1) abuelo/2 (9.2) progenitor/2 (9.3) nieta/2 (9.4) antepasado/2 (9.5) descendiente/2
abuelo(X, Y):padre(X, Z), padre(Z, Y). abuelo(X, Y):padre(X, Z), madre(Z, Y). progenitor(X, Y):padre(X, Y). progenitor(X, Y):madre(X, Y). mujer(belen). mujer(ana). mujer(carmen). nieta(X, Y):mujer(X), progenitor(Y, Z), progenitor(Z, X). antepasado(X, Y):progenitor(X, Y). antepasado(X, Y):progenitor(X, Z), antepasado(Z, Y). descendiente(X, Y):antepasado(Y, X).