You are on page 1of 5

UNIVERSIDAD DE EL SALVADOR

FACULTAD MULTIDISCIPLINARIA PARACENTRAL


DEPARTAMENTO DE INFORMTICA
INGENIERA DE SISTEMAS INFORMTICOS.
ESTRUCTURA DE DATOS
Ing. Yancy E. Martnez de Molina

ESTRUCTURAS DE DATOS
(Recopilado de Java a Fondo, 2ed. ING. PABLO ADGUSTO SZNAJDLEDER, Alfaomega - 2013)

Las estructuras de datos representan formas de almacenar y organizar conjuntos de datos del mismo tipo. Adems, deben

proveer mecanismos de acceso rpido, gil y eficiente.


Llamamos algoritmo al conjunto (finito) de pasos con los que resolvemos un determinado problema computacional.
Las estructuras de datos son el soporte fundamental de los algoritmos y la eleccin de una estructura adecuada facilita
notablemente su desarrollo. Por el contrario, si la estructura de datos elegida como soporte para la resolucin de un
determinado algoritmo no es la indicada entonces su desarrollo se tornar excesivamente complejo.
Obviamente, ms all de lo simple o complicada que pueda resultar la programacin de un algoritmo en funcin de la
estructura de datos elegida, existe una relacin directa entre el rendimiento del algoritmo y la estructura de datos lo que
hace que, en determinadas situaciones, la eleccin de la estructura de datos sea un tema crtico.
Podemos clasificar las estructuras de datos en dos grupos: las estructuras estticas y las estructuras dinmicas. Esta
clasificacin est relacionada con la capacidad que tiene la estructura para incorporar o deshacerse de elementos a
medida que sea necesario.
Los arrays (por ejemplo) son estructuras de datos estticas. Si definimos un array de n elementos, entonces
podremos almacenar en este a lo sumo n elementos. Independientemente de esto, el array insumir una cantidad fija
de memoria de n * t bytes siendo t la longitud del tipo de dato definido para el array.
En cambio, un vector (un objeto de la clase Vector), por ejemplo, representa una estructura dinmica ya que nos
permite almacenar tantos elementos como necesitemos, siempre y cuando tengamos memoria disponible. En un
vector podemos agregar y eliminar elementos haciendo aumentar o disminuir la cantidad de memoria que ocupa.
El vector no es en s mismo una estructura de datos. En realidad, la clase Vector encapsula
y mantiene una estructura de datos interna en la cual almacena la informacin.
En general estudiaremos las principales estructuras de datos dinmicas y analizaremos las clases de la biblioteca que
Java provee relacionadas a este tema.

Estructuras dinmicas
Las estructuras dinmicas permiten almacenar una cantidad variable de datos. Pueden crecer o decrecer segn sea
necesario incrementando o decrementando la cantidad de memoria que ocupan.
En general la estructuras dinmicas se forman encadenando unidades de informacin llamadas nodo.
Una estructura dinmica se compone de un conjunto de nodos enlazados entre s ms un conjunto de operaciones
asociadas a travs de las cuales podemos manipular y acceder al conjunto de nodos y a la informacin que estos
contienen.

ESD- ciclo II/2015 .

UNIVERSIDAD DE EL SALVADOR

FACULTAD MULTIDISCIPLINARIA PARACENTRAL


DEPARTAMENTO DE INFORMTICA
INGENIERA DE SISTEMAS INFORMTICOS.
ESTRUCTURA DE DATOS
Ing. Yancy E. Martnez de Molina

UNIDAD I: TIPOS ABSTRACTOS DE DATOS


(Recopilacin de Mark Allen Weiss, Estructura de Datos en Java, Addison-Wesley y otras fuentes).

Cuando implementamos programas que modelen el mundo real nos topamos con un problema, en los lenguajes de
programacin slo contamos con unos cuantos tipos de datos y en el mundo real no es suficiente con esto. En
problemas reales es frecuente que la informacin que se maneje no sea de
Tipo elemental, es decir; no solamente es de tipo entero, real, carcter, etc.,
Sino que es mucho ms compleja. Por esta y otras razones debemos de ampliar nuestra nocin de tipo de dato.
Un tipo de dato es el conjunto de valores que puede tomar una variable. Como ejemplos tenemos a los bolanos que
solo pueden tomar los valores CIERTO y FALSO.
Matemticamente podemos extender el concepto de tipo de dato a Tipo de Datos Abstractos. Un TDA es un modelo
matemtico que define un tipo de dato con un conjunto de operaciones definidas sobre ese tipo de dato. Es posible que
esas operaciones den resultados pertenecientes a otro tipo de dato, pero por lo menos una de ellas, debe de dar un
resultado del tipo del TDA en cuestin. Para poder implantar un TDA mediante un lenguaje de programacin se
requiere de una Estructura de Datos. Una ED es un conjunto de variables de distintos tipos interconectadas entre s de
diferentes maneras. Las formas de representar una ED y sus interconexiones dependen del lenguaje de programacin
con el que se trabaja.
La unidad bsica de una ED es llamada celda. En un lenguaje de programacin las celdas se representan comnmente
mediante registros. Un registro es un conjunto de variables de diferente tipo referenciadas por un mismo nombre, cada
variable se denomina campo. Los mecanismos mediante los cuales se interconectan las celdas son:
Arreglos
Colecciones
En el caso de los arreglos se maneja un arreglo de celdas
Si manejamos apuntadores, las celdas tienen 2 campos: uno para el dato que se almacena y el otro es un apuntador a
la siguiente celda. La ltima celda apunta al apuntador NULO, para indicar que no sigue otra. Esto puede visualizarse
de la siguiente manera:

