/*******************************************************************
Permite ver las partes elementales de un programa en Prolog, su estructura y
sus datos.
Inteligencia artificial
Gonzalo Villarreal Farah.
Corre con la versión Turbo Prolog 2.0
********************************************************************/
DOMAINS
i = integer
st = string % Para definir el dominio en cada uno de los parametros de
sy = symbol % cada hecho o regla (definidos en los predicates)
PREDICATES
entrada(sy,i)
plato_fondo(sy,i) % Se definen todos aquellos hechos o reglas, que seran
postre(sy,i) % utilizados en las clauses, con sus parametros
vino(sy,i)
menu(sy,sy,sy,sy,i)
CLAUSES % Definen los hechos y reglas
entrada(palta_Reyna,800).
entrada(tomate_Relleno,900). % declaraciones de hechos
plato_fondo(pastel_de_Choclo,1500).
plato_fondo(cazuela,1200).
postre(flan,500).
postre(frutas_de_la_Estacion,700).
vino(casillero_del_Diablo,3000).
vino(undurraga,2300).
menu(E,PF,P,V,PT):-entrada(E,PR1),plato_fondo(PF,PR2),postre(P,PR3),
vino(V,PR4),PT=PR1+PR2+PR3+PR4,readchar(_).
para ejecutar es necesario hacer un RUN, luego aparece Goal: (meta)
colocamosa continuacion:
menu(A,B,C,D,P)
y finalmente enter, nos dara todas las posibilidades de menu, con su
precio total. Como vemos, colocamos solo letras mayusculas, como
parametros (variables) de la clausula, de esta manera son todas
de salida, si se especifica algun(os) parametro(s), estos seran
de entrada, por ejemplo:
menu(palta_Reyna,Z,flan,Vino,Precio)
Aqui palta_Reyna y flan, son parametros de entrada, por lo
tanto vera si existe algun calce con esto, es decir, que exista una
entrada de palta_Reyna y un postre flan, de ser verdadero las
variables Z (plato_de_fondo), Vino (vino), Precio, al ser variables
de salida, pueden ser intanciadas por cualquier valor.