Está en la página 1de 5

1.

1 Clasificacin de las estructuras de datos

Arreglos (vectores).
Estticas

Pilas.
Colas.
Registros.

Estructuras
de
Datos

Listas simples, dobles,


circulares, multilistas.
Pilas.

Dinmicas

Colas.

Punteros

rboles.
Grafos.
Archivos.

1.2 Tipos de datos abstractos (TDA)


En el mundo de la programacin existen diversos lenguajes que se han ido
creando con el paso del tiempo y que se han perfeccionado debido a las
necesidades de los programadores de la poca a la que pertenecen. Los
primeros lenguajes de programacin eran de tipo lineal, ya que un programa se
recorra desde un punto marcado como Inicio hasta llegar a un punto Fin. Con
el tiempo se fueron creando nuevos lenguajes y en nuestros das los ms
utilizados son los llamados Orientados a Objetos.
Los Lenguajes Orientados a Objetos (LOO) tienen la caracterstica de que no
son lenguajes lineales, sino que se forman de diversas funciones o metodos,
las cuales son llamadas en el orden en que el programa mismo las pide o el
usuario determina. Para entender mejor cmo funcionan los Lenguajes
Orientados a Objetos, vamos a introducir un concepto fundamental en las
Estructuras de Datos denominado Abstraccin de Datos y que es parte
importante de estos Lenguajes y de la manera en que funciona la mayora del
software comercial de nuestros das.
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
TDAs 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 Ada pudo implementar exitosamente
los TDAs con sus Packages. Vale recordar que estos dos ltimos lenguajes
soportan formalmente la Programacin modular.

Con mucha frecuencia se utilizan los trminos TDA y Abstraccin de Datos de


manera equivalente, y esto es debido a la similitud e interdependencia de
ambos. Sin embargo, es importante definir por separado los dos conceptos.
La abstraccin de datos consiste en ocultar las caractersticas de un objeto y
obviarlas, de manera que solamente utilizamos el nombre del objeto en nuestro
programa. Esto es similar a una situacin de la vida cotidiana. Cuando se dice
la palabra perro, usted no necesita que yo le diga lo que hace el perro. Usted
ya sabe la forma que tiene un perro y tambin sabe que los perros ladran. De
manera que yo abstraigo todas las caractersticas de todos los perros en un
solo trmino, al cual llamo perro. A esto se le llama Abstraccin y es un
concepto muy til en la programacin, ya que un usuario no necesita
mencionar todas las caractersticas y funciones de un objeto cada vez que ste
se utiliza, sino que son declaradas por separado en el programa y simplemente
se utiliza el trmino abstracto (perro) para mencionarlo.
En el ejemplo anterior, perro es un Tipo de Dato Abstracto y todo el proceso
de definirlo, implementarlo y mencionarlo es a lo que llamamos Abstraccin de
Datos.
Otro ejemplo seria. Supongamos que en algn Lenguaje de Programacin
Orientado a Objetos un pequeo programa saca el rea de un rectngulo de
las dimensiones que un usuario decida. Pensemos tambin que el usuario
probablemente quiera saber el rea de varios rectngulos. Sera muy tedioso
para el programador definir la multiplicacin de base por altura varias veces
en el programa, adems que limitara al usuario a sacar un nmero
determinado de reas. Por ello, el programador puede crear una funcin o
mtodo denominada rea, la cual va a ser llamada el nmero de veces que
sean necesitadas por el usuario y as el programador se evita mucho trabajo, el
programa resulta ms rpido, ms eficiente y de menor longitud. Para lograr
esto, se crea el mtodo rea de una manera separada de la interfaz grfica
presentada al usuario y se estipula ah la operacin a realizar, devolviendo el
valor de la multiplicacin. En el mtodo principal solamente se llama a la
funcin rea y el programa hace el resto.
Al hecho de guardar todas las caractersticas y habilidades de un objeto por
separado se le llama Encapsulamiento y es tambin un concepto importante
para entender la estructuracin de datos. Es frecuente que el Encapsulamiento
sea usado como un sinnimo del Ocultacin de informacin.
La solidez de un TDA reposa en la idea de que la implementacin est
escondida al usuario. Solo la interfaz es pblica. Esto significa que el TDA
puede ser implementado de diferentes formas, pero mientras se mantenga
consistente con la interfaz, los programas que lo usan no se ven afectados.
Un TDA est caracterizado por un conjunto de operaciones (funciones o
mtodos ) al cual se denomina usualmente como interfaz pblica y representa
el comportamiento del TDA; mientras que la implementacin como la parte
privada del TDA est oculta al programa cliente que lo usa. Todos los lenguajes

