Está en la página 1de 19

LOGICA – FCE

Prolog - práctica

Nota preliminar :
En los ejercicios en que haya que escribir o extender un programa Prolog que sea capaz de responder a
determinadas consultas, escriban las consultas. Sirve pensar qué respondería el intérprete.

1) (opcional)
Describir
• forma de representación de la información.
• mecanismo por el cual la información que forma parte del modelo puede ser introducida por los
usuarios.
• forma de manipular la información.
• forma de realizar consultas sobre la información que maneja.
para las siguientes herramientas informáticas :
a. Dbase.
b. Administradores de base de datos con lenguaje de consulta (tipo SQL).
c. Prolog.
d. Lenguaje Pascal o similar.
e. Sistema administrativo.

2)
Demostrar, en el sistema de su elección, las siguientes teoremas, que sirven para reescribir algunas
fórmulas como cláusulas Prolog
a. ((a | b) -> c) <-> ((a -> c) & (b -> c))
b. (a -> ( b & c )) <-> ((a -> b) & (a -> c))

3)
Traducir a cláusulas Prolog las siguientes fórmulas :
a. a -> ( b & c & d )
b. ( a | b ) -> ( b & c & d )

Página Nro. 1
4)
a. La siguiente es la nómina de personal de una empresa :
Departamento de ventas
María : empleada / Juan : cadete
Departamento de compras
Nora : empleada / Pedro : cadete
Departamento de administración
Ana : cadeta / Felipe : empleado
Escribir un programa Prolog que modele a esta empresa, tal que puedan responderse las siguientes
consultas :
• ¿ quiénes trabajan en el departamento de compras ? ¿ y en el de ventas ?
• dadas dos personas, ¿ trabajan en el mismo departamento ?
• dadas dos personas a y b, ¿ puede a darle órdenes a b ?
a puede darle órdenes a b si y sólo si trabajan en el mismo departamento y a tiene un cargo
superior a b. Se considera que “empleado” es un cargo superior a “cadete”.
Escribir las consultas planteadas, y las respuestas que entregaría el intérprete.

b. Agregar un gerente para cada departamento.


c. Agregar un gerente general.

5)
Escribir un programa Prolog que pueda responder consultas sobre qué tipos de movimiento puede hacer
un determinado animal.
Tener en cuenta que :
las aves pueden volar (no tener en cuenta las excepciones).
los mamíferos pueden caminar.
los felinos son mamíferos que, además, pueden correr.
los peces y los delfines pueden nadar.
los gatos son felinos.
los canarios son aves.
los perros son mamíferos.
los peces espada son peces.
e incluir a los siguientes animales como ejemplo :
tweety es un canario.
michifuz es un gato.
fido es un perro.
flipper es un delfín.
cuchi es un pez espada.

Página Nro. 2
6)
Escribir un programa Prolog que pueda responder consultas sobre qué sonidos puede emitir un
determinado animal.
Tener en cuenta que :
los canarios son aves.
los loros son aves.
los loros hablan.
las aves cantan.
los osos gruñen.
los perros cantan ( no es error de tipeo ! ) y ladran.
los perros gruñen.
los gatos maúllan.
e incluir a los siguientes animales como ejemplo :
tweety y piopio son canarios.
pindu y pundi son osos.
pepito y perico son loros.
patán y pulgoso son perros.
michifuz y mitsubishi son gatos.

7)
Escribir un programa Prolog que responda consultas acerca de cuáles son los rivales de una
determinada selección en un campeonato mundial.
Una selección tiene como rivales todos los otros equipos de su mismo grupo (¡ nunca contra sí
misma !).
Incluir en el programa la siguiente información :
• El grupo A está formado por Colombia, Camerún, Jamaica e Italia.
• El grupo B está formado por Argentina, Nigeria, Japón y Escocia.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ cuáles son los rivales de Argentina ?
otorgando como única respuesta "Nigeria", “Japón” y “Escocia”.

Página Nro. 3
8)
a. Escribir un programa Prolog que ayude a una agencia matrimonial, respondiendo consultas sobre qué
parejas son compatibles.
Definimos a una pareja como un par (mujer, varón), no al revés.
Incluir en el programa la siguiente información :
• Las mujeres melancólicas son compatibles con los varones serenos.
• Las mujeres decididas son compatibles con los varones reflexivos.
• Las mujeres soñadoras son compatibles con los varones decididos.
• Juan es sereno y decidido.
• María es melancólica.
• Ursula es decidida.
• Juana es soñadora.
• Pedro es reflexivo.
• José es melancólico.
Según la información descripta, la pareja (María, Juan) es compatible, mientras que la pareja (Ursula,
Juan) no lo es.

