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
© Copyright 2024