tad_ana lilia laureano/uam-a1 tipos abstractos de datos y asertos ana lilia laureano cruces...

27
TAD_Ana Lilia Laureano/UA M-A 1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana- Azcapotzalco

Upload: encarna-cobian

Post on 11-Apr-2015

124 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 1

Tipos Abstractos de Datos y Asertos

Ana Lilia Laureano CrucesUniversidad Autónoma

Metropolitana-Azcapotzalco

Page 2: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 2

Los tipos abstractos de datos (TAD´s) y los asertos son una

técnica que obliga al diseñador a pensar primero en qué es lo que se supone desea haga el programa,

antes de lanzarse a la computadora, lo que podría originarte dolores de cabeza

muy fuertes.

Page 3: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 3

Un TAD, es una estructura de datos a la cual se le asocia un conjunto de

operaciones

Page 4: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 4

Ejemplos

• Un grafo G = <v,e>; un conjunto de: vertices y estados (arcos y ligas).

• Una Matriz; un conjunto de enteros, con operciaones (inversa, transpuesta, multiplicación, suma).

• Una secuencia; una colección ordenada de cero o más enteros; con significado en la posición.

Page 5: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 5

Qué

Cómo

Page 6: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 6

Interfaz

Implementación

Page 7: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 7

Abstracción y Especificación

• Es la generalización de un objeto, sea cual fuese en un determinado contexto.

• Cuando hablamos de programas se le conoce como especificación.

Page 8: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 8

Especificación• Esta relacionada con la descripción

de que es lo que se va a producir.

• Son llevadas a cabo en notación matemática.

• Nos ayuda a comparar la implentación final (Validación).

Page 9: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 9

Ejemplo: qué caracteriza a una Pila

Una pila es una colección de elementos secuenciales,

donde cada localidad aloja un dato del mismo tipo. Los datos son agregados y retirados por un lado

específico, llamado tope y solo es posible accesar los datos a través de ese tope.

Page 10: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 10

Elemento que se encuentra en el tope de

la pila

El siguiente elemento a ser insertado va en el tope de la pila.

TAD Pila

Page 11: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 11

Comportamiento de las Operaciones

• TraerElemento: regresa el valor del tope de la Pila.

• PonerElemento: introduce un elemento y regresa una pila con un elemento mas.

• Sacar Elemento: regresa una pila con un elemento menos (el del tope).

Page 12: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 12

• CreaPila: regresa una pila nueva y vacía.

• VaciaPila: regresa un valor verdadero cuando la pila esta vacia y falso en caso contrario.

• AnulPlia: libera una estructura pila.

Page 13: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 13

Se deben incluir a la descripción anterior el tipo de datos que se

recibe y el tipo de datos que se produce (dominio

y codominio).

Page 14: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 14

CreaPila

VaciaPila

TraerElemento

PonerElemento

SacarElemento

Pila

Pila

Pila, Elemento

Pila Pila

Pila

Pila

Elemento

Boolean

Una caja Negra llamada Pila

Page 15: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 15

OBJETO

ElementoBoolean

Pila

DATOS

METODOS

VaciaPila

CreaPila

TraerElementoPonerElementoSacarElemento

Anatomia del objeto PilaLlegada de mensajes

Page 16: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 16

Un TAD, es un conjunto de operaciones; la ejecución de

un TAD, sólo puede ser alcanzada a través de esas operciones y los resultados

de estas.

Page 17: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 17

Verificación Formal

• Esta representada por técnicas para preevenir errores en la etapa de diseño y de codificación, sin tener que ejecutar el programa.

• El objetivo es probar programas de manera análoga a las demostraciones en otras areas de matemáticas.

Page 18: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 18

Ejemplos

• Lenguaje Z; método formal basado en la teoría formal de conjuntos.

• VDM; en base a conjuntos de tipos de datos.

• Larch; combina especificaciones axiomáticas y algebraicas.

Page 19: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 19

Los asertos• Una técnica basada en afirmaciones

que se hacen con respecto al estado de un programa, en un punto y que son representadas por un aserto.

Suma Parte + 1

aserto { Suma > Parte }

Page 20: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 20

Beneficios

• Demostrar mediante argumentos lógicos que un diseño o implementación satisface los asertos.

• En lugar de ejecutar el programa.

Page 21: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 21

Asertos

• PreCondición

• PostCondición

• Invariante de Ciclo

• Deben ser verdad antes de ejecutar un módulo lógico.

• Que resultados son esperados, después de ejecutado un módulo lógico.

El estado de las variables antes de la I-ésima iteración, durante la ejecución y después de la ejecución.

Page 22: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 22

TIP’s para descubrir componentes reusable y/o TAD’s

• Alguno de los componentes del sistema puede ser útil para otros. (un componente reusable).

• El componente reusable puede ser usado con diferentes tipos de datos básicos y operaciones relacionadas con ellos. (un TAD)

Page 23: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 23

Cómo construir un componente reusable

• Especificarlo en dos partes: la interfaz o lo que ofrece (Qué) conocido como definición y la implentación (Cómo).

• La instancia de un componente reusble es realizada al instanciar la parte de definción, quien a su vez instancia a la parte de implementación.

Page 24: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 24

Etapas de diseño de los TAD’s

1. Especificación.2. Funcionalidad.3. Verificación.4. Implementación.

Page 25: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 25

Especificación

• Realizar una descripción en función de las operciones que necesita para:

1. Crear objetos (inicializadoras y constructoras).

2. Transformar objetos (simplificadoras).

3. Analizar el estado de un objeto (analizadoras).

4. Destruir objetos (destructoras).

Page 26: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 26

Funcionalidad

• En esta etapa descubriremos el dominio y el codominio de los datos utilizados por las operaciones que componen al TAD.

Page 27: TAD_Ana Lilia Laureano/UAM-A1 Tipos Abstractos de Datos y Asertos Ana Lilia Laureano Cruces Universidad Autónoma Metropolitana-Azcapotzalco

TAD_Ana Lilia Laureano/UAM-A 27

Verificación

• A esta etapa le corresponde la formalización del comportamiento de las operaciones, se basan en la pre y post condicion y en la invariante del ciclo. Además se utilizan las estructuras de control permitidas para la programación estructurada.