Programación Declarativa

Documentos relacionados
Programación Declarativa

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba

ESTRUCTURAS DE DATOS Y ALGORITMOS

RECORRIDO EN ARBOLES

Estructura de Datos Unidad 6: ARBOLES

Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tema 3.- Predicados y sentencias condicionales

Introducción a los árboles. Lección 11

Ejercicios del Tema 3 Estructuras jerárquicas: Árboles

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:

PROCESADORES DE LENGUAJE. Hoja de ejercicios de FLEX

Práctica N o 4 - Programación Lógica

12/08/2017 AVL. Especificación sobre árboles AVL. AVL: rotaciones

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez

Introducción a Árboles Árboles Binarios

Práctica N o 5 - Programación Lógica

Definiciones: conjuntos, grafos, y árboles. Agustín J. González ELO 320: Estructura de Datos y Algoritmos. 2002

PRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS

Programación Declarativa UNIVERSIDAD DE MÁLAGA

Definición 1: Un grafo G es una terna ordenada (V(G), E(G), Ψ

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.

Actividad colaborativa Ejercicios de programación Programación básica C++

ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES

PROGRAMACIÓN ORIENTADA A OBJETOS

Tema 4.- Recursión e iteración

Tema 6: Estructuras de datos recursivas

Árboles. Un grafo no dirigido es un árbol si y sólo si existe una ruta unica simple entre cualquiera dos de sus vértices.

BOLETÍN DE EJERCICIOS: PROGRAMACIÓN EN C++ Ejercicio 1.- escribir un programa que calcule el factorial de un número:

Inteligencia Artificial: Prolog

ESTRUCTURA DE DATOS. ABB Arboles de Búsqueda Binaria

Tema: Arboles en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Definición de Árbol Binario. Programación IV. Guía No.

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Ejercicios Unidad 5 Arreglos Resuelva cada problema a través de Arreglos y usando métodos:

Estructuras de datos utilizando JAVA

Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades:

PROGRAMACIÓN DECLARATIVA: LÓGICA Y RESTRICCIONES

Algoritmos y Programación II Curso 2006

Ecuaciones. Son igualdades algebraicas que se cumplen solo para algunos valores de la letra.

El TAD Árbol. El TAD Árbol

Estructuras de Datos y Algoritmos

PROGRAMACIÓN ORIENTADA A OBJETOS

Estructuras de Datos II

Para la resolución de los ejercicios, se dispone de una implementación de árbol binario a través de la clase BinTree con la siguiente especificación.

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo.

Estructura de datos y de la información Boletín de problemas - Tema 10

U.D.1: Análisis estadístico de una variable Consideraciones iniciales: Propuesta: 1.1 Distribución de frecuencias. Variables Cualitativas: Ejemplo

Definición 1.1 Sea G = (V, A) un grafo no dirigido. G se denomina árbol si es conexo y no contiene ciclos.

A B MIN C D E F MAX x E.T.S.I. INFORMÁTICA 4º CURSO. INTELIGENCIA ARTIFICIAL E INGENIERÍA DEL CONOCIMIENTO

Capítulo 8. Árboles. Continuar

2º Certamen ILI-253 Lenguajes de Programación Juan Pablo Menichetti Jorge Mujica 10 de Junio del 2004

FLORIDA Secundaria. 1º BACH MATEMÁTICAS CCSS -1- BLOQUE ESTADÍSTICA: ESTADÍSTICA VARIABLE UNIDIMENSIONAL. Estadística variable unidimensional

1.2 Hechos. Ejemplo: La capital de Francia es París. En Prolog se escribe capital(francia,parís). En general, la sintaxis es

Tema 2.- Expresiones y funciones

Examen escrito de Programación 1

1. PRINCIPIOS BÁSICOS DE PROGRAMACIÓN

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

3.6. Árboles B DEFINICIONES

FICHA DE POSTULACIÓN FORMATO HOJA DE VIDA DEL POSTULANTE CONVOCATORIA CAS N MINJUS

2. Calcula la suma de los 20 primeros términos en cada una de las sucesiones anteriores.

Carlos Delgado Kloos Mª Carmen Fernández Panadero Raquel M. Crespo García Ingeniería Telemática Univ. Carlos III de Madrid

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda

Programación Declarativa

Objetivo específico: Maneja los elementos básicos de algoritmos utilizados para resolver un problema por computadora.

Geometría. 1 a.- Qué diferencia hay entre una recta y una semirrecta?, y entre una semirrecta y un segmento?

Semántica Operacional para la Programación en Lógica Lógica para Ciencias de la Computación

APLICACIONES INFORMÁTICAS EN QUÍMICA. Problemas Tema 3.2: Manipulador Algebraico-2 Listas, matrices, vectores. Grado en Química

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

Estructura de Datos. Estructuras de Datos no lineales : Árboles

Matrices y Determinantes. Prof. Nilsa I. Toro Catedrática Recinto Universitario de Mayagüez Residencial - AFAMaC

Examen escrito de Programación 1

ESTRUCTURA DE ASIGNACIÓN

Examen de Matemáticas (1º E.S.O) UNIDAD 13: ÁREAS Y PERÍMETROS. Grupo: 1ºB Fecha: 11/06/2009

Capítulo 6. Relaciones. Continuar

Boletín de ejercicios de la asignatura de INFORMÁTICA para la realización de las prácticas de laboratorio. Ejercicios de Estructuras de Control

Tema Árboles binarios fmap para árboles binarios Plegado de árboles binarios

Guía práctica de estudio 06: Lenguaje binario

IDENTIFICAR Y RESOLVER ECUACIONES DE SEGUNDO GRADO

1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5)

