Tipos Abstractos de Datos



Documentos relacionados
TAD Lineales: Pila, Cola y Lista

Tema 1. Introducción a los TAD

Introducción a los Tipos Abstractos de Datos

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

Objetivos. Contenidos. Revisar los principales conceptos de la lógica de primer orden

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

Tipos Abstractos de Datos y Diseño por Contrato

Tema 1. Introducción a las estructuras y tipos de datos

Notación algorítmica (seudocódigo en castellano) (fecha: )

Fundamentos del diseño 3ª edición (2002)

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS

M III ABSTRACCIÓN Y CLASIFICACIÓN

Operaciones Morfológicas en Imágenes Binarias

2.4 Modelado conceptual

Ampliación de Estructuras de Datos

Generación de funciones lógicas mediante decodificadores binarios con salidas activas a nivel alto

Estructuras algebraicas

Java Inicial (20 horas)

UNIDAD I: LÓGICA PROPOSICIONAL

personal.us.es/elisacamol Elisa Cañete Molero Curso 2011/12

Introducción a la programación orientada a objetos

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

Procesadores de lenguaje Tema 5 Comprobación de tipos

BASES Y DIMENSIÓN. Propiedades de las bases. Ejemplos de bases.

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Elementos requeridos para crearlos (ejemplo: el compilador)

Operaciones Booleanas y Compuertas Básicas

Curso de Python Inicial

UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS

Universidad Nacional de Quilmes Ing. en Automatización y Control Industrial Cátedra: Visión Artificial Agosto de 2005

SEGURIDAD Y PROTECCION DE FICHEROS

Estructuras Algebraicas Una estructura algebraica es un objeto matemático consistente en un conjunto no vacío, con por lo menos una operación binaria.

NÚMEROS NATURALES Y NÚMEROS ENTEROS

Estructuras de Control - Diagrama de Flujo

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz

INDICE. XVII Prólogo a la edición en español. XXI 1. Calculo proporcional 1.1. Argumentos y proporciones lógicas

LENGUAJES FORMALES Y AUTÓMATAS. álgebra computacional LENGUAJES FORMALES Y AUTÓMATAS. álgebra computacional LENGUAJES FORMALES Y AUTÓMATAS

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

Consultas con combinaciones

INGENIERÍA DEL SOFTWARE I Práctica 4 Interacciones

OR (+) AND( ). AND AND

FORMACIÓN Principios de la programación orientada a objetos

Sistemas de Bases de Datos I. Modelo Lógico Modelo Relacional

TEMA 5. ELECTRÓNICA DIGITAL

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

PROGRAMACIÓ DIDÁCTICA: Secuanciación, Temporalización y Unidades Didácticas

ESTRUCTURA DE DATOS: ARREGLOS

VII. Estructuras Algebraicas

Semántica Denotacional

Tema 2. Espacios Vectoriales Introducción

Metodología y Tecnología de la Programación

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

Módulo 9 Sistema matemático y operaciones binarias

by Tim Tran:

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8

8.1. Introducción Dependencia/independencia estadística Representación gráfica: diagrama de dispersión Regresión...

implantación Fig. 1. Ciclo de vida tradicional

Ingeniería del Software I

A estas alturas de nuestros conocimientos vamos a establecer dos reglas muy prácticas de cómo sumar dos números reales:

1.1. Introducción y conceptos básicos

Parámetros con la ventana de selección de usuario, reglas, texto y descomposición (IVE)

Preliminares. Tipos de variables y Expresiones

Ejemplos: Sean los conjuntos: A = { aves} B = { peces } C = { anfibios }

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

Ingeniería en Informática

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Modelo Entidad-Relación

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Espacios Vectoriales

Universidad de Buenos Aires Facultad De Ingeniería. Operaciones Lógicas. [75.40] Algoritmos y Programación I. 2do Cuatrimestre 2010

Definición Dados dos números naturales m y n, una matriz de orden o dimensión m n es una tabla numérica rectangular con m filas y n columnas.

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Alumna: Adriana Elizabeth Mendoza Martínez. Grupo: 303. P.S.P. Miriam De La Rosa Díaz. Carrera: PTB. en Informática 3er Semestre.

