Prolog - CREAR MENU EN PROLOG AYUDA PORFA ME URGE
[b]hola a todos necesito la ayuda dd ustedes en prolo tengoun programa q muestra un menu echo prolog aqui mismo lo conseguiq poero no se mucho sobre prolog e qerido agregarle en cada opcion algo mas por ejemplo } si elijo la opcion 1 realizaria una operascion aritmetica por ejemplo o alguna otro cosa pero no e pódido agregarle algo a este codigo y m urge les agradesco cualquier ayuda por favor no me digas como acerlo dejeme el codigo agregandole el codigo q necesito . o tambien seria bueno tener el menu en este programa y cuando elija una opcion mande a llamar un archivo de prolog o sea mande. me explico mejor q el codigo del menun solo contengo el menu y desde ahi mandar a llamar o ejecutar un archivo aparte echo en prolog tambien ubicado en la carpeta prolog o en otra parte de la pc la verdad lo necesito les agradeceria mucho su ayuda[/b ESTE ES }EL CODIGO Q CONSEGUI AQUI MISMO PERO NO E PODIODO AGREGARLE LO QUE QIERO O ME FACILITAN UNO ASI COMO LO EXPLICOM ARRIBA PORFA /*Para usar el menu se guarda el archivo con extencion .pl, se hace doble clic en el y listo, este codigo fue provado con SWI-Prolog, al digitar una opcion DEBE de poner un punto despues y enter*/ /* pausa <- detiene la ejecuci¢n del programa hasta que se pulse una tecla */ pausa :- nl,write('Pulsa <return> para continuar '), skip(10). /* borraPantalla <- borra la pantalla */ borraPantalla :- borraLinea(25). borraLinea(1) :- !,nl. borraLinea(N) :- nl,N1 is N-1,borraLinea(N1). /*Escribe caracteres*/ escribe([]). escribe([X|Y]):- put(X), escribe(Y). %-------------------------Muestra mensaje de error--------------------------------- error:- borraPantalla, escribe("No escribio un numero"), nl, escribe("O el numero escrito no esta en el rango del menu"), pausa. %-------------------------Mensaje de Salida--------------------------------- salida:- borraPantalla, escribe("|---------------------------------------------------|"),nl, escribe("|--Universidad Latina de Costa Rica--|"),nl, escribe("|-Facultad de Ingenieria en Sistemas-|"),nl, escribe("|--------------Programacion IV--------------|"),nl, escribe("|-------Eduardo Gonzalez Chinchilla-----|"),nl, pausa, halt. %-------------------------Manejo de opciones Menu Principal--------------------------------- opciones(X):- ( (X = 1) -> escribe("Opcion 1"),nl, pausa; (X = 2) -> escribe("Opcion 2"),nl, pausa; (X = 3) -> escribe("Opcion 3"),nl, pausa; (X = 4) -> salida; error). %-------------------------Menu Principal--------------------------------- menu:- borraPantalla, escribe("-----------Menu principal--------------"),nl, escribe("Digite su obcion:"),nl, tab(10),escribe("1) Opcion 1"),nl, tab(10),escribe("2) Opcion 2"),nl, tab(10),escribe("3) Opcion 3"),nl, tab(10),escribe("4) Salir"),nl, escribe("Su obcion es: "), read(X), opciones(X), menu. %----------------Carga el Menu Principal------------------ ?-menu.] También te puede interesar...
bueno me respondo a mi mismo, no logre lo que qeria pero si lo ice de esta manera talvez le sirva de algo /*---------------------------------UNI--------------------------------*/ /*----------------------INTELIGENCIA-ARTIFICIAL-----------------------*/ /*--------------------------------------------------------------------*/ /*------------------JOSE DAVID PAIZ ARAUZ 2004-21059------------------*/ /*--------------------------------------------------------------------*/ /*--------------JOSE ENRIQUE SANTOS RIVERAS 2004 -21053---------------*/ /*--------------------------------------------------------------------*/ /*-------EXAMEN DE SUFICIENCIA ENTREGADO EL 22 DE JUNIO DEL 2011------*/ /*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/ pausa :- nl,write('|----presione enter y siga las instrucciones.-----|'),nl, skip(10). /*----------------------------------------------------------------------------*/ /* borraPantalla <- borra la pantalla */ borraPantalla :- borraLinea(25). borraLinea(1) :- !,nl. borraLinea(N) :- nl,N1 is N-1,borraLinea(N1). /*----------------------------------------------------------------------------*/ menor(A,B,C,Menor):- (A < B, A < C, Menor = A); (B < A, B < C, Menor = B); (C < A, C < B, Menor = C). menor. /*----------------------------------------------------------------------------*/ mayor(A,B,C,Mayor):- (A > B, A > C, Mayor = A); (B > A, B > C, Mayor = B); (C > A, C > B, Mayor = C). mayor. /*----------------------------------------------------------------------------*/ /*-- PREDICADOS DE ENTRADA Y SALIDA --*/ /* ibl(L) <- imprime la lista L de forma bonita, es decir saca por pantalla los elementos de la lista separados por un espacio y terminado en salto de linea */ ibl([]) :- nl. ibl([X|Y]) :- write(X), tab(1), ibl(Y). /* escribe_cadena(L) <- escribe en pantalla la lista L de c¢digos ASCII en forma de cadena de caracteres */ escribe_cadena([]). escribe_cadena([X|Y]) :- put(X), escribe_cadena(Y). /* PREGUNTAS : ?- write(8+5*6),nl,display(8+5*6). ?- write(8*5+6),nl,display(8*5+6). ?- X=[esto,es,una,lista],write(L),nl,display(L),nl,ibl(L). ?- escribe_cadena([85,78,73,45,80,114,111,108,111,103]). ?- put(80),put(114),put(111),put(108),put(111),put(103). */ /*----------------------------------------------------------------------------*/ /* ÁRBOL GENEALÓGICO */ mensaje :- nl,write('Ejemplo "Árbol Genealógico" cargado.'), nl,nl. /*---- PROGRAMA PRINCIPAL ----*/ /*------ Hechos ------*/ /* padres(H,P,M,A) <- H tiene como padre a P y como madre a M, y nació el año A */ padres('Don Jose',p1,m1,1893). padres('Doña Maria',p2,m2,1904). padres('Jose','Don Jose','Doña Maria',1925). padres('Maria','Don Jose','Doña Maria',1928). padres('Antonia',p3,m3,1929). padres('Maria Jose','Don Jose','Doña Maria',1931). padres('Luis',p4,m4,1931). padres('Jose Antonio','Jose','Antonia',1949). padres('Pepe','Jose','Antonia',1953). padres('Rosa',p5,m5,1955). padres('Jose Luis','Luis','Maria Jose',1961). padres('Maria Luisa','Luis','Maria Jose',1966). padres('Pepito','Pepe','Rosa',1985). /* casados(H,M) <- El hombre H está casado con la mujer M */ casados('Don Jose','Doña Maria'). casados('Jose','Antonia'). casados('Luis','Maria Jose'). casados('Pepe','Rosa'). /* hombre(P) <- la persona P es del género masculino */ hombre('Don Jose'). hombre('Jose'). hombre('Luis'). hombre('Jose Antonio'). hombre('Pepe'). hombre('Jose Luis'). hombre('Pepito'). /* mujer(P) <- la persona M es del género femenino */ mujer('Doña Maria'). mujer('Antonia'). mujer('Maria'). mujer('Maria Jose'). mujer('Rosa'). mujer('Maria Luisa'). /*------ Reglas ------*/ /* edad(P,E) <- la persona P tiene E años */ edad(P,E) :- padres(P,_,_,A), E is 1998-A. /* mayor(P1,P2) <- la persona P1 es mayor que P2 */ mayor(P1,P2) :- padres(P1,_,_,A1); padres(P2,_,_,A2); A1<A2. /* niño(P1) <- P1 es un niño (menos de 14 años) */ ninyo(P) :- edad(P,E), E=<14. /* joven(P1) <- P1 es una persona joven (entre 14 y 25 años) */ joven(P) :- edad(P,E), 14<E,E=<25. /* adulto(P1) <- P1 es un adulto (entre 25 y 50 años) */ adulto(P) :- edad(P,E), 25<E,E=<50. /* viejo(P1) <- P1 es una persona vieja (más de 50 años) */ viejo(P) :- edad(P,E), E>50. /* hermanos(H1,H2) <- H1 es hermano/a de H2 */ hermanos(H1,H2) :- padres(H1,P,M,_), padres(H2,P,M,_), H1\=H2. /* tio(T,S) <- T es el tio de S */ tio(T,S) :- hombre(T), padres(S,P,_,_), hermanos(T,P). tio(T,S) :- hombre(T), padres(S,_,M,_), hermanos(T,M). tio(T,S) :- hombre(T), padres(S,P,_,_), hermanos(T1,P), casados(T,T1). tio(T,S) :- hombre(T), padres(S,_,M,_), hermanos(T1,M), casados(T,T1). /* tia(T,S) <- T es la tia de S */ tia(T,S) :- mujer(T), padres(S,P,_,_), hermanos(T,P). tia(T,S) :- mujer(T), padres(S,_,M,_), hermanos(T,M). tia(T,S) :- mujer(T), padres(S,P,_,_), hermanos(T1,P), casados(T1,T). tia(T,S) :- mujer(T), padres(S,_,M,_), hermanos(T1,M), casados(T1,T). /* primos(P1,P2) <- P1 es primo/a de P2 */ primos(P1,P2) :- padres(P1,PA1,MA1,_), padres(P2,PA2,MA2,_), (hermanos(PA1,PA2); hermanos(PA1,MA2); hermanos(MA1,PA2); hermanos(MA1,MA2)). /* abuelo(A,N) <- A es el abuelo de N */ abuelo(A,N) :- padres(N,P,M,_), (padres(P,A,_,_); padres(M,A,_,_)). /* abuela(A,N) <- A es la abuela de N */ abuela(A,N) :- padres(N,P,M,_), (padres(P,_,A,_); padres(M,_,A,_)). /* antepasado(A,P) <- A es antepasado de P */ antepasado(A,P) :- padres(P,A,_,_). antepasado(A,P) :- padres(P,_,A,_). antepasado(A,P) :- padres(P,PA,_,_), antepasado(A,PA). antepasado(A,P) :- padres(P,_,MA,_), antepasado(A,MA). :- mensaje. /*----------------------------------------------------------------------------*/ /*Escribe caracteres*/ escribe([]). escribe([X|Y]):- put(X), escribe(Y). /*----------------------------------------------------------------------------*/ ayudaarbol:- borraPantalla, escribe("|------------Inteligencia Artificial--------------|"),nl, escribe("|---------------Programa Numero4------------------|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|---El sig. prog arbol genealogico de la famlia---|"),nl, escribe("|--donde se puede hacer consulta sobre las edades-|"),nl, escribe("|--quien es padra y madre, quien es abuela--------|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|---------- CONSULTAS QUE SE PUEDEN RALIZAR ------|"),nl, escribe("|--quien es abuela de quien-> abuela(nombre,X) la-|"),nl, escribe("|--variable X es la se va a encontrar------------|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|--saber quienes son hombres-> hombre(X). --------|"),nl, escribe("|---forma de elaborar la consulta:----------------|"),nl, escribe("|-------------------------------------------------|"),nl, pausa; ayudaarbol. /*----------------------------------------------------------------------------*/ ayudalista:- borraPantalla, escribe("|------------Inteligencia Artificial--------------|"),nl, escribe("|---------------Programa Numero3------------------|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|-----El sig. prog esta compuesto en 2 partes-----|"),nl, escribe("|--parte1:escribe el contenido de la lista L de---|"),nl, escribe("|--codigo ASCII en forma de cadena de caracteres--|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|--parte2:imprime la lista L de forma bonita------|"),nl, escribe("|--separado por espacios y salto de lineas--------|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|------------------------parte1:------------------|"),nl, escribe("|---forma de elaborar la consulta:----------------|"),nl, escribe("|--X=[esto,es,una,lista],write(L),nl,display(L),nl,ibl(L).--|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|------------------------parte2:------------------|"),nl, escribe("|--escribe_cadena([85,78,73,45,80,114,111,108,111,103]).----|"),nl, escribe("|--put(85),put(78),put(73),put(45),put(80),put(114),put(111),put(108),put(111),put(103).---|"),nl, pausa; ayudalista. /*----------------------------------------------------------------------------*/ ayudamanor:- borraPantalla, escribe("|------------Inteligencia Artificial--------------|"),nl, escribe("|---------------Programa Numero1------------------|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|----El sig. prog muestra el menor de 3 numeros---|"),nl, escribe("|----que seran digitados por el usuario.----------|"),nl, escribe("|--------...:Como ejecutar la consulta:...--------|"),nl, escribe("|-------...:menor(num1,num2,num3,Menor):...-------|"),nl, pausa; ayudamanor. %--------------------------------------------------- ayudamayor:- borraPantalla, escribe("|------------Inteligencia Artificial--------------|"),nl, escribe("|---------------Programa Numero2------------------|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|-------------------------------------------------|"),nl, escribe("|----El sig. prog muestra el mayor de 3 numeros---|"),nl, escribe("|----que seran digitados por el usuario.----------|"),nl, escribe("|--------...:Como ejecutar la consulta:...--------|"),nl, escribe("|-------...:menor(num1,num2,num3,Menor):...-------|"),nl, pausa; ayudamayor. parte entera y decimal de un numero deberias dejar su correo a la vista para cualquier consulta |