Tipos de datos algebraicos

1. Para los siguientes ejercicios haga una prueba de escritorio de los fragmentos de código y responda las preguntas cuál es la salida?

Estructuras de datos Árboles B

Lógica Proposicional. Guía Lógica Proposicional. Tema I: Proposiciones

Examen Teórico (1/3 de la nota final)

Guía práctica de estudio 06: Lenguaje binario

EJERCICIOS Y PROBLEMAS PARA LA PREPARACIÓN DE LA PRUEBA DE MATEMÁTICAS CDI DE 3º ESO.

Qué es un Diagrama de Flujo?

Definición recursiva de los árboles

Transcripción:

Programación Declarativa Ingeniería Informática Especialidad de Computación Cuarto curso. Primer cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2013 2014 Práctica número 6.- Introducción al lenguaje Prolog 1. Escribe un fichero denominado datos.pl que contenga los siguientes hechos ama(juan,ana). ama(ana,miguel). ama(luis,isabel) ama(miguel,ana). ama(laura,juan). ama(isabel,luis). donde el predicado ama(x,y) indica que X ama a Y. Escribe en PROLOG las siguientes preguntas - A quién ama Juan? - Quién ama a Ana? - Quién ama a alguien? - Quién es amado por alguien? - Quiénes se aman mutuamente? - Quién ama sin ser correspondido? Añade al fichero datos.pl una regla que permita describir a los amantes, es decir, aquellas personas que se aman mutuamente. 2. Escribe un fichero denominado familia.pl que contenga los siguientes hechos: hombre(antonio). hombre(juan). hombre(luis). hombre(rodrigo). hombre(ricardo). mujer(isabel). mujer(ana). mujer(marta). mujer(carmen). mujer(laura). mujer(alicia). 1

