Beruflich Dokumente
Kultur Dokumente
conceptos que no se deben confundir, ellos son: tipo de datos y estructura de datos.
Un tipo de dato, en un lenguaje de programacin, define un conjunto de valores que una
determinada variable puede tomar, as como las operaciones bsicas sobre dicho conjunto.
Ahora veamos como se van relacionando estos conceptos. Los tipos de datos constituyen un
primer nivel de abstraccin, ya que no se tiene en cuenta cmo se implementan o se
representan realmente la informacin sobre la memoria de la mquina. Para el usuario, el
proceso de implementacin o representacin es invisible.
Origen
El concepto de tipo de dato abstracto (TDA, Abstract Data Type), fue propuesto por primera
vez hacia 1974 por John Guttag y otros, pero no fue hasta 1975 que por primera vez Liskov lo
propuso para el lenguaje CLU.
El lenguaje Turbo Pascal fue determinante para la comn aceptacin de los TDA (Tipo de Dato
Abstracto) con la introduccin de las Units, si bien estas no cumplen con las caractersticas
bsicas de un tipo de dato abstracto como por ejemplo la encapsulacin de los datos. El
lenguaje de programacin denominado Ada. Ada pudo implementar exitosamente los TDA
con sus packages.
Nivel Fsico. Determina como estn almacenados fsicamente los datos (pistas,
sectores, cilindros), representa el nivel ms bajo.
Nivel Lgico o Conceptual. Determina la organizacin de los archivos. ndices, llaves,
orden de campos, relaciones, tipos de datos.
Nivel de Vistas. Oculta parte de la informacin a los usuarios, es decir hace visible solo
una parte de la base de datos.
Un TDA representa una abstraccin:
Tipo de datos: proporcionado por los leguajes de alto nivel. La representacin usada
es invisible al programador, al cual solo se le permite ver las operaciones predefinidas
para cada tipo.
Estructuras
Las estructuras de los TAD se componen de dos partes: la interfaz y la implementacin. Esto se
debe a que las estructuras de datos reales que utilizamos para almacenar la representacin de un
tipo abstracto de datos son invisibles para los usuarios o clientes. Mientras que en la interfaz se
declaran las operaciones y los datos, y en el caso de la implementacin va a contener el cdigo
fuente de las operaciones y lo mantiene oculto al usuario.
Implementacin
Una vez definido el TAD se escoge una representacin interna utilizando los
tipos que proporciona el lenguaje y / o otros TAD ya definidos previamente.
La representacin deber ocultarse utilizando los mecanismos que nos
proporcione el lenguaje. Ocultamiento de Informacin.
Normalmente la implementacin del tipo se realiza en un mdulo aparte que
ser enlazado al programa principal
Caracterizacin
Los TDA que nos van a interesar de ahora en adelante son aquellos que reflejen cierto
comportamiento organizando cierta variedad de datos estructuradamente. A esta
forma estructurada de almacenar los datos ser a la que nos refiramos para
caracterizar cada TDA.
Los TDA que tienen informaciones simples pero dependientes de un comportamiento
estructural sern llamados polticos y aquellos TDA simples, como son los tipos
predefinidos donde la informacin no es relacionada mediante ninguna estructura y no
admiten ms que un valor en cada momento ser denominados TDA monolticos.
Ntese que cuando hablemos de un TDA no haremos ninguna alusin al tipo de los
elementos sino tan solo a la forma en que estn dispuestos estos elementos. Solo nos
interesa la estructura que soporta la informacin y sus operaciones. Para determinar
el comportamiento estructural basta con observar la conducta que seguirn los datos.
Caractericemos entonces los TDA. Un TDA tendr una parte que ser invisible al
usuario la cual hay que proteger y que se puede decir que es irrelevante para el uso
del usuario y est constituida tanto por la maquinaria algortmica que implemente la
semntica de las operaciones como por los datos que sirvan de enlace entre los
elementos del TDA, es decir, informacin interna necesaria para la implementacin
que se est haciendo para ese comportamiento del TDA. Resumiendo podemos decir,
que tanto la implementacin de las operaciones como los elementos internos del TDA
sern privados al acceso externo y ocultos a cualquier otro nivel.
VENTAJAS
Las principales ventajas que nos aportan los TAD son las siguientes:
1. Mejoran la conceptualizacin y hacen ms claro y comprensible el cdigo.
2. Hacen que el sistema sea ms robusto.
3. Reducen el tiempo de compilacin.
4. Permiten modificar la implementacin sin que afecte al interfaz pblico.
5. Facilitan la extensibilidad.
TDA lista
Una lista se define como una serie de N elementos E1, E2, ..., EN, ordenados de manera
consecutiva, es decir, el elemento Ek (que se denomina elemento k-simo) es previo al
elemento Ek+1. Si la lista contiene 0 elementos se denomina como lista vaca. Las
operaciones que se pueden realizar en la lista son: insertar un elemento en la
posicin k, borrar el k-simo elemento, buscar un elemento dentro de la lista y
preguntar si la lista esta vaca.
Una manera simple de implementar una lista es utilizando un arreglo. Sin embargo, las
operaciones de insercin y borrado de elementos en arreglos son ineficientes, puesto
que para insertar un elemento en la parte media del arreglo es necesario mover todos
los elementos que se encuentren delante de l, para hacer espacio, y al borrar un
elemento es necesario mover todos los elementos para ocupar el espacio desocupado.
Una implementacin ms eficiente del TDA se logra utilizando listas enlazadas.
Ahora se mostrara como se presenta una implementacin en Java del TDA utilizando
listas enlazadas y sus operaciones asociadas:
Lista Vaca (): devuelve verdadero si la lista est vaca, falso en caso
contrario.
TDA pila
Una pila (stack o pushdown en ingls) es una lista de elementos de la cual slo se puede
extraer el ltimo elemento insertado. La posicin en donde se encuentra dicho
elemento se denomina tope de la pila. Tambin se conoce a las pilas como listas
LIFO (LAST IN - FIRST OUT: el ltimo que entra es el primero que sale).
La interfaz de este TDA provee las siguientes operaciones:
tope (): retorna el elemento que se encuentre en el tope de la pila, pero sin
eliminarlo de sta (top en ingls).
est Vaca (): retorna verdadero si la pila no contiene elementos, falso en caso
contrario (is Empty en ingls).
Tambin podemos definir desapilar como sacar el elemento del tope de la pila sin
retornarlo.
Public PilaArreglo ()
{
Arreglo=new Object [MAX_ELEM];
Tope=-1; // inicialmente la pila est vaca
}
Class PilaLista
{
Prvate Nodo Lista;
Public PilaLista ()
{
Lista=null;
}
// Versin recursiva
TDA cola
Una cola es una lista de elementos en donde siempre se insertan nuevos elementos al
final de la lista y se extraen elementos desde el inicio de la lista. Tambin se conoce a
las colas como listas FIFO (FIRST IN - FIRST OUT: el primero que entra es el
primero que sale).
Las operaciones bsicas en una cola son:
estaVacia (): retorna verdadero si la cola est vaca, falso en caso contrario.
Al igual que con el TDA pila, una cola se puede implementar tanto con arreglos como
con listas enlazadas. A continuacin se ver la implementacin usando un arreglo.Las
variables de instancia necesarias en la implementacin son:
Class ColaArreglo
{
Prvate Object [] arreglo;
Prvate int primero, ultimo, num_elem;
Prvate int MAX_ELEM=100; // mximo nmero de elementos en la cola
Public ColaArreglo ()
{
Arreglo=new Object [MAX_ELEM];
Primero=0;
Ultimo=-1;
num_elem=0;
}
Public void encolar (Object x)
{
If (num_elem<=MAX_ELEM) // si est llena se produce OVERFLOW
{
Ultimo=(ultimo+1)%MAX_ELEM;
Arreglo [ultimo]=x;
Num_elem++;
}
}
o Insercin: O(n)
o Insercin: O(1)
Operaciones:
Ver nombres ();
Calcular edad();
Modificar edad();
TDA.- Conjuntos: Conjunto de datos
Set [numero texto];
Operaciones:
Unin.
interseccin.
comparacin.