manzana
mandarina
naranja
pia
NULO

Fundamentalmente, un tipo de datos es un conjunto de valores y un grupo de operaciones sobre tales valores. Este
conjunto y estas operaciones forman una estructura matemtica que se implementa usando una estructura particular
de datos de hardware o software.
Un TAD es una estructura algebraica, o sea, un conjunto de objetos con ciertas operaciones definidas sobre ellos.
Piense, por ejemplo, en la calculadora: los elementos que maneja son cantidades numricas y las operaciones que
tiene definidas sobre stas son las operaciones aritmticas.

ESD- ciclo II/2015 .

UNIVERSIDAD DE EL SALVADOR

FACULTAD MULTIDISCIPLINARIA PARACENTRAL


DEPARTAMENTO DE INFORMTICA
INGENIERA DE SISTEMAS INFORMTICOS.
ESTRUCTURA DE DATOS
Ing. Yancy E. Martnez de Molina

Es posible observar que las operaciones de un TAD son de diferentes clases: algunas de ellas nos deben permitir crear
objetos nuevos, otras determinar su estado, unas construir otros objetos a partir de algunos ya existentes.
Tipo: agrupacin de elementos con caractersticas similares.
Abstracto: no concreto, conceptual.
Dato: informacin que una computadora puede entender.

Un Tipo Abstracto de Datos es un conjunto de valores y de operaciones definidos mediante una especificacin
independiente de cualquier representacin.
TAD = Representacin (datos o valores)+ operaciones (funciones o procedimientos)
Formalmente un TAD es una declaracin de datos empaquetada junto con la operaciones que son significativas para
el tipo de datos, en otras palabras encapsulamos los datos y las operaciones sobre esos datos y ocultamos estos
detalles a la vista del usuario

Para construir un abstracto de datos se debe poder:


1.
2.
3.
4.

Exponer una definicin del tipo.


Hacer disponible un conjunto de operaciones que se pueden utilizar para manipular instancias de ese tipo.
Proteger los datos asociados con el tipo de modo que slo se puede actuar sobre ellos con las rutinas
proporcionadas.
Hacer instancia a mltiples del tipo.
Para recordar
ecuacin:

Un tipo abstracto de datos puede definirse mediante la

TAD = Representacin (datos) + Operaciones (funciones y procedimientos)


Especificacin de un TAD.
La especificacin del TAD puede tener un enfoque informal, en el que se describen los datos y las operaciones
relacionadas en lenguaje natural. Otro enfoque ms riguroso, especificacin formal, supone suministrar un conjunto de
axiomas que describen las operaciones en su aspecto sintctico y semntico.
Especificacin informal de un TAD
La especificacin informal consta de dos partes:
Detallar, en los datos del tipo, los valores que pueden tomar.
Describir las operaciones, relacionndolas con los datos.
El formato que generalmente se emplea especifica primero el nombre del TAD y los datos:
TAD nombre del Tipo (valores y su descripcin)

ESD- ciclo II/2015 .

UNIVERSIDAD DE EL SALVADOR

FACULTAD MULTIDISCIPLINARIA PARACENTRAL


DEPARTAMENTO DE INFORMTICA
INGENIERA DE SISTEMAS INFORMTICOS.
ESTRUCTURA DE DATOS
Ing. Yancy E. Martnez de Molina

La especificacin informal de un TAD tiene como objetivo describir los datos del tipo y las operaciones segn la
funcionalidad que tienen. No sigue normas rgidas al hacer la especificacin, simplemente se indica, de forma comprensible,
lo que hace cada operacin.

A continuacin, cada una de las operaciones con sus argumentos y una descripcin funcional en lenguaje natural.

Operacin (argumentos). Descripcin funcional


Como ejemplo se va a especificar el tipo abstracto de datos Conjunto;
PASO UNO :

conjunto (coleccin de elementos sin duplicidades, pueden estar en cualquier orden, se usa para
representar los conjuntos matemticos con sus operaciones).
TAD

