EXAMEN_FINAL_PROLOGG__15408__

11
EXAMEN FINAL PROGRAMACION LOGICA SOLUCION 2. Hacer un programa que halle el factorial de un número. El programa pedirá si desea continuar S/N. Si ingresa “s” o “S” continuara. En caso contrario si ingresa “n” o “N” terminará el ingreso y saldrá del programa. En caso de ingresar otro carácter el programa Mostrar un mensaje que “Solo debe ingresar S/N “y otra vez debe aparecer el mensaje si “desea continuar S/N”. (5ptos) trace domains c=char nro=real predicates mostrar(nro) mensaje proceso repite factor(c) factorial(nro,nro) goal proceso, mensaje, readln(_). clauses mensaje:-repite, write("\n Desea continuar S/N = "), readchar(C), factor(C), fail. proceso:-clearwindow, ALUMNO: JULIO PALOMINO MARTINEZ EMAIL: [email protected]

description

final

Transcript of EXAMEN_FINAL_PROLOGG__15408__

EXAMEN FINALPROGRAMACION LOGICASOLUCION2. Hacer un programa que halle el factorial de un nmero. El programa pedir si desea continuar S/N. Si ingresa s o S continuara. En caso contrario si ingresa n o N terminar el ingreso y saldr del programa. En caso de ingresar otro carcter el programa Mostrar un mensaje que Solo debe ingresar S/N y otra vez debe aparecer el mensaje si desea continuar S/N. (5ptos)

tracedomainsc=charnro=real

predicatesmostrar(nro)mensajeprocesorepitefactor(c)factorial(nro,nro)

goalproceso,mensaje,readln(_).

clausesmensaje:-repite,write("\n Desea continuar S/N = "),readchar(C),factor(C),fail.proceso:-clearwindow,write(" FACTORIAL"),nl,write("Ingrese un numero = "),readint(X),factorial(X,Fact),mostrar(Fact).factorial(0,1).factorial(1,1). %finalizafactorial(Num,Fact):- Num>1, NuevoNum=Num-1,factorial(NuevoNum,NuevoFact), Fact=Num*NuevoFact.

mostrar(S):-write("El Factorial es: ",S), nl.factor('s'):-proceso,!.factor('S'):-proceso,!.factor('N'):-exit.factor('n'):-exit.factor(_):-clearwindow,write("\nSolo debe ingresar S/N o s/n").repite.repite:-repite.

EJEMPLO

3. Registra en una base de datos dinmica, los cursos que lleva de acuerdo a su boleta de matrcula 2013-1.Considere la estructura de datos que aparece en su boleta de matrcula.

(5ptos)CODIGO

domainsnombre=stringciclo,seccion,creditos=integerdatabase-cursoscurso(ciclo,seccion,nombre,creditos)predicatesejecutaingreso

goalejecuta,readln(_).

clausesejecuta:-clearwindow(),ingreso,save("cursos.txt",cursos),write("archivo grabado").

ingreso:-asserta(curso(8,351,"Optimizacion de Sistemas II",3)),asserta(curso(8,359,"Teoria de Decisiones",3)),asserta(curso(6,152,"Teoria General de Sistemas",3)),asserta(curso(7,161,"Programacion Logica",3)),asserta(curso(7,152,"Base de Datos",3)),asserta(curso(7,354,"Sistemas Digitales",3)).

EJEMPLO

4.- A partir del problema anterior (3), debe mostrar en una tabla los nombres de los cursos que tienen mayor o igual a tres crditos.(5ptos)

CODIGOdomainsnombre=stringciclo,seccion,creditos=integerdatabase-cursoscurso(ciclo,seccion,nombre,creditos)

predicatesejecutarevaluar(ciclo,seccion,nombre,creditos)leer

clausesejecutar:-consult("cursos.txt",cursos),leer,write("").

leer:-curso(Ci,S,N,C),evaluar(_,_,N,C).

evaluar(_,_,N,C):-C>=3,write("Nombre: ",N),nl,fail.

goalclearwindow(),ejecutar,readln(_).

EJEMPLO

PREGUNTA 5domains

codigo=integercurso=symbolnota=integerdb_selector=bd1d_alu=alumno(codigo,curso,nota)

predicatesalumno(codigo,curso,nota)regla

clauses

alumno(100,fisica,11).alumno(200,quimica,10).alumno(300,prolog,12).alumno(400,matematica,09).alumno(500,estadistica,13).

regla:-alumno(C,Cu,N),chain_insertz(bd1,"tabla",d_alu,alumno(C,Cu,N),_),fail.regla:- write("grabacion exitosa").

goal

clearwindow,db_create(bd1,"5.txt",in_file),db_close(bd1),db_open(bd1,"5.txt",in_file),regla,db_close(bd1),db_open(bd1,"5.txt",in_file),db_close(bd1),readln(_).

t_menor -> >10tracedomains

codigo=integercurso=symbolnota=integerdb_selector=bd1d_alu=alumno(codigo,curso,nota)

predicates

msgevaluarorganiza(codigo,curso,nota)leer1leer2

clauses

evaluar:-chain_terms(bd1,"tabla",d_alu,alumno(C,Cu,N),_),organiza(C,Cu,N),fail.evaluar:-write("grabacion exitosa").organiza(C,Cu,N):-N10,chain_insertz(bd1,"aprobados",d_alu,alumno(C,Cu,N),_).

msg():-write("Listo").

leer1:-chain_terms(bd1,"desaprobados",d_alu,alumno(C,Cu,N),_),write("\n",C),write("\n",Cu),write("\n",N),nl,fail.leer1:-write("fin de desaprobados").

leer2:-chain_terms(bd1,"aprobados",d_alu,alumno(C,Cu,N),_),write("\n",C),write("\n",Cu),write("\n",N),nl,fail.leer2:-write("fin de aprobados").

goal

clearwindow,db_open(bd1,"5.txt",in_file),db_close(bd1),db_open(bd1,"5.txt",in_file),evaluar,msg(),ln,leer1,leer2,db_close(bd1),readln(_).

1. Elaborar un programa que muestre la solucin para la siguiente funcin, puede usar solucin conjuntiva o disyuntiva:

Y = X1/3 -1 / (X-3)*(X -4) (5ptos)codigopredicatesfuncion(real)expo(real,real,real)repetirclausesexpo(B,N,W):-W=exp(N*ln(abs(B))).funcion(X) :- X0,X3,X2,X-2,expo(X,2,Z),Y=(Z-1)/((X-3)*(X*X-4)),write("Y = ",Y),readln(_),repetir.funcion(0) :-W=-1/12,write("Y = ",W),readln(_),repetir.funcion(X) :- write("La funcion es dicontinua "),readln(_),repetir.repetir:-clearwindow,write("ingrese un numero:"),readreal(X),funcion(X),readln(_).goal

repetir.

ejemplo

ALUMNO: JULIO PALOMINO MARTINEZEMAIL: [email protected]