Temas Avanzados en Ingeniería Informática (I)-Lógica Curso

Documentos relacionados
Primera práctica de Temas Avanzados en Ingeniería Informática (I)-Lógica Curso

Temas Avanzados en Ingeniería Informática (I)-Lógica Curso

Unidad 2. El parentesco

Programación Declarativa Universidad de Málaga

EL PARENTESCO Y CÓMPUTO DE GRADOS

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013

Asuntos Jurídicos. DAJ-013-C de marzo, 2015.

Capítulo noveno El parentesco

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 4: Diseñador de Consultas (+ info)

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

Diseño Estructurado de Algoritmos

BLOQUE I: HOJA DE CÁLCULO

REGLAMENTO PARA AUTORIZAR EXCEPCIONALMENTE EL EJERCICIO DE FUNCIONES PÚBLICAS EN CASO DE INCOMPATIBILIDAD POR PARENTESCO O MATRIMONIO

COMO HACER UN GENOGRAMA (ÁRBOL GENEALÓGICO)

R, R-Commander y R-Excel

Truco para encontrar y reemplazar líneas manuales por marcas de párrafo

NORMA ISO Introducción

OFS Órgano de Fiscalización Superior

índice MÓDULO 1: Introducción a Visual Basic 6.0 MÓDULO 2: Fundamentos de programación TEMA 1. Introducción a Visual Basic 6.0

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

Tema: Clases y Objetos en C#. Parte II.

Microsoft Office PowerPoint 2003 Experto

SESIÓN 9 TRABAJO CON LOS OBJETOS GRÁFICOS DE POWER POINT

NUEVAS TECNOLOGÍAS APLICADAS A LA EDUCACIÓN. MICROSOFT OFFICE: WORD, POWERPOINT Y EXCEL.

INTERPRETACIÓN NORMA OHSAS 18001:2007 MÓDULO 1 SESIÓN 1 INTERPRETACIÓN DE LA NORMA OHSAS 18001:2007 DOCENTE: Ing. Dª. Ana I.

1 El árbol genealógico

Crear documentos de texto en Google Docs. Avanzado

LABORATORIO Nº 9 TABLAS DINÁMICAS

Contents. Tabla de contenido

2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción.

Personal. Partes de Trabajo WhitePaper Agosto 2008

Guía docente: Cómo crear un test y los tipos de preguntas

MANUAL DE USUARIO PARA LA DECLARACIÓN INFORMATIVA SOBRE EL ISR DIFERIDO EN CONSOLIDACION FISCAL 19-A Versión 2.0.0

Actividad Final SOFTWARE LIBRE

1

Acaip. Arts. 915 a 923 del Código Civil (Real Decreto de 24 de Julio de 1889)

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

Micro y Macroeconomía

bla bla Documentos Guía del usuario

Formato para prácticas de laboratorio

ACCESS 2010 FÁCIL - ONLINE - EN LÍNEA

5.2. Combinar celdas Ajustar texto a la celda Insertar filas y columnas Insertar filas Insertar columnas. 5.5.

Declaración anual de operaciones con terceras personas (MOD.347)

La Gramática y la Igualdad de Género /Román J. Duque Corredor*

Dirección General de Servicio Civil Centro de Capacitación y Desarrollo Herramienta de Gestión de Formularios de Capacitación Manual de Usuario

La Herramienta Redmine para la Administración de Proyectos

Estructuras Administrativas

Se abrirá un cuadro de diálogo para que escojas el tipo de gráfico que quieres mostrar. Selecciona uno y pulsa Aceptar.

ENSEÑANZA Y FORMACIÓN NO REGLADA PERMISOS Y LICENCIAS GRADOS DE PARENTESCO EXCEDENCIAS JORNADA DE TRABAJO VACACIONES

Modelo Pedagógico Semipresencial

Iván Ruiz Rube Departamento de Ingeniería Informática Escuela Superior de Ingeniería Universidad de Cádiz

APRENDIZAJE DE LAS HERRAMIENTAS DE DESARROLLO DESARROLLO DE LA BASE DE DATOS DESARROLLO DEL INTERFAZ DE USUARIO Y DEL CÓDIGO VBA

ACCESS Duración en horas: 20

3. DOCUMENTACIÓN 3.1. DOCUMENTACIÓN DE APLICACIONES. OBJETIVOS PARA MODIFICAR HACE FALTA COMPRENDER/ESTUDIAR:

INFORMÁTICA Y COMUNICACIONES

LA HONORABLE QUINCUAGÉSIMA OCTAVA LEGISLATURA DEL ESTADO LIBRE Y SOBERANO DE ZACATECAS.

Enchanting en Linux Ubuntu

Verificación. Revisión por la Dirección

RECIBOS. Cti19_14 C.T.I. Cálculo y Tratamiento de la Información

