Introduccion Visual Prolog

INTRODUCCION VISUAL PROLOG ING. CARLOS ACEVEDO INGENIERIA DEL CONOCIMIENTO UNIVERSIDAD COOPERATIVA DE COLOMBIA PROLOG:

Views 117 Downloads 61 File size 545KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

INTRODUCCION VISUAL PROLOG ING. CARLOS ACEVEDO INGENIERIA DEL CONOCIMIENTO UNIVERSIDAD COOPERATIVA DE COLOMBIA PROLOG:

Bloques de instrucciones:

Es un lenguaje de programación lógica, es un motor, desarrolla y ejecuta consultas en PREDICADOS, el lenguaje se convierte en instrucción y es ejecutado por el mismo, basado en predicados y algebra booleana, los archivos son planos, extensión .pro. Las variables en prolog siempre empiezan en mayúscula.

1. domains: permite realizar la declaración de tipos de variables. 2. Predicates: Relación que existe entre objetos los cuales representan una realidad o un escenario 3. clauses: realiza la declaración de reglas y base del conocimiento. 4. goal: realiza las consultas, para determinar las respuestas a las preguntas de la clase. Assert: Añade un nuevo hecho o cláusula a la base de datos. Retract: permite eliminar una cláusula de la base de datos.

DESCRIPCION EJERCICIO 1. programa que imprime la suma de dos números.

CODIGO

goal X = 5, Y = 10, Z=X +Y, nl, write("El resultado es: ", Z), nl.

2. programa que suma dos números enteros, digitados por el usuario.

goal

3. Dados 2 números digitados por el usuario imprimir su suma si el primero es mayor que el segundo, de lo contrario imprimir la resta

goal

write("PRIMER NUMERO ENTERO: "), Readint(X), write("SEGUNDO NUMERO ENTERO:"), Readint (Y), Z=X+Y, nl , write("La suma de ls numeros enteros es: ", Z), nl.

write("primer numero: "),Readint(X), write("segundo numero: "),Readint(Y), X>Y, Z=X+Y, nl, write ("La suma es:" ,Z),!,nl,fail; write("Ingrese primer numero: "),Readint(X), write("Ingrese segundo numero: "),Readint(Y), Y>X, Z=X-

IMAGEN PROLOG

4. Validar si un número digitado por el sistema es par o impar.

5. Determinar la suma de dos números, si al menos uno de ellos es par de lo contrario haga una resta.

6. Dados 5 números digitados por el usuario: calcular el promedio

7.calcular la varianza

Y, nl, write ("la resta es:" ,Z),!, nl, fail. goal write ("ingrese el numero : "), Readint(X), M= X Mod 2, M = 0, nl, write("El numero es par "), !, fail,nl; write("El numero es impar "), nl,!,fail. goal WRITE("NUMERO 1: "), Readint(X), Z= X Mod 2, WRITE("NUMERO 2: "), Readint(Y), Z1= Y Mod 2, Z=0, Z1= 0, A = X + Y, nl, WRITE("la suma es: ", A),!,fail, nl; WRITE("OTRO NUMERO 1: "),Readint(X), Z= X Mod 2, WRITE("OTRO NUMERO 2: "),Readint(Y), Z1= Y Mod 2,nl, Z=0, Z1 0, A = X + Y, nl, WRITE("la suma es: ", A),!,fail, nl; WRITE("OTRO NUMERO 1: "),Readint(X), Z= X Mod 2, WRITE("OTRO NUMERO 2: "),Readint(Y), Z1= Y Mod 2,nl, Z0, Z1=0, A = X + Y, nl, WRITE("la suma es: ", A),!,fail, nl; WRITE("OTRO NUMERO 1: "),Readint(X), Z= X Mod 2, WRITE("OTRO NUMERO 2: "),Readint(Y), Z1= Y Mod 2,nl, Z0, Z10, A = X - Y, nl, WRITE("la resta es: ", A),!,fail, nl. goal WRITE ("NUMERO 1: "), Readint(X), WRITE ("NUMERO 2: "), Readint(Y), WRITE ("NUMERO 3: "), Readint(Z), WRITE ("NUMERO 4: "), Readint(A), WRITE ("NUMERO 5: "), Readint(B), C=X+Y+Z+A+B, P= C/5, nl, WRITE("EL PROMEDIO ES: ", P),nl, V=((X-P)*(X-P) + (Y-P)*(Y-P) + (Z-P)*(Z-P) + (A-P)*(A-P) + (B-P)*(B-P))/5, nl, WRITE("LA VARIANZA ES: ", V),!,fail, nl.