b. Agregar al programa la siguiente información :


• Cualquier pareja formada por un decidido y un melancólico es compatible.
Según esta nueva información, la pareja (Ursula, José) es compatible, mientras que si nos remitimos al
punto a. no lo es.

c. Agregar al programa la posibilidad de responder a consultas sobre si una persona es deseable.


Decimos que una persona (varón o mujer) es deseable si es compatible con, por lomenos, dos
personas distintas.
Según la información descripta, Juan es deseable mientras que Juana no lo es.

Página Nro. 4
9)
a. Escribir un programa Prolog que responda consultas acerca de dónde puede ir una determinada
persona a comprarse fruta.
Decimos que una persona puede comprarse fruta en un local si en el local venden alguna fruta que le
gusta a la persona.
Incluir en el programa la siguiente información :
• “La mejor” vende sandías, manzanas y melones.
• “La primera” vende cerezas, manzanas y naranjas.
• “La especial” vende moras, naranjas y uvas.
• A Camila le gustan las manzanas y las cerezas.
• A Pedro le gustan las sandías.
• A Lucía le gustan las moras y los melones.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ dónde puede ir Camila a comprarse fruta ?
otorgando como respuestas "La mejor" y "La primera".

b. Agregar al programa la posibilidad de responder a consultas sobre qué frutas puede ofrecerle un
determinado local a una persona.
Decimos que un local puede ofrecerle una fruta a una persona si el local vende la fruta y a la persona
le gusta la misma.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ qué puede venderle “La mejor” a Camila ?
otorgando como única respuesta "manzanas".

c. Agregar al programa la posibilidad de responder a consultas sobre dónde puede ir caminando una
persona a comprarse frutas.
Decimos que una persona puede ir caminando a comprarse frutas a un local si puede comprar fruta
en ese local (punto a.) y, además, el local está en el barrio donde vive la persona.
Agregar al programa la siguiente información.
• “La mejor” está en Bernal.
• “La primera” y “La especial” están en Mataderos.
• Camila y Pedro viven en Mataderos.
• Lucía vive en Bernal.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ dónde puede ir caminando Camila a comprarse fruta ?
otorgando como única respuesta "La primera".

Página Nro. 5
d. Agregar al programa la posibilidad de responder a consultas sobre qué frutas puede comprarse una
persona yendo a pie.
Decimos que una persona puede comprarse una fruta yendo a pie si a la persona le gusta la fruta, hay
algún local que venda la fruta, y el local está en el barrio donde vive la persona.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ qué frutas puede comprar Lucila yendo a pie ?
otorgando como única respuesta "melones".

10)
Dado el siguiente programa Prolog que describe a una familia
hijo(juan, pedro).
hijo(juan, maria).
hijo(jose, pedro).
hijo(jose, maria).
hijo(pedro, esteban).
hijo(pedro, nora).
hijo(julia, esteban).
hijo(julia, nora).
conyuges(maria,pedro).
conyuges(nora,esteban).

a. agregarle las cláusulas necesarias para que pueda responder a las siguientes consultas, sin distinguir
sexo de las personas (debe responder a “tio” también con las tías)
tio(X, juan).
padre(X,juan).
abuelo(X,juan).
hermano(X,juan).
cuniado(X,maria).

b. extender el programa para que distinga entre sexos (ahora debe diferenciar entre tío y tía, padre y
madre, etc.).

Página Nro. 6
11)
a. Escribir un programa Prolog que responda consultas acerca de a qué voltajes pueden funcionar los
televisores de una determinada marca, sabiendo que:

• Los televisores japoneses pueden funcionar a 220 voltios, al igual que los alemanes.
• Los televisores hindúes (de la India) pueden funcionar a 110 voltios.
• Los televisores cameruneses (de Camerún) pueden funcionar tanto a 380 voltios como a 110
voltios.
• Todos los televisores asiáticos pueden funcionar a 380 voltios.
• Hitachi y Honda son marcas de televisores japoneses.
• Pradesh y Agra son marcas de televisores hindúes.
• Mokuta es una marca de televisores cameruneses.
• Grundig y Fokker son marcas de televisores alemanes.
• Los televisores Philco pueden funcionar a 220 voltios.
• Entre las marcas mencionadas, las asiáticas son las japonesas y las híndúes, y ninguna más.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta
¿ a qué voltajes pueden funcionar los televisores Honda ?
obteniendo como respuestas “220” y “380”.