Tema 1. Introducción a la arquitectura de computadores: diseño, coste y rendimiento

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al

Ubuntu Server HOW TO : DHCP

Organización Nacional de Fútbol Infantil

De la línea recta descendente

Algunas licencias de código abierto

CURSO DE CONTADORES DE AGUA

CAMBIOS SOBRE EL IVA

Programación. Práctica Final

BSPlink Agencias de Viajes

Cómo solucionar problemas que se producen al iniciar o utilizar Word

Docente: Guillermo León Betancur Hincapié 2013

Dentro de Rydent Administrador vamos a encontrar un menú que nos proporcionará las opciones que se muestran en la Figura A1.

CIDE, SA. RIF: J NIT: MODELO FUNCIONAL

Código: U-PR Versión: 0.0

Fórmulas de Competición

ISO SERIE MANUALES DE CALIDAD GUIAS DE IMPLEMENTACION. ISO 9001:2008 Como implementar los cambios parte 1 de 6

Introducción al uso del equipamento informático

Modificaciones incorporadas a. después de la edición del manual

MOODLE 1.9 BASE DE DATOS

Protocolo para el registro de la solicitud de. Colonoscopia diagnóstica

Pasos previos a la construcción de un proyecto. Ejemplo del Tangram. 1. Pasos a seguir en la elaboración de un proyecto

COMO CREAR UNA RED LOCAL ENTRE EQUIPOS CON WINDOWS

Edición HTML. Estilos CSS MINISTERIO DE EDUCACIÓN Y CIENCIA SECRETARÍA GENERAL DE EDUCACIÓN Y FORMACIÓN PROFESIONAL

Grupo Tecnologías de Información XVII Edición Cumbre Judicial BORRADOR DE GUÍA DE INTEROPERABILIDAD Y SEGURIDAD DE EXPEDIENTE JUDICIAL ELECTRÓNICO

Casos prácticos: Cas práct ico

INDICE Parte 1. Visual Basic Capitulo 1. Qué es Visual Basic? Capitulo 22. Mi Primera Aplicación Capitulo 3. Elementos del lenguaje

MANUAL DE USUARIO. Sistema CLASS Profesores

LENGUA CASTELLANA Y LITERATURA. 2º Bachillerato.

EL CÓMIC COMO UNIDAD DIDÁCTICA

NOVEDADES Y MEJORAS. datahotel versión ANOTACIONES. Configuración

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Soluciones a los problemas impares. Tema 5. Memorias. Estructura de Computadores. I. T. Informática de Gestión / Sistemas


Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 5: Informes

Instalación Linux Mint 17

Reto 1 Escuelas de Psicología

PROYECTO 2 Parte 1 BASES DE DATOS. Curso (2 Semestre) Grupos 4F2M y 4F1M-1 (aula 5102) CONSULTAS REMOTAS EN JAVA A UNA BASE DE DATOS

Se inicia con las especificaciones del módulo fotovoltaico.

MICROSOFT ACCESS 2016 Básico

Transcripción:

Temas Avanzados en Ingeniería Informática (I)-Lógica Curso 209-2010 1. Fecha de entrega La fecha límite de entrega será el 22 de Marzo (Lunes) hasta las 20:00 horas. 2. Objetivo El objetivo de esta práctica consiste en realizar una primera toma de contacto con la Programación Lógica, y más concretamente con el lenguaje de programación Prolog. Para ello, se implementarán varios ejercicios simples que permiten definir bases de hechos (o de conocimiento) y reglas en Prolog. En esta, y en el resto de las prácticas de la asignatura, podrá utilizarse el intérprete SWI-Prolog (http://www.swi-prolog.org/), o el intérprete Prolog de GNU (gprolog, http://ftp.gnu.org/gnu/gprolog/). También puede utilizarse cualquier otro intérprete Prolog que se dese, siempre y cuando, no se utilicen predicados, instrucciones, o procedimientos propios. Las prácticas será corregidas utilizando SWI-Prolog, o GProlog, por lo que se recomienda la utilización de uno de estos dos intérpretes. Para aquellos que lo deseen, la instalación en Linux (distribución Ubuntu) tanto de GProlog como de Swi-Prolog (versión 5.6.14 para Linux), puede realizarse ejecutando desde línea de comandos: :~$ sudo apt-get install gprolog :-$ prolog //ejecuta gnu-prolog :-$ gprolog //ejecuta gnu-prolog :-$ sudo apt-get install swi-prolog :-$ swipl //ejecuta swi-prolog :-$ swiprolog //ejecuta swi-prolog La práctica se ha dividido en un conjunto de ejercicios básicos que deben ser implementados y documentados. 1

Figura 1: Ejemplo de árbol genealógico 3. Descripción de la práctica 3.1. Árboles genealógicos (a) Dado el siguiente árbol genealógico (ver Figura1), crear un base de hechos que lo represente y el conjunto de cláusulas necesarias que me permitan establecer las relaciones habituales en cualquier familia. Se pide crear (como mínimo) los siguientes predicados: 1. prole(x,y): cierto, si X es hijo de Y (cualquiera de los dos sexos). 2. hija(x,y): cierto, si X es hija de Y. 3. hijo(x,y): cierto, si X es hijo varón de Y. 4. progenitor(x,y): cierto, si X es un progenitor de Y. 5. padre(x,y): cierto, si X es el padre de Y. 6. madre(x,y): cierto, si X es la madre de Y. 7. fraterno(x,y): cierto, si X e Y son hermanos/as. 8. hermano(x,y): cierto si X es hermano varón de Y. 9. hermana(x,y): cierto si X es hermana de Y. 10. primo(x,y): cierto si X e Y son primos (cualquiera de los dos sexos). 12. abuelo(x,y): cierto si X es abuelo varón de Y. 13. abuela(x,y): cierto si X es abuela de Y. 14. tio(x,y): cierto si X es tío de Y (tanto carnal como político). 15. tia(x,y): cierto si X es tía de Y (tanto carnal como política). 16. suegro(x,y): cierto si X es suegro de Y. 17. suegra(x,y): cierto si X es suegra de Y. 18. yerno(x,y): cierto si X es yerno de Y. 2

19. nuera(x,y): cierto si X es nuera de Y. 20. esposo(x,y): cierto si X e Y están casados. 21. marido(x,y): cierto si X es marido de Y. 22. mujer(x,y): cierto si X es la mujer de Y. 23. varon(x): cierto si X es varón. 24. mujer(x): cierto si X es mujer. También se diseñarán cláusulas que nos permitan relacionar diferentes familias, por ejemplo: 25. cuniado(x,y): cierto si X es cuñado de Y. 26. cuniada(x,y): cierto si X es cuñada de Y. Se crearán cláusulas de carácter recursivo como: 27. antepasado(x,y): cierto si X es antepasado de Y. 28. descendiente(x,y): cierto si X es descendiente de Y. 29. pariente(x,y): cierto si X e Y son parientes. (b) Se modificará el programa anterior, para permitir la inserción de nuevos hechos en nuestra base de conocimiento. Como característica básica se considerará la inserción de este nuevo conocimiento (ver Figura 1): " Juan, cuyos padres son Pilar y Mario, decide casarse con Sara (sus padres no son conocidos para nuestra base de hechos). Como efecto de este matrimonio tienen una hija a la que deciden ponerle el nombre de Sonia." Es decir, podremos ejecutar un predicado desde el intérprete de Prolog (por ejemplo, casados(x,y)) que añadiría automáticamente ese conocimiento a la base de hechos. (c) (opcional) Modificar la base de hechos anterior sobre un caso libre y aplicar los predicados ya definidos. La complejidad de la nueva base de hechos, así como particularidades de la misma (i.e. múltiples padres, múltiples matrimonios) definirán la nota de este apartado. 3.2. Parentesco (OPCIONAL) El parentesco es el vínculo que liga unas personas con otras 1. Puede ser de consanguinidad, que sería el vínculo de sangre que une a las personas y el de afinidad, también denominado político, que sería el que liga a 1 www.iabogado.com/esp/guialegal/guialegal.cfm?idcapitulo=01020000 3

un esposo con los parientes de sangre del otro. Dentro del parentesco de consanguinidad hay que distinguir lo que es la línea recta (ascendente o descendente) de lo que es la línea colateral. Línea recta. La proximidad del parentesco de consanguinidad se mide por grados, siendo un grado la distancia que hay entre dos personas engendradas una de otra. De una a otra hay una generación y por tanto cada generación es un grado. Así padre e hijo son parientes en primer grado. Abuelo y nieto hay dos grados, uno entre padre e hijo y otro entre padre y abuelo. Por lo tanto el grado de parentesco entre el nieto y el abuelo es el de segundo grado de consanguinidad en línea recta. Línea colateral. Nos viene dada por aquellas personas que no descienden unas de otras, sino de un antepasado común (primos entre sí, siendo el antepasado común el abuelo). La medición o el grado de parentesco se calcula de la siguiente manera. Ascendemos hasta llegar al más próximo antepasado común con la otra persona, y luego se baja por la línea recta descendente que une a este antepasado con la otra cuyo parentesco con la primera se mide. Por lo tanto dos hermanos son parientes en segundo grado de consanguinidad en línea colateral. Se pide crear las cláusulas correspondientes para poder calcular consang(x,y,z), afinidad(x,y,z), lrecta(x,y,z), lcolat(x,y,z). 3.3. Diseño de menus para un restaurante (a)sedeseaformalizarenprologeldiseñodemenúsenunrestaurante, para ello se deben construir un conjunto de predicados que contengan los diferentes tipos de alimentos. A partir, de esos predicados se definirán otros que nos permitan construir menús dependiendo del gusto de los posibles clientes. En el siguiente ejemplo damos algunos predicados donde almaceno los distintos alimentos de los que dispone el restaurante: pescados(besugo,atun,emperador,mero,sardina). carnes(cerdo,ternera,pollo,pato,jabali). vegetales(zanahoria,lechuga,repollo,coliflor,acelga). Un menú de este restaurante deberá constar de tres platos compuestos por un primer y segundo plato (entrada y plato principal) y de un postre. Deberemos crear por lo menos un predicado que me permita definir un menú para vegetarianos, y otro para personas que no deseen incluir nunca pescado en su comida. 4

vegetarianos(x,y,z). X = primer plato, Y = segundo plato, Z = postre. no-pescado(x,y,z). Nota: En el segundo tipo de menús es aconsejable emplear la negación. (b) Se trata de refinar el funcionamiento del programa anterior introduciendo estructuras más complejas. En este apartado debemos de modificar el anterior para poder añadir o eliminar un determinado alimento a su lista de comida, además modificaremos la base de cláusulas para permitir la existencia de sublistas, en estas sublistas introduciremos los valores calóricos de cada alimento. Definir el subconjunto de reglas necesarias para poder modificar un conjunto de alimentos, buscar las calorías que contiene un alimento en particular, y crear reglas para definir menús equilibrados. Ej: pescados([besugo,300],[bacalao,350],[emperador,400],[mero,200],[sardina,100]). carnes([cerdo,700],[ternera,450],[pollo,250],[pato,250],[jabali,200]). Se pueden diseñar otro tipo de sublistas que organicen la información de una forma más conveniente, por ejemplo los pescados podríamos definirlos en función de la clase a la que pertenecen: pescados([blanco,[besugo,emperador,mero],azul,[sardina,bonito], marisco,[langosta,centollo,langostino]]). O bien podemos definir una estructura todavía más compleja que la anterior, en base a la cual podemos definir nuevos predicados, Ej: pescados([blanco,[[besugo,300],[emperador,400],[mero,200]],azul[[sardina,100],[bonito,300]], marisco[[langosta,150],[centollo,200],[langostino,100]]). Los nuevos predicados mostrarán, además de los diferentes menús, el valor calórico total de los mismos. 4. Entrega de la memoria y del programa La práctica (tanto el código como la memoria) se entregarán en un fichero comprimido como se indica en la página de la asignatura, y cuyo nombre debe indicar, el número de práctica y el número de grupo del que se trata. Se aceptarán ficheros comprimidos zip, rar, tar.gz, o tgz. Ejemplo: 5

par05prac1.tar.gz, par06prac1.tgz, par02prac1.zip, par04prac1.rar La práctica se entregará utilizando la zona de envío de prácticas de la EPS (http://www.ii.uam.es/esp/alumnos/practicas/envio practicas.php3). El código fuente entregado tendrá todo lo necesario para que se pueda ejecutar los diferentes procedimientos, así como los casos de prueba que se consideren necesarios. El código deberá estar adecuadamente comentado. La memoria constará de las siguientes secciones: 1. Introducción (una hoja de descripción de lo que hay que hacer desde vuestro punto de vista y no copiando el enunciado). 2. Descripción a alto nivel de lo realizado: qué predicados se han definido y porqué, qué problema resuelve cada uno de ellos y cómo se relacionan unos con otros, etc 3. Código fuente completo con comentarios (el código final no debería ser muy largo) 4. Consideraciones sobre la eficiencia del programa, si es que se han tenido en cuenta cuestiones como el orden de las cláusulas, orden de los objetivos en los cuerpos, cut,... 5. Conclusiones (qué se ha aprendido, dificultades encontradas, comentarios sobre PROLOG, etc). 6. Medida del esfuerzo del desarrollo de la práctica, en este último apartado podrá mostrarse una tabla donde los alumnos indiquen (de forma aproximada) el número de horas dedicadas al desarrollo de la misma. Pueden indicarse los siguientes elementos (u otros que se consideren oportunos): Análisis del problema, Desarrollo del programa, Diseño de la solución, Verificación y Pruebas, Creación de la documentación. 5. Criterios de evaluación Se valorará: 1. La corrección del programa (que funcione en todos los casos) 2. La claridad del código 3. La claridad de las explicaciones en la memoria 4. Las consideraciones que haya hecho el alumno para mejorar la eficiencia (cambiar el orden de los objetivos, etc), si estas están justificadas en la memoria 6