BASE DE DATOS UNIVERSIDAD DE LOS ANDES FACULTAD DE MEDICINA T.S.U. EN ESTADISTICA DE SALUD CATEDRA DE COMPUTACIÓN II. Comenzar presentación

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Algoritmos y Estructuras de Datos II

INTRODUCCION A LA PROGRAMACION DE PLC

Complemento Microsoft Mathematics

Puertas Lógicas. Contenidos. Objetivos

Práctica 2 Gráficos Vectoriales con SVG (versión )

Apoyo para la preparación de los estudios de Ingeniería y Arquitectura Física (Preparación a la Universidad) Unidad 4: Vectores

La Necesidad de Modelar. Diseño de Software Avanzado Departamento de Informática

Centro de Capacitación en Informática

Manual del Protocolo XML-RPC de Mensajería Negocios

Subespacios vectoriales en R n

Capítulo 9. Archivos de sintaxis

Curso de Java POO: Programación orientada a objetos

I. ALGEBRA DE BOOLE. c) Cada operación es distributiva con respecto a la otra: a. ( b + c) = a. b + a. c a + ( b. c ) = ( a + b ).

Sistemas de numeración, operaciones y códigos.

GENERALIDADES DE BASES DE DATOS

Apuntes de Matemática Discreta 9. Funciones

Nociones Básicas de Sémantica: Semántica Denotacional

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Transcripción:

Objetivos Repasar los conceptos de abstracción de datos y (TAD) Diferenciar adecuadamente los conceptos de especificación e implementación de TAD Presentar la especificación algebraica como método formal de definición de TAD Conocer la relación entre TAD y clase en el paradigma de la POO Conocer la relación entre especificación algebraica e implementación Contenidos 1.1 Abstracción de datos y (TAD) 1.2 Especificación algebraica de un TAD 1.2.1 Introducción 1.2.2 Signatura de una especificación algebraica 1.2.3 Ecuaciones de una especificación algebraica Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 1

Contenidos 1.3 Construcción de especificaciones 1.3.1 Operaciones: clasificación 1.3.2 Escritura de ecuaciones 1.3.3 Operaciones parciales 1.3.4 Especificaciones genéricas 1.4 Paso de la especificación a la implementación de TAD 1.5 Implementación de TAD: La librería estándar de plantillas (STL) Duración 4 clases (6 h) Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 2

Bibliografía Estructuras de datos. Especificación, diseño e implementación Autor: Xavier Franch Gutiérrez Editorial: Ediciones UPC, 1999 Págs. 19-65 Diseño de programas. Formalismo y abstracción Autor: Ricardo Peña Marí Editorial : Prentice-Hall, 1999 Págs. 155-204 Estructuras de Datos y Métodos Algorítmicos Autor: Narciso Martí Oliet y otros Editorial : Prentice-Hall, 2004 Págs. 3-37 Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 3

1.1 Abstracción de Datos y Abstracción de Datos: manipulación de los datos a nivel lógico y abstracción de su implementación física en una determinada máquina o en un determinado lenguaje de programación Tipos básicos o estándar: entero, carácter, booleano, etc. Tipos simples definidos por el programador: enumerado, subrango Tipos estructurados: array, registro constructores genéricos (genericidad) (TAD) Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 4

Tipo Abstracto de Datos Colección de valores y de operaciones definidas sobre ellos mediante una especificación independiente de cualquier implementación Un TAD está formado por: Una definición o especificación Visible al usuario Precisa, legible y no ambigua Nombre del tipo + sintaxis y semántica de las operaciones Una implementación Oculta al usuario Estructurada, eficiente y legible Elección de la representación más adecuada + algoritmos de las operaciones Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 5

Objetivo: separar el uso del tipo de dato de su implementación TAD Especificación Implementación Sintaxis Semántica Representación Algoritmos Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 6

Métodos para especificar un tipo abstracto de datos Especificación formal (especificación algebraica) Especificación informal (lenguaje natural) Especificación semi-formal (la estudiada en Estructuras de Datos I) Especificación semi-formal Para el tipo Nombre Descripción Características Valores no admitidos Para las operaciones Parámetros Valor de retorno Precondiciones Efecto Excepciones Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 7