b. Modificar el programa anterior para que responda consultas acerca de a qué países pueden exportarse
los televisores de una determinada marca.
Se dice que los televisores de una marca pueden exportarse a un país si pueden funcionar al voltaje
que se utiliza en ese país.
Incluir en el programa la siguiente información:

• En Brasil se utilizan 220 voltios.


• En Panamá se utilizan 110 voltios.
• En Turquía y en Irán se utilizan 380 voltios.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta
¿ a qué países pueden exportarse los televisores de marca Mokuta ?
obteniendo como respuestas “Panamá”, “Turquía” e “Irán”.

Página Nro. 7
12)
Escribir un programa Prolog que pueda responder consultas sobre la tendencia de las acciones que
cotizan en bolsa para distintas empresas, dada la siguiente información :
• las acciones de las petroleras tienen tendencia a la baja
• las acciones de los bancos tienen tendencia al alza
• las acciones de las alimentarias tienen tendencia estable
• YPF y Astra son petroleras que cotizan en bolsa
• Texaco es una petrolera que no cotiza en bolsa
• Cargill y Quaker son alimenticias que cotizan en bolsa
• Banco Francés y Banco Galicia cotizan en bolsa
• Banco Río no cotiza en bolsa

Obviamente, las empresas que no cotizan no tienen ninguna tendencia.


El programa debe ser capaz de responder a estas consultas :
a. qué bancos conoce.
b. qué empresas conoce que no cotizan en bolsa.
c. qué empresas conoce que tengan tendencia alcista / bajista / constante.
d. qué tendencia tiene una determinada empresa.
e. qué empresas conoce del mismo rubro que una determinada empresa.

13)
Escribir un programa Prolog que ayude a un organizador a armar un festival, considerando las orquestas
que se pueden formar en cada barrio.
Para formar una orquesta son necesarios un guitarrista, un saxofonista y un baterista. Se dispone de la
siguiente información:
• Kurt y Josh son guitarristas y viven en Almagro.
• Mick es un saxofonista que vive en Almagro.
• Linda es una saxofonista que vive en Olivos.
• Emilio es un baterista que vive en Once.
• Abdul es un baterista que vive en Villa Crespo.
• Lara es una baterista que vive en Almagro.
El programa debe responder, dadas tres personas, si pueden formar una orquesta. Además, dado un
barrio, el programa debe responder si en ese barrio se puede o no formar una orquesta.

Página Nro. 8
14)
a. Escribir un programa Prolog que responda consultas acerca de qué colores atraen a una determinada
persona, de acuerdo con la siguiente información:

• A Mabel y a Ana les atrae el rosa.


• A Mara le atraen el celeste y el lila.
• A Juan le atraen todos los colores pastel.
• A todas las mujeres y a Pablo les atrae el azul.
• A los varones mayores y a Mabel les atrae el rojo.
• A todos los porteños (sin importar el sexo) y a Adrián les atrae el amarillo.
• A Ana y a Juan les atrae el naranja.
• Mabel, Mara y Pablo son porteños.
• Ana y Pablo son mayores.
• El rosa, el celeste y el lila son colores pastel.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta
¿ qué colores atraen a Mabel?
obteniendo como respuestas “rosa”, “azul”, “rojo” y “amarillo”.

b. Modificar el programa anterior para que responda consultas acerca de con qué colores puede
iluminarse una determinada reunión.
Se dice que una reunión puede iluminarse con un color si entre los asistentes a la reunión hay una
pareja (dos personas de distinto sexo) a quienes les atrae el color.
Incluir en el programa la siguiente información:

• Mabel, Ana, Adrián y Pablo asistirán a la reunión del viernes.


• Mara, Mabel, Adrián y Juan asistirán a la reunión del sábado.
• Las personas mayores y Juan asistirán a la reunión del domingo.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta
¿ con qué colores puede iluminarse la reunión del sábado?
obteniendo como respuestas “rosa”, “celeste”, “lila” y “amarillo”.