Define hechos en los que se afirmen los siguientes enunciados: - Antonio y Ana son matrimonio - Juan y Carmen son matrimonio. - Luis e Isabel son matrimonio - Rodrigo y Laura son matrimonio. - Juan, Rodrigo y Marta son hijos de Antonio y Ana. - Carmen es hija de Luis e Isabel. - Ricardo es hijo de Juan y Carmen. - Alicia es hija de Rodrigo e Isabel. Define una regla que indique que matrimonio es reflexivo, es decir, si X e Y forma un matrimonio entonces Y y X también lo forman. Define reglas para obtener: - los nietos de una persona - los abuelos de una persona - los hermanos de una persona - los tíos de una persona - las tías de una persona - los primos de una persona - las primas de una persona - los suegros de una persona 3. Escribe un programa que: Declare los siguientes hechos relativos a trabajadores de una empresa. Utiliza el predicado encargado_de_tarea(trabajador,tarea) - Miguel está encargado de las tareas de admisión, control y vigilancia. - Ricardo está encargado de las tareas de planificación y asesoramiento. - Alicia están encargada de la dirección y control. Defina reglas que permitan comprobar los siguientes hechos: - Si una tarea ha sido encargada a alguna persona. Utiliza el predicado encargada(tarea). - Si dos personas comparten alguna tarea, es decir, comparten_tarea(persona1,persona2). 4. Predicados sobre deportistas: Utiliza el predicado juega(persona,deporte) para declarar lo siguientes hechos relativos a deportistas: - Héctor juega al baloncesto. - Miguel juega al balonmano y rugby - Alicia juega al tenis, baloncesto y ajedrez. Define un predicado que permita comprobar si dos personas juegan al mismo deporte. 5. Escribe un programa que permita comprobar si una persona puede donar sangre a otra teniendo en cuenta el grupo sanguíneo y el factor RH. 2