Precondiciones vs. Excepciones Precondiciones: Contexto muy limitado (fácil verificar que se satisfacen las restricciones), implementación más eficiente o más simple Excepciones: Siempre que sea posible, la implementación debería comprobar las restricciones y lanzar una excepción en caso de que no se satisfagan. Puede no tener sentido, como en una búsqueda binaria en un vector ordenado Si una excepción se produce para un cierto subconjunto de valores de los argumentos, este subconjunto no debería aparecer en la cláusula precondiciones Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 8

Un lenguaje soporta la implementación de tipos abstractos de datos si incluye mecanismos que permitan separar la especificación de la implementación, es decir, permita la encapsulación u ocultación de la información, que consiste en: Privacidad de la representación interna. El usuario no conoce los detalles de cómo se implementan las estructuras de datos y las operaciones Protección del tipo. El usuario sólo puede usar las operaciones definidas en la especificación La clase en los lenguajes OO es el mecanismo apropiado para implementar un TAD algoritmos de datos algoritmos de control algoritmos + estructuras de datos = programas algoritmos de control + TAD = programas Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 9

1.2 Especificación algebraica de un TAD 1.2.1 Introducción Especificación algebraica. Técnica formal para especificar tipos abstractos de datos OBJETIVO Definir sin ambigüedades un tipo de datos conjunto de valores sintaxis y significado de cada operación permitida VENTAJAS Define tipos independientemente de cualquier representación e implementación Consigue unanimidad en la interpretación del tipo Posibilita la obtención de código automáticamente a partir de la especificación algebraica (aún no muy desarrollado) Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 10

1.2.2 Signatura de una especificación algebraica Signatura. Define los géneros y los nombres de las operaciones con sus perfiles nombres de los nuevos tipos a especificar número y tipo de los parámetros, y tipo del resultado CARACTERISTICAS Notación funcional dominio rango Cada operación es una función con 0 o más parámetros Todas las operaciones devuelven un único valor de un tipo determinado Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 11

Ejemplo: Signatura del TAD booleano palabras reservadas para indicar el comienzo y el final de una especificación nombre de los tipos que se van a especificar espec tadbool género booleano operaciones verdad, falso : booleano _ : booleano booleano constantes _ _, _ _ : booleano booleano booleano fespec nombre de operación perfil de operación Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 12

Ejemplo. Posible signatura de los naturales con el 0 importación de TAD definidos en otras especificaciones Notación prefija. El nombre de la operación y los parámetros entre paréntesis, separados por comas. suc(x) = y espec naturales usa booleanos géneros natural operaciones 0 : natural suc : natural natural _ + _, _ * _ : natural natural natural _ _, _ > _ : natural natural booleano fespec Notación infija. El símbolo _ indica la posición de los argumentos o parámetros. x y = verdad Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 13

Para cada género o tipo existe un conjunto de términos bien formados sintácticamente correctos Cada constante es un término y mediante la aplicación sucesiva y correcta de símbolos de operaciones de una signatura se pueden construir términos Ejemplos de términos bien formados : 0 (suc (suc (0)) * suc(0)) suc(0) ((verdad falso) ( falso)) (0 > (suc (0))) En determinadas especificaciones, un valor del tipo puede venir expresado por más de un término. Se denomina término canónico al elegido como representante de cada valor Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 14

1.2.3 Ecuaciones de una especificación algebraica También se conocen con el nombre de axiomas Determinan las propiedades y el comportamiento de las operaciones Toda especificación debe cumplir estas dos propiedades: sólo pertenecen al tipo los valores que puedan ser creados mediante términos sintácticamente correctos cada término bien formado denota un único valor del tipo especificado Mediante las ecuaciones ha de ser posible deducir todas las equivalencias que son válidas entre los términos, es decir, identificar las secuencias de operaciones (términos) que producen el mismo resultado en general, para las operaciones binarias conmutativas no se añadirán en la especificación las ecuaciones de conmutatividad de la forma: x 1 OP x 2 = x 2 OP x 1, salvo en el caso que sirvan para definir el comportamiento de dicha operación. Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 15