8. ingrese tres números y diga quién es el mayor

goal WRITE ("INGRESE EL VALOR DE A: "), READINT(A), WRITE ("INGRESE EL VALOR DE B: "), READINT(B), WRITE ("INGRESE EL VALOR DE C: "), READINT(C),nl, A>B, A>C, NL, WRITE("EL MAYOR ES: ", A), NL; WRITE ("INGRESE EL VALOR DE A: "), READINT(A), WRITE ("INGRESE EL VALOR DE B: "), READINT(B), WRITE ("INGRESE EL VALOR DE C: "), READINT(C),nl, B>A, B>C, NL, WRITE("EL MAYOR ES: ", B), NL; WRITE ("INGRESE EL VALOR DE A: "), READINT(A), WRITE ("INGRESE EL VALOR DE B: "), READINT(B), WRITE ("INGRESE EL VALOR DE C: "), READINT(C),nl, WRITE("EL MAYOR ES: ", C), NL.

9. Imprimir si es mayor de edad o no.

goal WRITE ("INGRESE LA EDAD: "),READINT(EDAD), EDAD>=18, WRITE("ES MAYOR DE EDAD"),nl,!; WRITE("ES MENOR DE EDAD"),!, nl.

10. Ingrese un número e imprima su factorial.

domains A=integer B=integer predicates nondeterm factorial(A,B) clauses factorial(0,1):-!. factorial(A,B):A>0, A1 = A-1, factorial(A1,B1), B = A * B1. goal WRITE("INGRESE EL NUMERO: "), READINT(N),NL, factorial(N,W),NL, WRITE("EL FACTORIAL ES: ", W),NL,!,fail.

EJERCICIOS QUE HACEN PARTE DE UN ARBOL GENEALOGICO 11.Recorrer la base de conocimiento

Database –tmp Nondeterm suma(integer) omains persona = String gen = String edad= Integer predicates NONDETERM hace_parte(persona,persona). NONDETERM gen(persona, gen). NONDETERM ed(persona, edad). clauses es_hijo("javier","pedro"). es_hijo("liliana","pedro"). es_hijo("carmenza","javier"). es_hijo("ernesto","liliana"). es_hijo("laura","liliana"). es_hijo("katia","liliana"). es_hijo("javier","helena"). es_hijo("liliana","juliana"). gen("javier","h"). gen("liliana","m"). gen("pedro","h"). gen("carmenza","m"). gen("ernesto","h"). gen("laura","m"). gen("katia","m"). gen("helena","m"). gen("juliana","m"). ed("liliana","3"). ed("helena","24"). ed("pedro","27"). ed("carmenza","43"). ed("ernesto","32"). ed("laura","47"). ed("juliana","26"). ed("katia","25"). ed("javier","57"). Suma(0). Goal es_hijo(A,B).

12.Determinar los hijos de Javier

goal es_hijo(Z,"javier").

13.Determinar los hijos de Liliana

goal es_hijo(Z,"liliana").

14.Determinar los hijos de Helena

goal es_hijo(A,"helena").

15.Determinar los padres de Liliana

goal es_hijo("liliana",P), gen(P,"h"), es_hijo("liliana",G), gen(G,"m"), GP.

16.Determinar los nietos de pedro

goal es_hijo(A,"pedro"), es_hijo(Nietos,A).

17.Determinar los hijos de pedro

goal es_hijo(A,"pedro").

18.Determine la abuela de Carmenza

goal es_hijo("carmenza", Papa), es_hijo(Papa, Nonita), gen(Nonita, "m").

19.primos de carmenza

goal es_hijo("carmenza",X), es_hijo(X,Y), es_hijo(Z,Y), ZX, es_hijo(W,Z), write("Los primos de Carmenza son:", W),nl.

20.Determinar los hijos de Juliana

Goal es_hijo(A,"juliana").

goal

21.hermanos de javier

es_hijo(Z, "pedro"), Z"javier".