de alto nivel tienen predefinidos TDA; que son los tipos denominados simples y
las estructuras predefinidas, y estos tienen sus interfaces pblicas que incluyen
las operaciones como la +, -, *, etc. no se necesita conocer cmo actan tales
operadores sobre la representacin interna de los tipos definidos, que adems,
suele ser una implementacin bastante dependiente de la mquina sobre la
que trabaje el compilador. Lo interesante es que los lenguajes actuales nos van
a permitir ampliar los TDA predefinidos con otros que sern definidos por el
propio programador para adecuar as los tipos de datos a las necesidades de
los programas.
Algunos ejemplos comunes del uso de TDAs son:
Conjuntos: Implementacin de conjuntos con sus operaciones bsicas (unin,
interseccin y diferencia), operaciones de insercin, borrado, bsqueda...
rboles Binarios de Bsqueda: Implementacin de rboles de elementos,
utilizados para la representacin interna de datos complejos. Aunque siempre
se los toma como un TDA separado son parte de la familia de los grafos.
Pilas y Colas: Implementacin de los algoritmos FIFO y LIFO.
Grafos: Implementacin de grafos; una serie de vrtices unidos mediante una
serie de arcos o aristas.

1.3 Ejemplos de TDAs ( investigar ejemplos prcticos )

1.4 Manejo de memoria


Una computadora usa ambas memorias, la esttica y la dinmica al mismo
tiempo, pero las usa por diferentes razones debido al costo entre los dos tipos
de memoria RAM (ram memory).
La memoria es un espacio lgico para guardar informacin, tambin llamada
almacenamiento, se refiere a un componente, que forma parte de una
computadora, incluida en el cpu. Son dispositivos que retienen datos
informticos durante algn intervalo de tiempo. Las memorias proporcionan
unas de las principales funciones de la computacin moderna, la retencin o
almacenamiento de informacin.
Esttica:
La forma ms fcil de almacenar el contenido de una variable en memoria, en
tiempo de ejecucin, es en memoria esttica o permanente a lo largo de toda la
ejecucin del programa, es decir, que no se modifica al menos en tiempo de
ejecucin.
No todos los objetos (variables) pueden ser almacenados estticamente. Para
que un objeto pueda ser almacenado en memoria esttica su tamao (nmero
de bytes necesarios para su almacenamiento) ha de ser conocido en tiempo de

compilacin, como consecuencia de esta condicin no podrn almacenarse en


memoria esttica.
La asignacin de memoria puede hacerse en tiempo de compilacin y los
objetos estn vigentes desde que comienza la ejecucin del programa hasta
que termina.
Consideraciones comunes:
Error en tiempo de ejecucin de ndice fuera del rango.
Se debe conocer con anticipacin el tamao de la estructura.
Se guardan en memorias adyacentes.
Vectores, matrices, cubos, registros, archivos.

Memoria

Ventajas

La velocidad de acceso es alta.

Desventajas

Para retener los datos solo


necesita estar en ejecucin.

SRAM
(ESTATICA)Son ms fciles de disear.
Lgica simple

Optimas para resolver problemas

Menor capacidad, debido a que cada


celda de almacenamiento requiere
ms transistores.
Mayor costo por bit.
Mayor consumo de Potencia.
No se puede modificar el tamao de la
estructura en T.D.E.
No es ptima con grandes cantidades
de datos.
Desperdicios de memoria cuando no se
utiliza totalidad del tamao.

Memoria dinmica
Su tamao puede variar durante la ejecucin del programa y puede ser liberado
mediante una funcin free, dependiendo del lenguaje de programacion.
Es un espacio de almacenamiento que se solicita en tiempo de ejecucin. De
esa manera, a medida que el proceso va necesitando espacio para ms lneas,
va solicitando ms memoria al sistema operativo para guardarlas. El medio
para manejar la memoria que otorga el sistema operativo, es el puntero o
direccin de memoria, no se puede saber en tiempo de compilacin dnde nos
dar huecos el sistema operativo para almacenar los datos.
Un dato importante, es que como tal este tipo de datos se crean y se destruyen
mientras se ejecuta el programa y por lo tanto la estructura de datos se va

dimensionando de forma precisa a los requerimientos del programa,


evitndonos as, perder datos o desperdiciar memoria.
Cuando se crea un programa en el que es necesario manejar memoria
dinmica el sistema operativo divide el programa en cuatro partes que son:
texto, datos (estticos), pila y una zona libre o heap. En el momento de la
ejecucin habr tanto partes libres como partes asignadas al proceso por lo
cual si no se liberan las partes utilizadas de la memoria y que han quedado
inservibles, es posible que se agote esta parte y por lo tanto la fuente de la
memoria dinmica. Tambin la pila cambia su tamao dinmicamente, pero
esto no depende del programador sino del sistema operativo.

Memoria

Ventajas

Desventajas

Mayor densidad y capacidad.


Menor costo por bit.

La velocidad de acceso es
bajar.

Menor consumo de potencia.


DRAM
(DINAMICA)

Necesita
recargar
de
la
informacin. almacenada para
Se puede ir incrementando durante la
retenerla.
ejecucin del programa.
Es difcil de manejar.
Su tamao puede variar durante la
ejecucin del programa y puede ser
Puede afectar el rendimiento de
liberado.
la computador.

También podría gustarte