martes, 30 de julio de 2013

Arbol Genealogico en Visual Prolog

Hoy les comparto un proyecto escolar que realice para una materia de programación donde nos enseñaron algo de PROLOG, esto fue hace algunos años (por no decir muchos), está hecho en Visual Prolog.
 


Proyecto: Elaborar un programa en Visual Prolog que utilice los hechos hijo, además utilizar los hechos hombre y mujer, utilizando un  menú, se ejecutará una búsqueda inteligente utilizando el proceso de razonamiento adecuado para cada una de las reglas.

El menú contiene las siguientes consultas:

1.    Buscar relación Tío.
2.    Buscar relación Sobrino.
3.    Buscar relación Abuela.
4.    Buscar relación Nieta.
5.    Buscar relación Hija.
6.    Buscar relación Bisnieto.
7.    Buscar relación Abuelo.
8.    Buscar relación Tía.
9.    Buscar relación Bisabuela.
10.  Buscar relación Sobrina.
11.  Buscar relación Prima.
12.  Buscar relación Hermano.
13.  Buscar relación Primo.
14.  Buscar relación Hermana.
15.  SALIR.


Ejemplo del Codigo en Ejecución.

Este es el código fuente, desacrgalo aqui:

domains
 OPC=integer.
 X,Y,Z,W,V=symbol.
predicates
 nondeterm hijo(symbol,symbol).
 nondeterm mujer(symbol).
 nondeterm hombre(symbol).
 nondeterm menu.
 nondeterm ciclo.
 nondeterm caso(integer).
 