Página Nro. 9
15)
a. Escribir un programa Prolog que responda consultas acerca de en qué idiomas pueden comunicarse
dos personas entre sí. Decimos que un dos personas pueden comunicarse en un idioma si ambas lo
hablan.
Incluir en el programa la siguiente información :

• Guillermo habla castellano, inglés y hebreo.


• Omar habla árabe y castellano.
• Estela habla francés, italiano e inglés.
• Marcos habla italiano, francés, árabe y hebreo.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ en qué idiomas pueden comunicarse Estela y Marcos ?
otorgando como respuestas "italiano" y "francés".

b. Agregar al programa la posibilidad de responder a consultas sobre con qué personas puede
comunicarse una determinada persona.
Decimos que dos personas pueden comunicarse entre sí si hay algún idioma que ambas hablen.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ con quiénes puede comunicarse Estela ?
otorgando como respuestas "Guillermo" y "Marcos".

c. Agregar al programa la posibilidad de responder a consultas sobre qué pares de personas pueden
comunicarse entre sí. Formular cómo le harían al programa la siguiente consulta :
¿ pueden comunicarse entre sí Estela y Marcos ?
(la respuesta que otorgue el programa debería ser "sí").
Ayuda : si resolvieron el punto b., ¿ es necesario definir nuevos predicados, o alcanza con usar alguno
ya definido ?

d. Agregar al programa la posibilidad de responder a consultas sobre a quiénes puede enviarse de


traductores acompañando a una determinada persona a un determinado país.
Decimos que una persona A puede acompañar a B al país C como traductor si A y B pueden
comunicarse entre sí, y A habla el idioma oficial del país C.
Incluir en el programa la siguiente información :
• El idioma oficial de Israel es el hebreo.
• El idioma oficial de Siria es el árabe.
• El idioma oficial de Francia es el francés.
• El idioma oficial de Argentina es el castellano.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ quién puede acompañar a Estela como traductor para viajar a la Argentina ?
otorgando como única respuesta "Guillermo".
Página Nro. 10
16)
a. Escribir un programa Prolog que responda consultas acerca de a qué secciones puede destinarse un
nuevo empleado, teniendo en cuenta que:

• Contaduría pidió contadores que hablen inglés.


• Legales pidió abogados jóvenes.
• Logística pidió profesionales jóvenes que hablen francés.
• Ventas pidió profesionales que hablen dos idiomas.
• Los abogados y los contadores son profesionales.
y que los nuevos empleados son

• Luis, que es un contador joven que habla francés.


• Mara, que es una abogada joven que habla francés.
• Paola, que es una contadora que habla inglés y francés.
• Roque, que es un contador joven que habla inglés y francés.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta
¿ a qué secciones puede destinarse a Paola ?
otorgando como respuestas “Contaduría” y “Ventas”.

b. Agregar al programa anterior la posibilidad de responder consultas acerca de cuáles de los nuevos
empleados son atractivos para una sección.
Se dice que un empleado es atractivo para una sección si puede destinarse a esa sección, y además
puede destinarse a otra sección distinta.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta
¿ cuáles de los nuevos empleados son atractivos para Logística ?
otorgando como respuestas “Mara” y “Roque”.

17)
a. Escribir un programa Prolog que ayude a un estudio que desarrolla software, respondiendo consultas
sobre qué personas pueden trabajar junto con una determinada persona.
Decimos que dos personas pueden trabajar juntas si hay alguna herramienta que ambas conozcan.
Incluir en el programa la siguiente información :
• Juan maneja Pascal, Clipper y Prolog.
• Pedro maneja Clipper y Basic.
• Ofelia maneja Basic y Pascal.
• Diana maneja Pascal, Access y Prolog.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ con quiénes puede trabajar Ofelia ?
otorgando como respuestas "Juan" y "Diana".
Página Nro. 11
b. Agregar al programa la posibilidad de responder a consultas sobre qué personas pueden trabajar en
un determinado proyecto.
Decimos que una persona puede trabajar en un proyecto si maneja alguna de las herramientas que se
van a usar para desarrollarlo.
Incluir en el programa la siguiente información :
• El proyecto A se desarrollará usando Prolog.
• El proyecto B se desarrollará usando Access y Basic.
• El proyecto C se desarrollará usando Pascal.
• El proyecto D se desarrollará usando Access.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ quiénes pueden trabajar en el proyecto B ?
otorgando como respuestas "Pedro", "Ofelia" y "Diana".

