Anda di halaman 1dari 29

Tipos Abstractos de Datos

Unidad 1: Fundamentos de
estructura de datos

Tipos de datos
Un tipo de dato es una coleccin 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 implementacin
sean conocidos

Tipos Abstractos de Datos (TAD)


Con los lenguajes de programacin estructurados (aos
60s) surge el concepto de tipo de datos.
Ese concepto es insuficiente para software a gran
escala: slo el compilador restringe el uso de los
datos.

En los 70s aparece el concepto de TAD: un tipo de


dato no slo es el conjunto de valores, sino tambin
sus operaciones con sus propiedades.

TAD
Se pueden encontrar varias definiciones para el concepto de Tipo
Abstracto de Datos (TAD):
Conjunto de Operaciones.
Modelo matemtico 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.

Definicin de TAD
Un Tipo Abstracto de Datos es un conjunto de valores y
de operaciones definidos mediante una especificacin
independiente de cualquier representacin.

TAD = valores + operaciones

TAD
Un Tipo Abstracto de Datos es una abstraccin 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 operacin intelectual las


cualidades de un objeto para considerarlas aisladamente o para
considerar el mismo objeto en su pura esencia o nocin.

TAD
Como se ha mencionado, se trata de una abstraccin. No
se incluyen detalles sobre la implementacin de las
operaciones.

Los TAD son independientes por completo de la


implementacin

Estructuras de datos
En muchos textos, pueden encontrarse confundidos los
trminos 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
implementacin fsica de un TAD

Caractersticas de un TAD
Ocultamiento. El TAD tiene un comportamiento de caja negra
dado que quien lo usa sabe qu puede hacer pero no cmo lo hace.

Encapsulamiento (y, en consecuencia, Proteccin). El usuario de


TADs no tiene acceso y, por tanto, no puede modificar sus
caractersticas. No obstante, puede partir de l para construir otros
TADs

Caractersticas de un TAD
Compilacin separada: El resultado de la compilacin del TAD
se pone a disposicin de los usuarios en forma de unidades que
pueden utilizarse como si estuvieran predefinidas en el lenguaje de
programacin.

Ejemplos de Tipos de TADs


Pilas
Concepto
Modelo grfico

Colas
Concepto
Modelo grfico

Pilas- concepto
Una pila es una agrupacin de elementos de
determinada naturaleza o tipo (datos de personas,
nmeros, procesos informticos, automviles,
etc.) entre los que existe definida una relacin de
orden (estructura de datos).

Pilas- concepto
En funcin 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.

Pilas- concepto
Una pila presenta el comportamiento LIFO (Last
Input First Output) y el criterio de ordenacin 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.

Pila Modelo Grfico


Se pude representar grficamente una pila segn
aparece en la figura 1: una estructura de datos
vertical, en la que los elementos se insertan y
extraen por la parte superior.

Pila Modelo Grfico


desapilar

apilar
5
4
1
7
2
9
8
3

Cima

Fondo

Figura 1. Modelo grfico de pila

Cola - Concepto
Una cola es una agrupacin de elementos de
determinada naturaleza o tipo (datos de personas,
nmeros, procesos informticos, automviles,
etc.) entre los que existe definida una relacin de
orden (estructura de datos).

Cola - Concepto
En funcin del tiempo, algunos elementos pueden
llegar a la cola o salir de ella (operaciones /
acciones). En consecuencia el estado de la cola
varia.

Cola - Concepto
Una cola presenta comportamiento FIFO (First
Input First Output) y se respeta como criterio de
ordenacin 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.

Cola Modelo Grfico


Se puede representar grficamente una cola segn
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.

Cola Modelo Grfico


Principio

Fin
7 3 1 2 6 9 0 8 11 4 3 6

Desencolar

Encolar
Figura 2. Modelo grfico de cola

Implementacin de un TAD
Es importante comprender la diferencia entre un TAD y su
implementacin.
Las implementaciones no dejan de ser importantes, y su eleccin es
crtica.
Al final, el usuario no debe preocuparse de cmo est implementado
un TAD. Su nica preocupacin debe ser el uso del mismo

Implementacin de un TAD
Cmo 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:
Cmo ser la estructura de datos? Cmo crecer?
Segn lo anterior y otras consideraciones cul ser el costo de
una implementacin u otra para cada operacin?

TAD: Diseo e implementacin


Debido a todo lo expuesto, el diseador de un TAD debe
enfrentarse a tres pasos bien distintos, pero
estrechamente relacionados:
1. Anlisis de datos y operaciones
2. Eleccin del TAD
3. Eleccin de la implementacin

Declaracin de un TAD
Especificacin algebraica, con dos componentes
1. Signatura (Sintaxis) se compone de:
a) Definicin de los posibles valores del tipo
b) Operaciones definidas

2. Axiomas (Semntica): relaciones y restricciones


que se establecen sobre el modelo.

Ejemplo 1: TAD Booleano


TAD BOOLEANO;
SIGNATURA
VALORES
BOOLEAN={TRUE, FALSE}

OPERACIONES
INIC:BOOLEAN
BOOLEAN
NOT:BOOLEAN
BOOLEAN
OR:BOOLEAN x BOOLEAN
BOOLEAN
AND:BOOLEAN x BOOLEAN
BOOLEAN

Ejemplo 1: TAD Booleano


TAD BOOLEANO;
AXIOMAS
INIC(p)=p
NOT(TRUE)=FALSE
NOT(NOT(p))=p
p OR NOT(p)=TRUE
p OR p=p
p AND NOT(p)=FALSE
p AND p=p

Ejemplo 2: TAD Nmero_Natural


TAD Nmero_Natural;
UTILIZA Booleano;
SIGNATURA
VALORES
NAT

OPERACIONES
INIC:NAT
NAT
CERO:
NAT
ESCERO:NAT
BOOLEAN
SUCC:NAT
NAT
SUMA:NAT x NAT
NAT
IGUALES:NAT x NAT
NAT

Ejemplo 2: TAD Nmero_Natural


TAD
Nmero_Natural;

AXIOMAS
INIC(X)=X
CERO()=0
ESCERO(CERO)=TRUE
ESCERO(SUCC(X))=FALSE
SUMA(CERO,X) = X
SUMA(SUCC(X),Y) = SUCC(SUMA(X,Y))
SUCC(X) = SUMA(X,1)
IGUAL(X,CERO) = IF ESCERO(X) THEN TRUE ELSE FALSE
IGUAL(CERO,SUCC(X)) = FALSE
IGUAL(SUCC(X),SUCC(Y)) = IGUAL(X,Y)

Anda mungkin juga menyukai