22.edades de los hijos de pedro.

Goal es_hijo(X,"pedro"),ed(X,Edad),suma(K),R=Edad+K, retract(suma(K)),assert(suma(R)),nl, WRITE("la suma de las edades es",R),nl.

23.Buscar el hijo cualquier persona

de

domains persona = String gen = String predicates NONDETERM es_hijo(persona,persona). NONDETERM gen(persona, gen). NONDETERM buscarHijos(persona). clauses es_hijo("javier","pedro"). es_hijo("liliana","pedro"). es_hijo("carmenza","javier").

es_hijo("ernesto","liliana"). es_hijo("laura","liliana"). es_hijo("katia","liliana"). es_hijo("javier","helena"). es_hijo("liliana","juliana"). gen("javier","h"). gen("liliana","m"). gen("pedro","h"). gen("carmenza","m"). gen("ernesto","h"). gen("laura","m"). gen("katia","m"). gen("helena","m"). gen("juliana","m"). %buscar hijos de alguinen: buscarHijos(X):- WRITE("ESCRIBA PADRE: "), readln(K), es_hijo(X,K), nl, write("Es un hijo de: ", X), nl,nl,!. buscarHijos(X):- nl, write("NO TIENE HIJOS."),nl.

24.Buscar el padre de cualquier persona

goal %buscar los hijos de alguien: buscarHijos(X). domains persona = String gen = String predicates NONDETERM es_hijo(persona,persona). NONDETERM gen(persona, gen). NONDETERM buscarPadre(persona). clauses es_hijo("javier","pedro"). es_hijo("liliana","pedro"). es_hijo("carmenza","javier"). es_hijo("ernesto","liliana"). es_hijo("laura","liliana"). es_hijo("katia","liliana"). es_hijo("javier","helena"). es_hijo("liliana","juliana").

gen("javier","h"). gen("liliana","m"). gen("pedro","h"). gen("carmenza","m"). gen("ernesto","h"). gen("laura","m"). gen("katia","m"). gen("helena","m"). gen("juliana","m"). %buscar padre de alguien: buscarPadre(X):- WRITE("ESCRIBA HIJO: "), readln(K), es_hijo(K,X), gen(X, "h"),nl,!, write("El padre es: ", X), nl,nl. buscarPadre(X):- nl, write("PADRE DESCONOCIDO."),nl.

25.Buscar nietos cualquier persona

de

goal %buscar padre: buscarPadre(X). domains persona = String gen = String predicates NONDETERM es_hijo(persona,persona). NONDETERM gen(persona, gen). NONDETERM buscarNietos(persona). clauses es_hijo("javier","pedro"). es_hijo("liliana","pedro"). es_hijo("carmenza","javier"). es_hijo("ernesto","liliana"). es_hijo("laura","liliana"). es_hijo("katia","liliana"). es_hijo("javier","helena"). es_hijo("liliana","juliana"). gen("javier","h"). gen("liliana","m"). gen("pedro","h"). gen("carmenza","m"). gen("ernesto","h"). gen("laura","m").

gen("katia","m"). gen("helena","m"). gen("juliana","m"). %buscar nieto: buscarNietos(X):- write("Escriba abuelo: "), readln(K), es_hijo(X, K), es_hijo(N,X), nl, gen(N, "m"),nl, write("El nieto es: ", N),nl,nl.

26.Calcular la cantidad de personas que son menores de edad.

goal %buscar nieto: buscarNietos(N). database -tmp suma(integer) domains %Permite realizar la declaracion de tipos persona = String edad = Integer predicates %Permite realizar la declaracion de predicados NONDETERM es_hijo(persona,persona). NONDETERM per(persona, edad).

clauses %Permite realizar la declaracion de reglas y bases de conocimiento %Base de conocimiento es_hijo("B","A"). es_hijo("C","A"). es_hijo("D","B"). es_hijo("E","B"). es_hijo("H","C"). es_hijo("F","E"). es_hijo("G","E"). per("A",80). per("B",60). per("C",55). per("D",40). per("E",43). per("F",20).

per("G",17). per("H",16). suma(0).

27.Calcular la sumatoria de los nietos de A

28.El costo total de los elementos.

goal %Calcular la cantidad de personas que son menores de edad. per(A,X), X