GUÍA DE EJERCICIOS PRÁCTICOS 2015 - paradigmas

GUÍA DE EJERCICIOS PRÁCTICOS
2015
Ing. José Oscar Mugetti Mare
PARADIGMA LOGICO
Paradigmas de Programación
Ingeniería en Sistemas de información
UTN FRSFCO
José Oscar Mugetti Mare
TRABAJO PRÁCTICO 1
1. Evalúa las siguientes expresiones y clasifícalas en átomos, variables, símbolos
predicativos negados y no negados y conectivos:
a. Raquel
f. come (josé, pan)
b. 3200
g. 
h. san francisco
c. 
d. a, b, c,
i. , 
e. A, B, C,
j. ~juega(carlos, fútbol)
2. Para el cálculo de predicados deben considerarse equivalencias consideradas
básicas, deberá determinarlas:
Expresión
Equivalencias
a. ~(~X1)
b. X1  X2
c. ~(X1  X2)
d. ~(X1  X2)
e. X1  X2
f. X1  X2
g. X1  (X2  X3)
h. X1  (X2  X3)
i. X1  (X2  X3)
j. X1  (X2  X3)
k. X1  X2
3. Dados los siguientes predicados:
padre (X, Y)
X es el padre de Y
madre (X, Y)
X en la madre de Y
femenino (X)
X es femenino
masculino (X)
X es masculino
Defina las relaciones para:
a. hermanos
b. hermanas
c. nieto
d. primo
e. descendiente
4. A partir de los siguientes predicados:
padre (padre, hijo)
madre (madre, hijo)
casados (hombre, mujer)
lindo (X)
Paradigma Funcional
1 / 10
Paradigmas de Programación
Ingeniería en Sistemas de información
UTN FRSFCO
José Oscar Mugetti Mare
y considerando los siguientes hechos:
juan es padre de marcelo y maría
miriam es la madre de ricardo
raul es el padre de sergio
marcelo es el padre de raul y rita
rita es la madre de victor y verónica
miriam y rita son lindas
Se desea extrar las siguientes respuestas:
a. Quién es el abuelo de víctor
b. Quién es el nieto de raúl
c. Quién es la hermana de víctor
d. Quién es la hermana de verónica
e. De quién es hija verónica
f. Quién está casado con alguien linda
g. Qué relación familiar tienen las personas lindas
h. Quiénes son tíos y cuales son sus sobrinos
Se debe escribir un programa capaz de responder a las interrogaciones anteriores
5. Plantear el siguiente problema en cláusulas de Horn:
Un dragón es feliz si todas sus crías pueden volar
Los dragones verdes pueden volar
Un dragón es verde si al menos uno de sus progenitores es verde, en
cualquier otro caso es rosa.
Demostrar a través de inferencias:
a. Que los dragones verdes son felices
b. Que debería ser un dragón rosa para ser feliz
Paradigma Funcional
2 / 10
Paradigmas de Programación
Ingeniería en Sistemas de información
UTN FRSFCO
José Oscar Mugetti Mare
TRABAJO PRÁCTICO 2
1. Considerando los siguientes predicados:
Persona (nombre, edad, sexo)
Mayor_edad (nombre, sexo)
Y sabiendo que:
Juan tiene 20 años
Pedro tiene 30 años
Luis tiene 28 años
Ana tiene 10 años
Alejandra tiene 43 años
Jorge tiene 60 años
... ingresar 10 más
a. Escribir un programa que permita identificar a las personas mayores de edad,
identificándolas como hombres y mujeres (recordar la mayoría a los 21 años)
b. Escribir un programa que permita identificar a las personas de mayor edad en
cada uno de los sexos.
2. A partir de los siguientes predicados:
Persona (nombre, sexo)
Amistad (nombre, nombre)
Sospechoso (nombre)
Y considerando:
Bárbara es amiga de Juan
Bárbara es amiga de Roberto
Bárbara es amiga de María
Susana es amiga de Juan
Susana es amiga de Pedro
Se debe escribir un programa en turbo prolog que permita individualizar a los
sospechosos del asesinato de susana. Para ello debemos considerar como sospechoso:
a. Los hombres que tuvieron amistad con Susana
b. Las mujeres que tuvieron relación con hombres que Susana conocía
c. Los amigos de mujeres que tuvieron relación con hombres que Susana
conocía.
3. Dado la siguiente situación, un jurado debe determinar el orden de llegada de los
corredores de una carrera, pero por una extraña razón los corredores manifiestan
lo siguiente:
Antonio: “Yo no he llegado último”
Bernardo: “Carlos ha llegado tercero”
Carlos: “Antonio ha llegado inmediatamente después de Ernesto”
Daniel: “Ernesto ha llegado en segundo lugar”
Paradigma Funcional
3 / 10
Paradigmas de Programación
Ingeniería en Sistemas de información
UTN FRSFCO
José Oscar Mugetti Mare
Ernesto: “Daniel no ganó la carrera”
Carlos: “Llegó después de Antonio”
Se logrado determinar que los dos primeros mienten y los otros no. ¿Podremos ayudar
al jurado a determinar el orden de llegada de los corredores?.
4. En base a las siguientes afirmaciones:
Todo hongo es una seta o un champignon.
Todo boletus es un hongo.
Todas las setas son venenosas.
Ningún boletus es un champignon.
Se pide realizar un programa en Turbo-prolog que determine cuáles son los hongo
posibles de ser comidos.
5. Resuelva a través de Turbo-Prolog el siguiente problema:
Antonio y Miguel son socios del Club Alpino.
Todo socio del Club Alpino que no es un esquiador es un escalador de
montañas.
A los escaladores de montañas no les gusta la lluvia.
Si a alguien no le gusta la nieve no es un esquiador.
A Miguel le disgusta todo lo que a Antonio le gusta, y le gusta todo lo que
a Antonio le disgusta.
A Antonio le gusta la lluvia y la nieve.
Plantear el siguiente objetivo: Existe algún socio del Club Alpino que sea escalador de
montañas pero no esquiador, ¿Quien?.
6. Deberá realizar un programa en turbo-prolog que determine identificar arcos:
Ejemplo: Objetivo identificar arcos: Arco: sucesión de bloques que forman un
dintel y dos columnas.
Dictaminar si hay algún arco formado por estos bloques:
Y= dintel
Y
X= pilar
(este es un arco)
X
Z
Z= pilar
Ejercicios:
a.
d
c
a
b
b.
e
b
d
a
Paradigma Funcional
e
c
4 / 10
Paradigmas de Programación
Ingeniería en Sistemas de información
UTN FRSFCO
José Oscar Mugetti Mare
TRABAJO PRÁCTICO 3
1. Dado un mapa como el siguiente, en el cual se indican las ciudades, las distancias
entre ellas y cuantos kilómetros son de camino de tierra (la cantidad entre
paréntesis). Se le solicita que construya un programa PROLOG, cuyo predicado
permita indicar de cuantos caminos alternativos se disponen para realizar el
recorrido entre dos ciudades y cuáles son sus distancias indicando cuántos de
éstos kilómetros son de tierra para cada recorrido.
A
5 (2)
3 (1)
2 (0)
B
6 (3)
6 (1)
E
10 (4)
1(0)
2 (2)
4 (1)
D
C
2 (2)
2. El objetivo del presente es poder llegar al tesoro de manera segura, para ello
deberá definir la ruta desde la entrada al tesoro, sabiendo que los predicados
pueden ser definidos de la siguiente manera:
GALERIA(caverna,caverna)
VECINAS(caverna,caverna) (unidas por una galería)
PELIGRO(caverna) (Los peligros son las cavernas de: Alarma, Ladrones y Monstruos
RUTA(caverna,caverna)
Estos son solamente ejemplos, Ud. puede utilizar los mismos o bien definir unos
nuevos.
El formato aproximado del laberinto sería el siguiente
CAVERNA
ALARMAS
LADRONES
GALERÍA
ENTRADA
GALERÍA
FUENTE
GALERÍA
COMIDA
GALERÍA
MONSTRUOS
TESORO
CAVERNA
Paradigma Funcional
5 / 10
Paradigmas de Programación
Ingeniería en Sistemas de información
UTN FRSFCO
José Oscar Mugetti Mare
TRABAJO PRÁCTICO 4: Listas
1. Ingresando un número real y su factorial, deberá responder verdadero si
corresponde, caso contrario falso.
2. Hallar el factorial de un número real.
3. Hacer una notación para separar a cabeza de la cola de la lista: a través del
símbolo "|". Así, la lista [a,b,c] es [a|[b,c]].
4. Hallar los elementos que corresponde a la intersección de dos listas ingresadas
5. Encontrar el máximo elemento de una lista
6. Hallar la longitud de una lista
7. Sumar los elementos de una lista
8. Determinar si un elemento es miembro de una lista
9. Eliminar un elemento de una lista
10. Ordenar los elementos de una lista de enteros
11. Concatenar dos listas
12. Hallar el n-esimo elemento de una lista
13. Invertir una lista
14. Recorrer un árbol, formando una lista con los nodos que se visitan
15. Determinar si un elemento aparece en un árbol
16. Dada una lista y un elemento, obtener una lista que no contenga dicho elemento
Paradigma Funcional
6 / 10
Paradigmas de Programación
Ingeniería en Sistemas de información
UTN FRSFCO
José Oscar Mugetti Mare
TRABAJO PRÁCTICO 5: Programación avanzada (opcional)
1. Definir un predicado Hanoi (N, A, B, C, Movin) que resuelva el problema de la torre
de Hanoi, con N discos, pasándolos de A a B usando C como auxiliar y siendo
Movim la secuencia de movimientos realizados.
2. Escribir un programa lógico para resolver el problema de las "ocho reinas". Esto es
determinar las formas en que pueden colocarse ocho reinas en un tablero de
ajedrez de modo que no se amenacen mutuamente.
3. Escribir un programa de lógica para resolver el siguiente problema:
Tres misioneros y tres caníbales están en la orilla izquierda de un río. Hay un bote
para cruzar el río, con capacidad a lo sumo para dos personas. Todos deben cruzar
el río. Si en algún momento en una de las orillas quedan más misioneros que
caníbales, éstos serán convertidos por aquellos. Encontrar modos de transportar
los misioneros y caníbales a través del río sin exponer ningún caníbal al peligro de
la conversión.
4. Escribir un programa de lógica para resolver el siguiente problema:
Hay tres hombres: Juan, Pedro y José, cada uno de los cuales tiene dos
profesiones. Sus ocupaciones son las siguientes: chófer, contrabandista de licores,
músico, pintor, jardinero y barbero.
En base a los siguientes hechos determínese el par de profesiones que corresponde
a cada hombre:






El chófer ofendió al músico riéndose de su cabello largo.
El músico y el jardinero solían ir a pescar con Juan.
El pintor compró al contrabandista un litro de ginebra.
El chófer cortejaba a la hermana del pintor.
Pedro debía $ 5 al jardinero.
José venció a Pedro y al pintor jugando al tejo.
Paradigma Funcional
7 / 10
Paradigmas de Programación
Ingeniería en Sistemas de información
UTN FRSFCO
José Oscar Mugetti Mare
EJERCICIOS PROPUESTOS (Parciales de otros años)
2011
1. Una familia real, debe abdicar a favor de uno de sus hijos, como los miembros reales no se
encuentran en el país, la corte debe indicar su sucesor los requisitos son que el próximo
rey debe ser el hijo varón, mayor de edad y que tenga conocimiento de política exterior o
ciencias políticas.
Los hijos que tuvo el matrimonio real, su edad y los estudios cursados por ello son:
María de 37 años y estudió ciencias políticas.
Roberto 29 años y estudió economía.
Marita de 33 años y estudió política exterior.
Raul de 30 años y estudió abogacía.
Perla de 26 años y estudió ingeniería.
Oscar de 23 años y estudió política exterior.
Debe realizar un programa en prolog para determinar el sucesor del trono y que cumpla
con todos los requisitos impuestos.
2. Nos encontramos trabajando para un grupo de investigación médica y nuestra tarea
consiste en ayudarlos a automatizar cuales son los remedios aconsejables para aliviarles
lo síntomas a los enfermos, eso síntomas son los que ayudan a predecir las enfermedades.
Como una ayuda, el grupo de médicos colaboró en determinar los predicados
enfermo_de(nombre,enfermedad)
tiene_sintoma (nombre,sintoma)
sintoma_de (sintoma,enfermedad)
elimina (remedio,sintoma)
recetar_a (remedio,nombre)
alivia (remedio,enfermedad)
Estos pueden no ser los únicos que no lleve a construir un programa para tal efecto.
3. Queremos viajar por Europa y África y debemos determinar nuestro presupuesto, por ello
obtuvimos algunos precios:
Transporte_a(roma,2000).
Transporte_a(londres,2500).
Transporte_a(tunez,1500).
Alojamiento_en(hotel,roma,250).
Alojamiento_en(hotel,londres,150).
Alojamiento_en(hotel,tunez,100).
Alojamiento_en(hostal,roma,150).
Alojamiento_en(hostal,londres,100).
Alojamiento_en(hostal,tunez,80).
Alojamiento_en(camping,roma,100).
Alojamiento_en(camping,londres,50).
Alojamiento_en(camping,tunez,50).
Ahora queremos conocer cuánto nos costaría alojarnos X cantidad de días a algunos de
ese lugares y agregarle el costo del viaje.
Paradigma Funcional
8 / 10
Paradigmas de Programación
Ingeniería en Sistemas de información
UTN FRSFCO
José Oscar Mugetti Mare
2012
1. Una importante empresa desea cubrir un puesto vacante, los requisitos son:
Edad: hasta 30 años, estudios ing. en sistema o analista de sistema, con experiencia de 2
años en el rubro, los candidatos son:
Marita 23 años, estudio ing quimica y tiene 1 año de experiencia.
Roberto 31 años, estudio analista de sistema y tiene 7 años de experiencia.
Belen 28 años, estudio ing en sistema y tiene 2 años de experiencia.
Juan 25 años, estudio ing en sistema y no tiene años de experiencia.
Florencia 23 años, estudio programación y tiene 1 año de experiencia.
Deben realizar un programa en prolog para identificar el nombre de la persona que
cumpla con los requerimientos.
2. Una empresa de transporte desea saber cual es el precio que debe cobrar sus pasajes,
para ello se pide realizar un programa en prolog que dando el lugar y el destino calcule el
precio a pagar por la distancia a realizar, el valor es el 25 % del costo del viaje, se sabe que
el colectivo hace 5km por litro, y que el precio del diesel es de $6.
110 km
A
50 km
B
160 km
70 km
D
60 km
E
C
2013
1. La empresa "Solas y Solos" dedicada a la búsqueda de formar parejas, cuenta con una
base de datos Prolog de todas las personas que desean encontrar una pareja. La Base de
Datos se estructura por una serie de hechos de la forma:
hombre(apellidoynombre, dni).
mujer(apellidoynombre, dni).
datos(dni, ciudad, edad, tipo). tipo: es una caracteristica que define a la persona.
armarParejaPersona(apellidoynombre,candidato).
Estos pueden no ser los únicos que no lleve a construir un programa para tal efecto.
La restricción que se deberá tener en cuenta es que solo se podrán armar parejas de una
misma ciudad y cuya diferencia de edad no sea mayor a dos años.
Datos
Román (dni 1, sanFco, edad 24, moreno), Héctor (2, morteros, 26, caucásico),
Oscar(3,sanFco,27,rubio),Brenda(4,sanFco,25,rubia), Julieta(5,morteros,25,moreno) y
Andrea (6,sanFco,22,peliroja).
2. Una importante empresa desea expandirse en la zona y desea saber los costos para
instalarse en otra ciudad, pero no sabe cuál sería la mejor opción debido a los costos de
transporte desde el almacen principal (AP) a las respectivas ciudades y los impuestos
locales, para ello desea saber:
Paradigma Funcional
9 / 10
Paradigmas de Programación
Ingeniería en Sistemas de información
UTN FRSFCO
José Oscar Mugetti Mare
$1000
AP
C=$3500
A=$4500
D=$2000
$8000
B=$3000
Paradigma Funcional
10 / 10