informe de trbajo prolog

16
PARIENTES - HEMOFILIA Base de datos a trabajar: Llevando data a prolog como hechos convenientes para definir PARIENTES y desde ahí definir la transmisión de la HEMOFILIA . HECHOS PROPUESTOS EN PROLOG :

Upload: victor-villacorta

Post on 02-Jul-2015

134 views

Category:

Documents


14 download

TRANSCRIPT

Page 1: informe de trbajo prolog

PARIENTES - HEMOFILIA

Base de datos a trabajar:

Llevando data a prolog como hechos convenientes para definir PARIENTES y desde ahí definir la transmisión de la HEMOFILIA .

HECHOS PROPUESTOS EN PROLOG :

Page 2: informe de trbajo prolog

Ahora definiré las reglas empleadas :

En la línea 37 ocurre:”si X es madre de Y o X es padre de Y, entonces X es progenitor de Y” .Donde con la función Prog uno las funciones Padre y Madre en una sola.

Luego En la línea 38 :” si X y Y tienen la misma madre , distintos entre si , entonces X es hermano de Y“.

Y en la línea 39 y 40 hago uso de la recursión para generar ancestros : “comenzando con el caso base ,mis progenitores

Page 3: informe de trbajo prolog

son mis antecesores directos ,y luego con el caso general ,los progenitores de mis antecesores son mis antecesores”.

Aca ya comienzo a formar la definición clara de lo que es PARIENTE , siendo toda persona que tiene vinculo de sangre segun lo pedido.

En la línea 45 planteo :”X tiene un parentesco con Y , si X es antecesor o Y es antecesor de X o si ambos son hermanos”.

Luego en la línea 48 con la función TIO hallo los tios directos y los tios abuelos , con el planteo :”X es tio de Y ,si X es hermano de algún Z y este tiene un parentesco con Y”, lo de” NOT” es para evitar repeticiones con la función anterior , lo de X\==Y es para no repetir el mismo valor.

Y en la línea 51 uso la función PRIMO DE X para generar las personas “Y” que tienen como antecesor a los tios “Z” , sin

Page 4: informe de trbajo prolog

embargo estas personas no deben estar bajo las condiciones de las funciones anteriores par evitar repeticiones. Ademas agrege que “Z” debe ser mujer, ya que si se omite este dato prolog repetirá 2 veces cada solución al encontrar “Z” hombre y mujer que son esposos y antecesores de las mismas personas.

Cierto en las 46 ,49 y 53 asocio a las funciones ya definidas en una sola : PARIENTES ,cumpliendo asi mi cometido.

EJM :

Page 5: informe de trbajo prolog

Continuando con el análisis :

En l línea 56 lo unico que hago es definir la función DESCENDIENTE que es lo contrario a ANTECRSOR.

Para lo que prosigue agregue nuevos hechos :

Page 6: informe de trbajo prolog

Asi defini en las líneas 59 y 60 las funciones ESPOSA y ESPOSO, donde para serlos deben tener los mismos hijos,y como toda pareja posee un hijo varon , al agregar este hecho ya no se produce soluciones repetidas.

Luego en la línea 62 plantee CONYUGE , que seria la forma de unificar las funciones ESPOSA y ESPOSO en una sola.

Y en la línea 64 planteo :” X es cuñado de Y , si Z es conyuge de Y y Z es hermano de X”. Y en la línea 65 defino CUÑADAS donde se implementa el que X,Y sean mujeres.

EJM:

Page 7: informe de trbajo prolog

Ahora una vez definidas las relaciones familiares , pasamos al análisis de la HEMOFILIA, la cual solo la contagia la madre a los hijos.

Tras un análisis no damos cuenta que si Roberto tiene hemofilia , entonces su madre la tiene y esto implica que todo pariente mujer de Roberto también esta contagiada.Y esta idea la plasmo en la línea 71.

Para luego al ya tener las mujeres con hemofilia ,solo me faltaría los hijos varones de las mismas. Idea plasmada en la línea 74.

Lo de la línea 77 y 78 es una recursión de para contar listas .Primero doy el caso inicial len([],0) luego digo conforme hallo elementos los coloco como cabeza y el

Page 8: informe de trbajo prolog

numero de elementos será el de la cola+1, y asi el proceso acabara cuando ya no halle mas elementos en la lista.

Y lo de la línea 80 nos da el numero de hemofílicos ,de la siguiente manera: la función ya esta definida en el programa y pone a los hemofílicos en una lista “L”, la cual es contada con la función “LEN” ya definida.

Y AHORA SI PUEDO CONTESTAR A LAS PREGUNTAS :

1-¿Quiénes tienen hemofilia?2-¿Quiénes son los parientes de Juanito?3-¿Quiénes son los descendientes de Pedro?4-¿Quiénes son los antecesores de Juanita?5¿Averigüe ud, Quiénes son cuñadas….Especificando de quién?6-¿Cuántos tienen hemofilia?

DESARROLLO :

1-

Page 9: informe de trbajo prolog

2-

3-

4-

Page 10: informe de trbajo prolog

5-

6-

PREGUNTAS EXTRAS :

7-¿Quiénes no tienen papa?

8-¿Quiénes no tienes hijo?

DESARROLLO :

7-

Aca hago digo: “si existe un Y talque Y es madre de X, pero no existe un Z tal que sea papa de X , entonces X no tiene papa”.

Page 11: informe de trbajo prolog

8-

Planteo :

Línea 90: si X es varon y no existe un Z tal que X sea padre de Z, entnces X no tiene hijo.

Línea 91: si X es mujer y no existe un Z tal que X sea madre de Z, entnces X no tiene hijo.

Page 12: informe de trbajo prolog

SIDA

Para este caso usare la misma base de datos , propuesta para el caso HEMOFILIA .Donde el contagio de esta enfermedad según se pide se da conyugalmente y de madre a hijo varon.

Teniendo como datos que JOSE y ADAN poseen sida , debo generar la lista de portadores con la regla de contagio ya expuesta.

En la línea 100 planteo “Si X es esposa de un infectado Y , entonces X tiene sida ”,(contagio conyugal).

Luego en la línea 101 :”SI Y tiene sida y es madre de X , entonces X tiene sida”,(contagio madre a hijo).

Y en la línea 103 planteo las condiciones que indican quien a podido infectarse por contagio sexual (CS) no conyugal :

“ Si X es varon y su madre no tiene sida o no tiene madre declarada en los datos entonces X pudo obtener el sida fuera del matrimnonio”

Page 13: informe de trbajo prolog