c. Agregar al programa la posibilidad de responder a consultas sobre si un estudio puede encarar un


determinado proyecto.
Decimos que el estudio puede encarar un proyecto si hay dos personas (¡ distintas entre sí !) que
pueden asignársele. Una persona puede asignarse a un proyecto si puede trabajar en el mismo, según
la definición del punto anterior.
Con la información incluida, el programa debería responder que sí se pueden encarar los proyectos A,
B y C, y que no puede encararse el D.

d. Modificar el programa para que no cuente entre las personas que pueden asignarse a un proyecto
aquellas que ya tienen un proyecto asignado. El programa debe modificar la respuesta a la consulta
planteada en el punto c.
Incluir en el programa la siguiente información :
• Juan tiene un proyecto asignado.
Ahora el programa debería responder que sí se pueden encarar los proyectos B y C, y que no pueden
encararse los proyectos A y D.

Página Nro. 12
18)
a. Escribir un programa Prolog que responda consultas acerca de en qué aspectos dos personas
coinciden en sus preferencias, y también acerca de en qué aspectos dos personas tienen preferencias
opuestas entre sí. Los aspectos a tener en cuenta son: el fútbol, la inclinación política, y el color
preferido de cada persona.
Incluir la siguiente información :
• Ana es de River, políticamente de izquierda, y su color preferido es el blanco.
• Jorge es de Boca, políticamente de centro, y su color preferido es el blanco.
• Pedro es de Racing, políticamente de derecha, y su color preferido es el verde.
• Rosa es de Independiente, políticamente de izquierda, y su color preferido es el negro.
• River y Boca se consideran opuestos entre sí, así como Racing e Independiente.
• Las inclinaciones políticas de izquierda y derecha se consideran opuestas entre sí.
• Los colores blanco y negro se consideran opuestos entre sí.
El programa debe ser capaz de responder, p.ej., a la siguientes consultas :
¿ en qué aspectos coinciden Ana y Jorge en sus preferencias ? y
¿ en qué aspectos las preferencias de Ana y Jorge son opuestas ?
otorgando en ambos casos una única respuesta, “color” y “fútbol” respectivamente.

b. Agregar a los aspectos considerados en el programa anterior la serie preferida de televisión de cada
persona, tomando en cuenta que
• La serie preferida de Ana y Jorge es SuperAgente 86.
• La serie preferida de Pedro es El Agente de Cipol.
• La serie preferida de Rosa es Batman.
• SuperAgente 86 y El Agente de Cipol se consideran preferencias opuestas.
Si se consulta al programa modificado
¿ en qué aspectos coinciden Ana y Jorge en sus preferencias ? y
otorgará dos respuestas, “color” y “serie de televisión”.
Analizar si para agregar este nuevo aspecto hubo que modificar partes del programa anterior, agregar
nuevas partes o eliminar partes anteriores. Comparar con el tipo de modificación que hubiera
requerido un programa escrito p.ej. en C, Pascal/Delphi, VisualBasic o su lenguaje estructurado o
con objetos de su preferencia.

Página Nro. 13
19)
a. Escribir un programa Prolog que pueda responder consultas sobre qué materias puede cursar un
alumno del CBC en una determinada sede. Decimos que un alumno puede cursar una materia en una
sede, si la materia se cursa en esa sede y sirve para la carrera que cursa el alumno.
Incluir en el programa, como mínimo, a las siguientes materias del CBC :
• Diseño, que sirve para Arquitectura. Se cursa en Ciudad Universitaria.
• Economía, que sirve para Contador Público. Se cursa en Puán y San Isidro.
• Matemática, que sirve para Contador Público, Arquitectura e Ingeniería. Se cursa en Ciudad
Universitaria y Drago.
• Introducción al Pensamiento Científico, que sirve para todas las carreras. Se cursa en Ciudad
Universitaria, Puán y San Isidro.
• Biología, que sirve para Medicina. Se cursa en Ciudad Universitaria.
• Física, que sirve para Ingeniería y la Licenciatura en Biología. Se cursa en Drago y Puán.
y a los siguientes alumnos
• Lucía, Carmen y Juan, que estudian para Contador Público.
• Ana, que estudia Ingeniería.
• Paola y Luis, que cursan la Lic. en Biología.
• Noemí y Pablo, que estudian Arquitectura.
• Angel, que estudia Sociologia.
• Dora, que estudia Medicina.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ qué materias puede cursar Juan en Ciudad Universitaria ?
otorgando como respuestas "Matemática" e "Introducción al Pensamiento Científico".
b. Agregar al programa la posibilidad de responder a una consulta, efectuada mediante un predicado
diádico, sobre qué materias puede cursar un alumno sin importar en qué sede.
El programa debe ser capaz de responder, mediante el nuevo predicado, a p.ej. la siguiente consulta :
¿ qué materias puede cursar Juan ?
+otorgando como respuestas "Economía", "Matemática", e "Introducción al Pensamiento
Científico".