Ejemplo. Queremos especificar el tipo naturales con el 0 espec naturales_1 género natural operaciones 0 : natural suc : natural natural fespec únicos valores que pueden construirse: 0, suc (0), suc (suc (0)), suc (suc (suc (0))), etc. cada término denota un valor diferente Añadimos a la especificación la operación suma espec naturales_2 género natural operaciones 0 : natural suc : natural natural _ + _ : natural natural natural fespec incumple la segunda propiedad "suc (0)" y "0 + suc (0) generan el natural 1 Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 16

Existen 2 puntos de vista respecto al papel de las ecuaciones en las especificaciones algebraicas: igualar términos que generan el mismo valor (punto de vista algebraico) definir el comportamiento de las operaciones con todas las posibles combinaciones de valores (patrones) que pueden tomar sus parámetros (punto de vista semántico) Formato de una ecuación: término_1 = término_2 donde término_1 y término_2 son términos bien formados de un mismo género Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 17

espec naturales_3 género natural operaciones 0 : natural Punto de vista algebraico igualar términos que generan el mismo valor suc : natural natural _ + _ : natural natural natural ecuaciones x, y: natural x + 0 = x Punto de vista semántico definir el comportamiento de las operaciones con todos los patrones o representantes del tipo fespec x + suc (y) = suc (x+y) Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 18

Ejemplo. Completar la especificación algebraica de los booleanos espec bool género booleano operaciones verdad, falso: booleano _: booleano _ _, _ _ : booleano booleano booleano ecuaciones b: booleano verdad = falso falso = verdad b verdad = verdad b falso = b verdad b = verdad falso b = b fespec b verdad = b b falso = falso verdad b = b falso b = falso Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 19

1.3 Construcción de especificaciones 1.3.1 Operaciones: clasificación g: símbolo o identificador del género correspondiente al tipo que se desea especificar OP(g): conjunto de operaciones relacionadas con g Clasificación: Constructoras. Cons(g). Conjunto de operaciones que devuelven un valor de género g Generadoras. Gen(g). Subconjunto mínimo de operaciones constructoras que permite generar todos los valores del TAD que queremos especificar Modificadoras. Mod(g). Las constructoras que no forman parte del conjunto de generadoras Observadoras. Obs(g). Conjunto de operaciones que devuelven un valor de género diferente de g Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 20

Natural espec naturales usa booleanos género natural operaciones 0 : natural suc: natural natural _ + _ : natural natural natural _ _ : natural natural booleano fespec Clasificación de las operaciones? Secuencia espec secuenciadenaturales usa naturales_3 género secn operaciones [ ] : secn {secuencia vacía} [ _ ] : natural secn {secuencia unitaria} _ ++ _ : secn secn secn {concatenar secuencias} _ _ : natural secn secn {añadir un natural a una secuencia} ecuaciones x: natural; s, s1, s2, s3: secn s ++ [ ] = s [ ] ++ s = s (s1 ++ s2) ++ s3 = s1 ++ (s2 ++ s3) x s = [x] ++ s fespec Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 21

El conjunto Gen(g) puede ser: Conjunto libre de generadoras: todo término formado sólo por constructoras generadoras denota un valor diferente en el tipo de datos correspondiente a g Conjunto no libre de generadoras: dos o más términos distintos formados sólo por constructoras generadoras denotan un mismo valor del tipo Son libres o no libres los siguientes conjuntos de generadoras? Gen (natural) = {0, suc} Gen (secn) = { [ ], _ _ } Gen (secn) = { [ ], [ _ ], _ ++ _ } Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 22

1.3.2 Escritura de ecuaciones Paso 1. Elegir conjunto de operaciones generadoras Paso 2. Si Gen(g) es un conjunto no libre, escribir ecuaciones entre generadoras. Si es libre, no hacer nada Paso 3. Escribir todas las ecuaciones necesarias para definir el comportamiento de cada operación modificadora (especificación naturales_3) Paso 4. Escribir todas las ecuaciones necesarias para definir el comportamiento de cada operación observadora Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 23

