tipos de datos abstractos
DESCRIPTION
Descripción de tipos abstractos de datosTRANSCRIPT
![Page 1: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/1.jpg)
Tipos Abstractos de Datos Unidad 1: Fundamentos de estructura de datos
![Page 2: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/2.jpg)
Tipos de datos
• Un tipo de dato es una colección de valores
• Han sido estudiados los tipos de datos que
implementan lenguajes como C++ o Java (Boolean,
Integer, Character...)
• Estos tipos son conocidos como “tipos simples”
• Estos tipos pueden ser utilizados en programas sin
necesidad de que los detalles sobre su
implementación sean conocidos
![Page 3: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/3.jpg)
Tipos Abstractos de Datos (TAD)
• Con los lenguajes de programación estructurados
(años 60’s) surge el concepto de tipo de datos.
• Ese concepto es insuficiente para software a
gran escala: sólo el compilador restringe el uso
de los datos.
• En los 70’s aparece el concepto de TAD: un tipo
de dato no sólo es el conjunto de valores, sino
también sus operaciones con sus propiedades.
![Page 4: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/4.jpg)
TAD
• Se pueden encontrar varias definiciones para el concepto
de Tipo Abstracto de Datos (TAD):
▫ Conjunto de Operaciones.
▫ Modelo matemático con una serie de operaciones definidas en
ese modelo.
▫ Tipo de datos definido de forma única mediante un tipo y un
conjunto de operaciones definidas sobre el tipo.
▫ El conjunto constituido por la estructura de datos y las
operaciones asociadas a la misma que permite modelar el
comportamiento de una entidad real.
![Page 5: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/5.jpg)
TAD = valores + operaciones
Definición de TAD
• Un Tipo Abstracto de Datos es un conjunto de
valores y de operaciones definidos mediante una
especificación independiente de cualquier
representación.
![Page 6: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/6.jpg)
TAD
• Un Tipo Abstracto de Datos es una abstracción donde se
encuentran encapsulados los estados potenciales en los
que se puede encontrar una entidad de ese tipo y las
operaciones que pueden realizarse sobre ella.
• Abstraer: Separar por medio de una operación intelectual
las cualidades de un objeto para considerarlas
aisladamente o para considerar el mismo objeto en su pura
esencia o noción.
![Page 7: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/7.jpg)
TAD
• Como se ha mencionado, se trata de una
abstracción. No se incluyen detalles sobre la
implementación de las operaciones.
• Los TAD son independientes por completo de la
implementación
![Page 8: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/8.jpg)
Estructuras de datos
• En muchos textos, pueden encontrarse
confundidos los términos TAD y Tipo de Datos,
así como TAD y Estructura de Datos.
• Estructura de Datos: Conjunto de variables que
se encuentran relacionadas.
• Con Estructura de Datos, por tanto, nos
referimos a la implementación física de un TAD
![Page 9: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/9.jpg)
Características de un TAD
• Ocultamiento. El TAD tiene un comportamiento de “caja
negra” dado que quien lo usa sabe qué puede hacer pero
no cómo lo hace.
• Encapsulamiento (y, en consecuencia, Protección). El
usuario de TAD’s no tiene acceso y, por tanto, no puede
modificar sus características. No obstante, puede partir de
él para construir otros TAD’s
![Page 10: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/10.jpg)
Características de un TAD
• Compilación separada: El resultado de la compilación
del TAD se pone a disposición de los usuarios en forma de
unidades que pueden utilizarse como si estuvieran
predefinidas en el lenguaje de programación.
![Page 11: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/11.jpg)
Ejemplos de Tipos de TAD’s
•Pilas
▫Concepto
▫Modelo gráfico
•Colas
▫Concepto
▫Modelo gráfico
![Page 12: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/12.jpg)
Pilas- concepto
Una pila es una agrupación de elementos
de determinada naturaleza o tipo (datos de
personas, números, procesos informáticos,
automóviles, etc.) entre los que existe
definida una relación de orden (estructura
de datos).
![Page 13: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/13.jpg)
Pilas- concepto
En función del tiempo, algunos elementos
de dicha naturaleza pueden llegar a la pila
o salir de ella (operaciones/acciones). En
consecuencia el estado de la pila varia.
![Page 14: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/14.jpg)
Pilas- concepto
Una pila presenta el comportamiento LIFO
(Last Input First Output) y el criterio de
ordenación se establece en sentido inverso
al orden de llegada.
Así pues, el ultimo elemento que llego al
conjunto será el primero en salir del mismo,
y así sucesivamente.
![Page 15: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/15.jpg)
Pila – Modelo Gráfico
•Se pude representar gráficamente una
pila según aparece en la figura 1: una
estructura de datos vertical, en la que los
elementos se insertan y extraen por la
parte superior.
![Page 16: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/16.jpg)
Pila – Modelo Gráfico
Figura 1. Modelo gráfico de pila
54172983
Cima
Fondo
desapilar apilar
![Page 17: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/17.jpg)
Cola - Concepto
Una cola es una agrupación de elementos
de determinada naturaleza o tipo (datos de
personas, números, procesos informáticos,
automóviles, etc.) entre los que existe
definida una relación de orden (estructura
de datos).
![Page 18: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/18.jpg)
Cola - Concepto
En función del tiempo, algunos elementos
pueden llegar a la cola o salir de ella
(operaciones / acciones). En
consecuencia el estado de la cola varia.
![Page 19: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/19.jpg)
Cola - Concepto
Una cola presenta comportamiento FIFO
(First Input First Output) y se respeta como
criterio de ordenación el momento de la
llegada: el primer elemento de la cola, será
el que primero llego a ella y, en
consecuencia, el primero que saldrá, y así
sucesivamente.
![Page 20: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/20.jpg)
Cola – Modelo Gráfico
Se puede representar gráficamente una
cola según aparece en la Figura 2: una
estructura de datos horizontal, en la que
los elementos se insertan por el extremo
derecho, y se extraen por la parte
izquierda.
![Page 21: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/21.jpg)
Cola – Modelo Gráfico
Principio Fin
7 3 1 2 6 9 0 8 11 4 3 6
Desencolar Encolar
Figura 2. Modelo gráfico de cola
![Page 22: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/22.jpg)
Implementación de un TAD
• Es importante comprender la diferencia entre un TAD y su
implementación.
• Las implementaciones no dejan de ser importantes, y su
elección es crítica.
• Al final, el usuario no debe preocuparse de cómo está
implementado un TAD. Su única preocupación debe ser el
uso del mismo
![Page 23: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/23.jpg)
Implementación de un TAD
• ¿Cómo debe implementarse un TAD?
• Deben considerarse detalles acerca de la
complejidad espacial de las estructuras y
temporal de las operaciones
• Preguntas que debe formularse el programador:
▫ ¿Cómo será la estructura de datos? ¿Cómo crecerá?
▫ Según lo anterior y otras consideraciones ¿cuál será el
costo de una implementación u otra para cada operación?
![Page 24: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/24.jpg)
TAD: Diseño e implementación
• Debido a todo lo expuesto, el diseñador de un
TAD debe enfrentarse a tres pasos bien distintos,
pero estrechamente relacionados:
1. Análisis de datos y operaciones
2. Elección del TAD
3. Elección de la implementación
![Page 25: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/25.jpg)
Declaración de un TAD
•Especificación algebraica, con dos
componentes
1. Signatura (Sintaxis) se compone de:
a) Definición de los posibles valores del tipo
b) Operaciones definidas
2. Axiomas (Semántica): relaciones y
restricciones que se establecen sobre el
modelo.
![Page 26: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/26.jpg)
Ejemplo 1: TAD Booleano
TAD BOOLEANO;SIGNATURA
VALORESBOOLEAN={TRUE, FALSE}
OPERACIONESINIC:BOOLEAN BOOLEANNOT:BOOLEAN BOOLEANOR:BOOLEAN x BOOLEAN BOOLEANAND:BOOLEAN x BOOLEAN BOOLEAN
![Page 27: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/27.jpg)
Ejemplo 1: TAD Booleano
TAD BOOLEANO;AXIOMAS
INIC(p)=pNOT(TRUE)=FALSENOT(NOT(p))=pp OR NOT(p)=TRUEp OR p=pp AND NOT(p)=FALSEp AND p=p
![Page 28: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/28.jpg)
Ejemplo 2: TAD Número_NaturalTAD Número_Natural;
UTILIZA Booleano;SIGNATURA
VALORESNAT
OPERACIONESINIC:NAT NATCERO: NATESCERO:NAT BOOLEANSUCC:NAT NATSUMA:NAT x NAT NATIGUALES:NAT x NAT NAT
![Page 29: Tipos de Datos Abstractos](https://reader036.vdocuments.pub/reader036/viewer/2022062802/563dbbbb550346aa9aafc63f/html5/thumbnails/29.jpg)
Ejemplo 2: TAD Número_NaturalTAD Número_Natural;
AXIOMAS
INIC(X)=XCERO()=0ESCERO(CERO)=TRUEESCERO(SUCC(X))=FALSESUMA(CERO,X) = XSUMA(SUCC(X),Y) = SUCC(SUMA(X,Y))SUCC(X) = SUMA(X,1)IGUAL(X,CERO) = IF ESCERO(X) THEN TRUE ELSE FALSEIGUAL(CERO,SUCC(X)) = FALSEIGUAL(SUCC(X),SUCC(Y)) = IGUAL(X,Y)