c. Mejorar el programa, para que no incluya entre las materias que puede cursar un alumno aquellas que
ya aprobó.
Incluir la siguiente información :
• Juan aprobó Economía e Introducción al Pensamiento Científico.
• Carmen aprobó Matemática
• Ana aprobó Física
• Luis aprobó Introducción al Pensamiento Científico

Página Nro. 14
• Noemí aprobó Diseño e Introducción al Pensamiento Científico

Página Nro. 15
20)
a. Escribir un programa Prolog que ayude a una casa de comidas, respondiendo consultas acerca de qué
menúes puede servir.
Cada menú se compone de dos platos : una entrada y un plato principal.
Decimos que un menú se puede servir si hay existencias tanto de su entrada como de su plato
principal.
Incluir en el programa la siguiente información :
• El menú imperial tiene como entrada ensalada rusa, y como plato principal pollo al horno.
• El menú continental tiene como entrada papas fritas, y como plato principal pollo al horno.
• El menú mac tiene como entrada papas fritas, y como plato principal hamburguesa.
• El menú clásico tiene como entrada papas fritas, y como plato principal milanesa.
• Hay en existencia pollo al horno, papas fritas y hamburguesa.
Para aclarar las cosas : dada la información incluida, las respuestas del programa a la consulta
" qué menúes pueden ofrecerse"
serían "mac" y "continental".

b. Describir cómo le harían al programa desarrollado en el punto anterior, la siguiente consulta :


" puede ofrecerse el menú mac"
la respuesta que se espera es "sí".

c. Adaptar el programa para que pueda, además, responder consultas acerca de qué menúes pueden
proponerse a una persona.
Decimos que un menú puede proponerse a una persona si uno de los dos platos que componen el
menú le gustan a la persona. No es necesario que el menú pueda servirse, según la definición del
punto anterior.
Incluir en el programa la siguiente información :
• A Julián le gustan las papas fritas.
• A Ana le gustan la ensalada rusa y la milanesa.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ qué menúes pueden proponerse a Ana ?
otorgando como respuestas "imperial" y "clásico".

d. Adaptar el programa para que no incluya entre los menúes que pueden proponerse a una persona
aquellos que incluyan un plato que le disguste a la persona.
Incluir en el programa la siguiente información :
• A Julián le disgustan las hamburguesas.
• A Ana le disgusta el pollo al horno.

Página Nro. 16
La única respuesta del programa modificado a la consulta
¿ qué menúes pueden proponerse a Ana ?
debería ser "clásico".

e. Agregar al programa la posibilidad de responder consultas acerca de qué platos faltan para poder
servir un determinado menú.
Decimos que un plato falta para poder servir un menú si el plato es uno de los dos componentes del
menú, y no hay existencias del mismo.
El programa debe ser capaz de responder, p.ej., a la siguiente consulta :
¿ qué platos faltan para poder servir el menú clásico ?
otorgando como única respuesta "milanesa".

21)
Asesor financiero personal