1.3.3 Operaciones parciales Ejemplo. Queremos añadir la operación predecesor a los naturales espec naturales_4 género natural operaciones 0 : natural suc : natural natural parcial pred: natural natural dominios de definición x: natural pred (suc (x)) ecuaciones x: natural la operación predecesor no está definida para el natural 0 (situación de error) es una operación parcial no puede aplicarse a todos los valores del dominio en la sección "dominios de definición" se especifican los dominios donde están definidas las operaciones parciales de la especificación pred (suc (x)) = x fespec Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 24

1.3.4 Especificaciones genéricas Generalmente, los TAD que representan colecciones de elementos suelen realizarse de forma genérica, dejando como parámetro el elemento almacenado en la colección Las operaciones de estos TAD se comportan de la misma forma, independientemente del tipo de los elementos que almacena espec secuenciagenérica parámetro formal género elemento fpf género sec operaciones [ ] : sec {secuencia vacía} [ _ ] : elemento sec {secuencia unitaria} _ ++ _ : sec sec sec _ _ : elemento sec sec ecuaciones fespec {concatenar secuencias} {añadir un elemento a una secuencia} Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 25

Ejemplos de especificaciones Ejemplo 1. Completar la especificación algebraica del TAD Conjuntos espec conjuntos usa booleanos, naturales parámetro formal género elemento fpf genero conjunto operaciones : conjunto poner, quitar: elemento conjunto conjunto _ _, _ _ : conjunto conjunto conjunto _ _ : elemento conjunto booleano esvacío: conjunto booleano cardinal: conjunto natural Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 26

Ejemplos de especificaciones Ejemplo 2. Completar la especificación algebraica del TAD string_reducido espec string_reducido usa carácter, natural género string operaciones stringvacío: string { crea un string vacío } añade: string carácter string { añade un elemento al final del string } longitud: string natural { devuelve el número de caracteres que forman el string } parcial carac: natural string carácter { devuelve el carácter que se encuentra en la posición indicada por el parámetro. El carácter situado a la izquierda se encuentra en la posición 1 } concatena: string string string { devuelve el resultado de poner el segundo string al final del primero } inversa: string string { devuelve el string formado por los mismos caracteres pero en orden inverso } Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 27

1.4 Paso de la especificación a la implementación de TAD Dada la especificación de un TAD, su implementación consiste en: Elegir un dominio concreto para cada género incluido en el TAD Los dominios concretos se implementan mediante declaraciones de tipos, usando otros tipos ya implementados (por nosotros o incluidos en el propio lenguaje o en alguna librería) Definir un método concreto para cada operación de la especificación Los métodos concretos pueden implementarse como procedimientos o funciones aunque en la especificación algebraica sólo se admitan funciones La implementación debe cumplir 2 condiciones: Corrección satisfacer las ecuaciones de la especificación No vamos a considerar la verificación de las implementaciones con respecto a la especificación algebraica. Requiere un desarrollo formal muy amplio. A pesar de ello, pueden establecerse relaciones intuitivas entre especificación e implementación Privacidad y protección La estructura interna del tipo y la implementación de sus operaciones deben permanecer ocultas El único acceso posible al tipo debe ser a través de las operaciones públicas de éste Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 28

1.5 Implementación de TAD: La librería estándar de plantillas (STL) La librería estándar de plantillas o STL (Standard Template Library) es un conjunto de TAD y algoritmos que conforman una parte sustancial de la Librería Estándar de C++ Sus componentes principales son: Contenedores Estructuras de datos cuyo propósito es contener otros objetos Iteradores Abstracción que permite el acceso secuencial a los elementos de un contenedor STL proporciona iteradores para todos sus contenedores Algoritmos Funciones genéricas que permiten realizar operaciones habituales (buscar, ordenar, mínimo, máximo, iguales, ) sobre la mayoría de contenedores Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 29

Contenedores Secuencias: dispone los elementos en orden lineal Vector Pila Cola Doble cola Cola de prioridad Lista Asociativos: permite el almacenamiento de elementos en función de una clave (no de una posición) Conjunto Multiconjunto: conjunto que admite valores repetidos Diccionario: asocia un valor a una clave Multidiccionario: diccionario en el que una clave puede tener asociada diferentes valores Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 30