/*******************************************************************

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.