P ASO DOS :
Operaciones, existen numerosas operaciones matemticas sobre conjuntos, algunas de ellas:
Conjuntovacio. : Crea un conjunto sin elementos .
Aadir(Conjunto, elemento).: Comprueba si el elemento forma parte del conjunto, en caso negativo es aadido. La operacin modifica al conjunto.
Retirar(Conjunto, elemento).: En el caso de que el elemento pertenezca al conjunto es eliminado de ste. La operacin modifica al conjunto.
Pertenece(Conjunto, elemento). : Verifica si el elemento forma parte del conjunto, en cuyo caso devuelve cierto.
Es vacio(Conjunto).: Verifica si el conjunto no tiene elementos conjunto, en cuyo caso devuelve cierto
Cardinal(Conjunto).: Devuelve el nmero de elementos del conjunto.
Unin(Conjunto, Conjunto).:Realiza la operacin matemtica de la unin de dos conjuntos. La operacin devuelve un conjunto con los elementos

comunes y no comunes a los

dos argumentos.

Especificacin formal de un TAD


La especificacin formal proporciona un conjunto de axiomas que describen el comportamiento de todas las operaciones. La
descripcin ha de incluir un parte de sintaxis, en cuanto a los tipos de los argumentos y el tipo del resultado, y una parte de semntica,
donde se detalla para unos valores particulares de los argumentos la expresin del resultado que se obtiene.
La especificacin formal ha de ser lo bastante potente para que cumpla el objetivo de verificar la correccin de la implementacin del
TAD.
El esquema que se sigue para especificar formalmente un TAD consta de una cabecera con el nombre del TAD y los datos:
TAD nombre del tipo (valores que toman los datos del tipo)
Sigue, a continuacin, la sintaxis de las operaciones: se listan las operaciones indicando los tipos de los argumentos y el tipo
del resultado:

ESD- ciclo II/2015 .

UNIVERSIDAD DE EL SALVADOR

FACULTAD MULTIDISCIPLINARIA PARACENTRAL


DEPARTAMENTO DE INFORMTICA
INGENIERA DE SISTEMAS INFORMTICOS.
ESTRUCTURA DE DATOS
Ing. Yancy E. Martnez de Molina

Sintaxis
Operacin (Tipo argumento, elemento )-> tipo resultado

Al hacer una especificacin formal siempre hay operaciones definidas por s mismas, se consideran constructores del
TAD. Se puede decir que mediante estos constructores se generan todos los posibles valores del TAD. Normalmente, se
elige como constructor la operacin que inicializa (por ejemplo, Conjuntovacio en el TAD Conjunto), y la operacin que
aade un dato o elemento (esta operacin es comn a la mayora de los tipos abstractos de datos).
TAD Conjunto(coleccin de elementos sin duplicidades, pueden estar en cualquier orden, se usa para representar los conjuntos matemticos con sus
operaciones).
Sintaxis
Conjuntovacio -> Conjunto
Aadir(Conjunto, Elemento) -> Conjunto
Retirar(Conjunto, Elemento) -> Conjunto
Pertenece(Conjunto, Elemento) -> boolean
Esvacio(Conjunto) -> boolean
Cardinal(Conjunto) -> entero
Union(Conjunto, Conjunto) -> Conjunto

Ventajas de los tipos abstractos de datos.


Los tipos abstractos de datos proporcionan numerosos beneficios al programador, aqu se pueden resumir en los siguientes:
1.
2.

3.
4.
5.
6.
7.
8.
9.

Permite una mejor conceptualizacin y modelizacin del mundo real. Mejora la representacin y la comprensibilidad. Clarifica
los objetos basados en estructuras y comportamientos comunes.
Mejora la robustez del sistema. Si hay caractersticas subyacentes en los lenguajes permitiendo la especificacin del tipo de
cada variable, los tipos abstractos de datos permiten la comprobacin de tipos para evitar errores de tipo en tiempo de
ejecucin.
Mejora el rendimiento (prestaciones). Para sistemas tipiados (tipificados), el conocimiento de los objetos permite la
optimizacin de tiempo de compilacin.
Separa la implementacin de la especificacin. Permite la modificacin y mejora de la implementacin sin afectar a
la interfaz pblica del tipo abstracto de dato.
Permite la extensibilidad del sistema. Los componentes de software reutilizables son ms fciles de crear y mantener.
Recoge mejor la semntica del tipo. Los tipos abstractos de datos agrupan o localizan las operaciones y la
representacin de atributos.
Finalidad de uso: no necesitamos conocer los detalles internos del tipo de datos abstracto, solo la especificacin
que es mucho ms simple.
Desarrollo y mantenimiento: desarrollar y modificar cdigo es mucho ms sencillo. Localizar los errores es
mucho ms simple ya que es ms fcil su aislamiento.
Reusabilidad: el tipo de dato abstracto se puede usar en distintos programas.

Un programa que maneja un TAD lo hace teniendo en cuenta las operaciones o funcionalidad que tiene, sin interesarse por la
representacin fsica de los datos. Es decir, los usuarios de TAD se comunican con ste a partir de la interfaz que ofrece el TAD
mediante funciones de acceso.

ESD- ciclo II/2015 .

You might also like