Escribir un programa Prolog que pueda dar recomendaciones acerca de la administración de los ingresos
de una persona, dadas algunas características de la misma.
Para una persona, el programa debe recomendar exactamente una de entre estas acciones :
• ahorrar
• comprar bienes
• una combinación de compra y ahorro.
En el último caso, no se solicita que el programa calcule qué proporción destinar a cada fin, la
recomendación deja abierta esta cuestión.
La decisión a tomar por el programa se basa en dos parámetros :
• un monto mínimo de previsión, que se considera que toda persona debe acumular.
• un nivel de ingresos que se considera como holgado.
Ambos valores se calculan a partir de la cantidad de personas a cargo que tiene cada persona. Dada una
persona P, si llamamos N a la cantidad de personas a cargo de P, calcularemos que :
• el monto mínimo de previsión que P debe tener acumulado es 5000 * N.
• el nivel de ingreso de P se considera holgado si supera 15000 + (4000 * N)
Las reglas que debe tener en cuenta el asesor para decidirse acerca de qué recomendar para una
determinada persona P son las siguientes :
• si el ahorro acumulado por P es menor al monto mínimo de previsión que le corresponde, entonces
la recomendación será ahorrar.
• si el ahorro acumulado por P iguala o supera su monto mínimo de previsión, y su ingreso está por
debajo del nivel que se considera holgado (teniendo en cuenta las características de P), entonces la
recomendación será combinar.

Página Nro. 17
• si el ahorro acumulado por P iguala o supera su monto mínimo de previsión, y su ingreso se
considera holgado (teniendo en cuenta las características de P), entonces la recomendación será
comprar bienes.
La idea general es destinar al ahorro lo que se considere prudente, y el resto a compra de bienes.

Se recomienda incluir en el programa la información relevante acerca de las siguientes personas, para las
cuales se indica qué recomendación debe sancionar el programa.
• Juan, cuyo ahorro acumulado es de $ 22.000.-, tiene tres personas a cargo, y tiene un ingreso anual de
$ 25.000.- .
La recomendación para Juan será combinación, pues su ahorro acumulado supera su nivel de
previsión (5000 x 3 = 15000 < 22000), y el ingreso es menor a lo que se considera holgado (15000 +
(4000 x 3) = 27000 > 25000).
• Eva, cuyo ahorro acumulado es de $ 13.500.-, tiene cuatro personas a cargo, y cuyo ingreso anual es
de $ 14.000.- .
La recomendación para Eva será ahorrar, pues su ahorro acumulado es inferior a su nivel de
previsión (5000 x 4 = 20000 > 13500), y por lo tanto la recomendación no tiene en cuenta su nivel de
ingreso.

22)
Implementar las siguientes modificaciones y agregados sobre el asesor financiero personal.
a. Agregar la información acerca de las siguientes personas :
• Néstor, cuyo ahorro acumulado es de $ 32.000.-, tiene una persona a cargo, y tiene un ingreso
anual de $ 21.000.- .
La recomendación para Néstor será comprar bienes, pues su ahorro acumulado supera su nivel
de previsión (5000 x 1 = 5000 < 32000), y su ingreso está en un nivel que se considera holgado
(15000 + (4000 x 1) = 19000 < 21000).
• Ana, cuyo ahorro acumulado es de $ 22.000.-, tiene cinco personas a cargo, y tiene un ingreso
anual de $ 30.000.- .
• Luis, cuyo ahorro acumulado es de $ 83.000.-, tiene seis personas a cargo, y tiene un ingreso
anual de $ 45.000.- .
¿ Cuál será la recomendación del programa para Ana ? ¿ Y para Luis ?

b. Modificar el criterio para considerar el nivel de ingreso de una persona como holgado. Ahora se debe
tener en cuenta, además del total de personas a cargo, cuántas de ellas están estudiando.
Si una persona P tiene N personas a cargo, de las cuales E están estudiando, el nivel de ingreso de P
se considera holgado si iguala o supera al resultado de calcular 15000 + (4000 * N) + (2500 * E).
Por ejemplo: si Pedro tiene cinco personas a cargo, de las cuales tres están estudiando, se considera
que el nivel de ingreso de P es holgado si supera 15000 + (4000 x 5) + (2500 x 3) = 42500.
Observar que debe incluirse en la información a introducir respecto a cada persona, no sólo la
cantidad de personas a su cargo, sino también el detalle acerca de cuántas de ellas están estudiando.

Página Nro. 18
c. Agregar como nueva acción recomendable por el asesor financiero el ayuno.
El asesor recomendará la acción de ayuno para una persona si y sólo si su ingreso anual no supera los
$ 10000. En este caso:
no se toma en cuenta el ahorro acumulado por la persona.
debe tenerse en cuenta que, dada una persona, el programa debe recomendar exactamente una acción
para la misma. Luego de agregar la posibilidad de que el asesor recomiende el ayuno, el programa
deberá modificar su criterio para algunas personas para las que antes se recomendaba ahorrar o
combinación.

Página Nro. 19

También podría gustarte