6. Escribe un programa que permita realizar las siguientes operaciones aritméticas: - Máximo de dos números. - Mínimo de dos números. - Producto de los números comprendidos entre dos dados. - Área de un círculo dado el radio. - Área de un rombo dadas las diagonales mayor y menor. - Área de un trapecio dados la base mayor, la base menor y la altura. 7. Escribe un fichero denominado lectores.pl que contenga los siguientes hechos que utilizan la estructura nombre y el predicado lector: - lector(nombre(ana,garrido,aguirre),mujer,31). - lector(nombre(marta,cantero,lasa),mujer,20). - lector(nombre(rodrigo,duque,soto),hombre,30). - Etc. Escribe en Prolog las siguientes preguntas: - Hay lectores? - Quiénes son lectores? - Qué lectores son mujeres? y hombres? - Hay lectores con el mismo nombre y diferentes apellidos? Escribe en Prolog una regla para comprobar si unos apellidos están repetidos. Nota: Utiliza el predicado bagof y un predicado auxiliar para contar los elementos de una lista. 8. Utiliza el predicado prestado para definir algunos hechos en los que se indique que un libro (con título y autor) ha sido prestado a una persona (con nombre y apellidos). prestado(libro( Misericordia,autor( Benito, Pérez, Galdós ), persona( Almudena, Alegría, Sol )). donde libro y persona son estructuras. Construye preguntas en las que se indique: - Si un lector tiene prestado algún libro. - Si un libro está prestado a alguien. - Si una persona es un escritor. - Si un escritor es leído. - Si existen autores leídos. Define una regla para comprobar que un escritor es leído si alguno de sus libros está prestado. 9. Escribe un programa denominado listas.pl que contenga los predicados para realizar las siguientes operaciones: - Crear una lista a partir de un número. crear(n,l) crearía la lista L = [0,1,...,N]. 3

- prefijo(p,l): comprueba si la lista P es el prefijo de L. - sufijo(s,l): comprueba si la lista S es el sufijo de L. - Media, máximo o mínimo de una lista. Nota: utilícese el corte para mejorar la eficiencia de los predicados. 10. Escribe las reglas de un predicado denominado lugar(x,l,p) de forma que calcule la posición P en la que se encuentra X dentro de la lista L. Si X no está en L entonces P valdrá 1. La primera posición es la que ocupa el lugar cero.?-lugar(a,[e,d,c,b,a],p). P = 4 11. Define una regla que permita identificar si un número es primo o no. Nota: utiliza el hecho de que un número es primo si no tiene divisores propios menores o iguales que su raíz cuadrada. 12. Crea una lista compuesta por los números primos menores que uno dado.?- crear_primos(10,l). L = [2,3,5,7] 13. Crea una lista que contenga sólo los elementos que ocupan un lugar impar.?- lugar_impar([a,b,c,d,e],r). R = [a,c,e] 14. Escribe un predicado que permita obtener una lista compuesta por todos los elementos comunes a otras dos listas.?- comunes ([a,b,c,d],[b,e,d,f],r). R = [b,d] 15. Escribe un predicado que permita obtener una lista compuesta por la diferencia simétrica de dos listas.?- diferencia_simetrica ([a,b,c,d,e],[c,d,e,f,g],r). R = [a,b,f,g] 16. Considera los siguientes hechos sobre carreteras carretera(cordoba,granada). carretera(cordoba,jaen). carretera(cordoba,malaga). carretera(cordoba,sevilla). carretera(sevilla,cadiz). carretera(sevilla,huelva). carretera(sevilla,malaga). Codifica un predicado denominado recorrido(origen, Destino, Lista), que compruebe si existe un recorrido que permita ir desde una ciudad 4

de Origen hasta otra de Destino usando uno o más carreteras existentes. Al final, Lista debe contener todas las ciudades del recorrido. 17. Escribe un programa que: Declare los siguientes hechos relativos a monumentos y ciudades turísticas. Utiliza el predicado situado(monumento, ciudad) : - Puente Romano, Mérida. - Puente Romano, Córdoba. - Mezquita, Córdoba. - Alhambra, Granada. Defina reglas que permitan comprobar los siguientes hechos: - Si una ciudad posee un monumento entonces es turística. Utiliza el predicado turistica(ciudad). - Use el comando setof para contar el número de monumentos de una ciudad. 18. Escribe un programa que: Declare los hechos relativos a una base de datos de donantes: nombre, grupo sanguíneo, factor rh. - donante(persona(juan,campos,ruiz),a,positivo). - donante(persona(ana,lara,silva),ab,negativo). - donante(persona(luis,luna,pachecho),ab,negativo). Declare reglas en las que se indique los donantes que pueden donar a otros donantes según la compatibilidad de sus grupos sanguíneos (véase el ejercicio nº 5). Define reglas para el predicado contar_por_grupo_y_factor que permita contar todos los donantes de un grupo sanguíneo y factor rh específicos.?- contar_por_grupo_y_factor (ab,negativo,n). N = 2 o Nota: utilizar el predicado bagof y un predicado auxiliar que cuente los elementos de una lista. Escribe una regla que permita hacer las siguientes acciones consecutivas 1. Pedir por pantalla un grupo sanguíneo y un factor rh, 2. Pedir por pantalla el nombre de un fichero, 3. Y escribir en dicho fichero los nombres de todos los donantes que tengan el grupo sanguíneo y el factor rh indicados. 19. Un árbol binario es representado por una lista de la forma [raíz, hijo izquierdo,hijo derecho] donde raíz es un átomo e hijo izquierdo e hijo derecho son árboles binarios. Constrúyanse predicados para: - Escribir la lista en orden prefijo, sufijo e infijo. 5

- Determinar la profundidad del árbol. - Comprobar si un elemento está en el árbol. - Determinar el número de nodos del árbol. - Determinar el número de hojas del árbol. Un nodo es una hoja si sus hijos izquierdo y derecho son listas vacías. Cómo se pueden redirigir las salidas de los predicados anteriores hacia un fichero de escritura? 20. Escribe un programa que permita contar los términos contenidos en un fichero y que escriba el resultado en un fichero. 21. Escribe un programa que sume los números de un fichero y que escriba el resultado en un fichero. 6