clauses
 hijo(alfonso,francisca).
 hijo(gloria,francisca).
 hijo(guillermina,francisca).
 hijo(alejandra,francisca).
 hijo(fortino,francisca).
 hijo(salvador,francisca).
 hijo(lilia,francisca).
 hijo(socorro,francisca).
 hijo(joel,francisca).
 hijo(osiel,francisca).
 hijo(veronica,alfonso).
 hijo(javier,alfonso).
 hijo(alonso,alfonso).
 hijo(marco_a,alfonso).
 hijo(jose_a,alfonso).
 hijo(yadira,gloria).
 hijo(euripides,gloria).
 hijo(antonio,gloria).
 hijo(rita,gillermina).
 hijo(carlos,gillermina).
 hijo(malaquias,gillermina).
 hijo(david,gillermina).
 hijo(francisco,alejandra).
 hijo(esmirna,alejandra).
 hijo(alejandro,alejandra).
 hijo(hugo,alejandra).
 hijo(eslith,fortino).
 hijo(cristal,salvador).
 hijo(alma,salvador).
 hijo(oscar,lilia).
 hijo(uriel,lilia).
 hijo(mariela,lilia).
 hijo(silvia,socorro).
 hijo(samuel,socorro).
 hijo(selene,socorro).
 hijo(geovani,socorro).
 hijo(janeth,socorro).
 hijo(jonathan,socorro).
 hijo(perla,socorro).
 hijo(flor,socorro).
 hijo(guadalupe,socorro).
 hijo(francisco_j,osiel).
 hijo(eduardo,joel).
 hijo(javier_jr,javier).
 hijo(veronica_i,javier).
 hijo(ernesto,alonso).
 
 mujer(francisca).
 mujer(gloria).
 mujer(guillermina).
 mujer(alejandra).
 mujer(lilia).
 mujer(socorro).
 mujer(veronica).
 mujer(yadira).
 mujer(rita).
 mujer(emma).
 mujer(esmirna).
 mujer(eslith).
 mujer(cristal).
 mujer(alma).
 mujer(mariela).
 mujer(silvia).
 mujer(selene).
 mujer(janeth).
 mujer(perla).
 mujer(flor).
 mujer(guadalupe).
 mujer(veronica_i).
 
 hombre(alfonso).
 hombre(fortino).
 hombre(salvador).
 hombre(joel).
 hombre(osiel).
 hombre(javier).
 hombre(alonso).
 hombre(marco_a).
 hombre(jose_a).
 hombre(euripides).
 hombre(antonio).
 hombre(carlos).
 hombre(malaquias).
 hombre(david).
 hombre(francisco).
 hombre(alejandro).
 hombre(hugo).
 hombre(oscar).
 hombre(uriel).
 hombre(samuel).
 hombre(geovani).
 hombre(jonathan).
 hombre(francisco_j).
 hombre(eduardo).
 hombre(javier_jr).
 hombre(ernesto).
 
 
 menu:-nl,nl,write("\t|-------------------------------------------------------------------------------|"),nl,
       write(" |========  M E N U    P R I N C I P A L  ========|"),nl,
       write(" |-------------------------------------------------------------------------------|"),nl, 
       write(" | [1]- Buscar Relacion Tio  |"),nl,
       write(" | [2]- Buscar Relacion Sobrino  |"),nl, 
       write(" | [3]- Buscar Relacion Abuela  |"),nl,
       write(" | [4]- Buscar Relacion Nieta  |"),nl, 
       write(" | [5]- Buscar Relacion Hija  |"),nl, 
       write(" | [6]- Buscar Relacion Bisnieto  |"),nl,
       write(" | [7]- Buscar Relacion Abuelo  |"),nl, 
       write(" | [8]- Buscar Relacion Tia  |"),nl, 
       write(" | [9]- Buscar Relacion Bisabuela |"),nl,
       write(" | [10]- Buscar Relacion Sobrina |"),nl, 
       write(" | [11]- Buscar Relacion Prima  |"),nl, 
       write(" | [12]- Buscar Relacion Hermano |"),nl,
       write(" | [13]- Buscar Relacion Primo  |"),nl, 
       write(" | [14]- Buscar Relacion Hermana |"),nl, 
       write(" | [15]- SALIR   |"),nl,
       write(" |-------------------------------------------------------------------------------|"),nl,nl,nl,
       
       write("  Elija Su Opcion_ ").

 
 ciclo.
 ciclo:-ciclo.
 caso(1):-write("El Tio de_ "),readln(Y),hombre(Z),
          hijo(X,W),hijo(Z,W),hijo(Y,X),Z<>X,
          write("  es ",Z),nl.
 caso(2):-write("El es Sobrino de_ "),readln(Y),hombre(X),
          hijo(X,Z),hijo(Z,W),hijo(Y,W),Z<>Y,
          write("  es ",X),nl.
 caso(3):-write("La Abuela de_ "),readln(Y),mujer(X),
          hijo(Z,X),hijo(Y,Z),
          write("  es ",X),nl.
 caso(4):-write("La Nieta de_ "),readln(Z),mujer(X),
          hijo(Y,Z),hijo(X,Y),
          write("  es ",X),nl.
 caso(5):-write("La Hija de_ "),readln(Y),mujer(X),
          hijo(X,Y),
          write(" es ",X),nl.
 caso(6):-write("El Bisnieto de_ "),readln(W),
          hombre(X),hijo(Z,W),hijo(Y,Z),hijo(X,Y),
          write(" es ",X),nl.
 caso(7):-write("El Abuelo de_ "),readln(Y),hombre(X),
          hijo(Z,X),hijo(Y,Z),
          write("  es ",X),nl. 
 caso(8):-write("La es Tia de_ "),readln(Y),mujer(X),
          hijo(X,W),hijo(Z,W),hijo(Y,Z),X<>Z,
          write(" es ",X),nl.
 caso(9):-write("La Bisabuela de_ "),readln(X),mujer(W),
          hijo(Z,W),hijo(Y,Z),hijo(X,Y),
          write(" es ",W),nl.
 caso(10):-write("La Sobrina de_ "),readln(Y),mujer(X),
           hijo(X,Z),hijo(Z,W),hijo(Y,W),Z<>Y,
           write("  es ",X),nl.
 caso(11):-write("La Prima de_ "),readln(Z),mujer(V),
           hijo(X,W),hijo(Y,W),hijo(Z,X),hijo(V,Y),X<>Y,
           write(" es ",V),nl.
 caso(12):-write("El es Hermano de_ "),readln(Y),hombre(X),
           hijo(X,Z),hijo(Y,Z),Y<>X,
           write(" es ",X),nl.
 caso(13):-write("El Primo de_ "),readln(Z),hombre(V),
           hijo(X,W),hijo(Y,W),hijo(Z,X),hijo(V,Y),X<>Y,
           write(" es ",V),nl.
 caso(14):-write("La Hermana de_ "),readln(Y),mujer(X),
           hijo(X,Z),hijo(Y,Z),Y<>X,
           write(" es ",X),nl.
 caso(15):-nl,nl,nl,write("\tEl Programa Ha Finalizado  presiona    \"Esc\""),
           nl,write("\t\t"),!.
 
goal
 ciclo,system("cls"),menu,readint(OPC),nl,nl,caso(OPC),OPC=15,!.

4 comentarios:

Unknown dijo...

Hola, muy buen aporte!! pero tengo un problema no se utilizar visual prolog me gustaria probar el código pero no se en que parte de visual prolog debo pegarlo :/

Markinho dijo...

Es un proyecto creado en modo Consola en Visual Prolog (no recuerdo la version del editor), espero y esto te pueda ayudar para crear tu proyecto.
http://www.visual-prolog.com/vip/product/default.htm

Markinho dijo...
Este comentario ha sido eliminado por el autor.
José Alberto Espinoza Morelos dijo...

El link no funciona amigo

Publicar un comentario

Deja tu Comentario