/******************************************************************* 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.