Está en la página 1de 16

Estructura de Datos (Recopilacin). Prologo.

Antes de pasar a lo que concierne directamente con la materia correspondiente, he de hacer externa la idea de que esto puede no ser un documento absoluto o que vaya a darse en los exmenes de la materia, pero la intencin nicamente es que sirva como apoyo para todo aquel que lo crea conveniente, y pues si hay algo que complementar que mejor, ya que universificaramos una idea slida acerca de la materia y los temas que trata. Desarrollo. Bueno, la intencin del documento est sentada en las bases desde desenvolver conceptos que se pueden considerar innecesarios pero que a su vez, son trascendentales si se comprende en funcin del contexto que se trata En este caso el de la materia de Estructura de Datos. Estructura de Datos! En Programacin, una Estructura de Datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulacin. Un Dato Elemental es la mnima informacin que se tiene en un sistema. Una Estructura de Datos define la organizacin e interrelacin de stos y un conjunto de operaciones que se pueden realizar sobre ellos. Las operaciones bsicas: Alta. Adicionar un nuevo valor a la estructura. Baja. Borrar un valor de la Estructura. Bsqueda. Encontrar un determinado valor en la Estructura para realizar una operacin con este valor, en forma secuencial o binaria (siempre y cuando estos estn ordenados).

Otras Operaciones: Ordenamiento de los elementos pertenecientes a la estructura. Apareo dadas dos Estructuras originar una nueva ordenada y que contenga pues a las apareadas.

Cada Estructura ofrece ventajas y desventajas en relacin a la simplicidad y eficiencia para la realizacin dcada operacin. De esta forma, la eleccin de la estructura de datos apropiada para cada problema depende de factores, como la frecuencia y el orden en que se realizar operacin sobre los datos. Ahora entramos ms a detalle en materia con conceptos que van incluidos en la unidad, brinco la historia pues no por tener calidad de irrelevante se hace, sino que pues si ya se desea indagar un poco ms al respecto se puede y es totalmente vlido, si alguien desea las fichas histricas con gusto las proporciono. Tipo de Dato Abstracto. Un TDA (Tipo de Dato Abstracto DAT (Data Abstract Type) es un modelo matemtico compuesto por una coleccin de operaciones definidas sobre un conjunto de datos para el ncleo. Para comprender un poco ms a fondo esta onda, un concepto que ayudar mucho en la abstraccin Qu es un dato? Bueno, un Dato es la representacin simblica (Numrica, alfabtica, algortmica, etc), un atributo o caracterstica de una entidad. Los Datos son hechos que describen sucesos y entidades. No tienen ninguna informacin en s. Puede significar un nmero, letra o cualquier smbolo que representa una palabra entidad, medida o descripcin.

El Dato NO tiene valor semntico (sentido) en s mismo, pero si recibe un tratamiento (procesamiento) apropiado, se puede utilizar en la realizacin de clculos o toma de decisiones. Es de empleo comn en el mbito informtico y, en general, prcticamente en cualquier disciplina cientfica. En Programacin, un Dato es la expresin general que describe las caractersticas de las entidades sobre las cuales opera un algoritmo. En Estructura de Datos, es la mnima parte de Informacin. Con frecuencia se utilizan los conceptos de TDA y abstraccin como uno solo y pues no se culpa, ya que uno deriva de otro o viceversa Para ello se definen. La Abstraccin consiste en ocultar las caractersticas de un objeto y obviarlas de tal manera que solamente se utilice el nombre del objeto en el programa. Un usuario es como aquel que maneja un carro, solo sabe qu onda para manejarlo pero no sabe los detalles de fabricacin. Al hecho de guardar todas las caractersticas de un objeto por separado se le llama Encapsulamiento y es tambin un concepto importante para entender la Estructura de Datos. Es frecuente que el Encapsulamiento sea usado como Ocultacin de Informacin. A partir de este punto se tratar de hacer altamente comprensible la unidad dejando de lado conceptos muy estructurados, pero sin dejar de lado lo esencial. Retomando el tema correspondiente Cuando se usa un programa de computacin, un TDA es representado por su interfaz, la cual sirve como cubierta a la correspondiente implementacin. La idea es que los usuarios slo se preocupen por lo que ven y no por cmo se hizo eso, debido a que puede cambiar con el tiempo y, si no existiera encapsulacin, afectar a los programas que usan el Dato. Esto se basa en el concepto de

Ocultacin de Informacin, una proteccin para el programa de decisiones de diseo que son objeto de cambio. La solidez de un TDA reposa en que el usuario no sabe cmo se hizo. De aqu la lectura correspondiente pasa a una comparacin con Listas tema que sigue despus, pero para no hacer mucho ruido en mente, mejor hasta ah en comparaciones un tanto retricas. Vale, nociones bsicas sobre stos conceptos. Una Lista es un TDA con operaciones bien definidas (Agregar elemento, agregar al final, al inicio, recuperar, etc) mientras que una lista Enlazada es una Estructura de Datos Basada en punteros o referencias (Dependiendo del Lenguaje) que puede ser usada para crear una representacin de una Lista. Lista Enlazada es comnmente usada para representar una TDA-Lista, y a veces hasta confundida. Por ejemplo una Linked List (JAVA), ofrece mtodos que no corresponden a una Lista Enlazada Pura, sino a un fuerte TDA. Algo similar ocurre con un TDA rbol Binario de Bsqueda se representa como: rbol Binario, AVL, rbol Rojo-Negro, Arreglo, etc A pesar de la implementacin un rbol Binario siempre tiene las mismas operaciones (Insertar, eliminar, etc.). Separar la interfaz de la implementacin no significa que el usuario ignore totalmente la implementacin de la rutina, pero lo suficiente como para no depender de ningn aspecto de implementacin. Caractersticas principales de un TDA. Conjunto de operaciones (Funciones) al cual se denomina usualmente como Interfaz Pblica, y representa el comportamiento del TDA. La implementacin est siempre oculta. Todo Lenguaje de Alto Nivel tiene TDAs predefinidos. Punto interesante que los Lenguajes de la actualidad nos permitirn ampliar los TDA predefinidos con otros que sern definidos por el propio

programador para adecuar as los Tipos de Datos a las necesidades del programa. NOS INTERESARN AQUELLOS QUE REFLEJEN CIERTO COMPORTAMIENTO ORGANIZANDO CIERTA VARIEDAD DE DATOS ESTRCUTURADAMENTE. Aquellos con informaciones simples pero dependientes de un comportamiento: Polilticas. Aquellos simples, como los predefinidos donde la informacin no es relacionada mediante ninguna estructura y no admiten ms que un valor en cada momento: Monolticas. (Al menos en lo particular me pregunt por el significado de las palabras que estn luego de los puntos suspensivos Monoltico es algo rgido que no se puede mover. Mientras Poliltico es lo contrario, algo flexible que se puede modificar. Nota: Cuando hablemos de un TDA no haremos alusin al tipo de

elementos, sino tan solo a la forma en que estn dispuestos estos mismos. Slo nos interesa la Estructura que soporta la informacin y sus operaciones. Para determinar el comportamiento Estructural basta con observar la conducta que seguirn estos datos.
Caractersticas (Resumen). 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 constituido tanto por la mquina algortmica que implemente la semntica de las operaciones como por los datos que sirvan de enlace entre elementos del TDA, es decir, informacin interna necesaria para la implementacin que se est haciendo para este comportamiento del TDA. Podremos decir, que tanto la implementacin de las operaciones como los elementos internos del TDA sern probados al acceso externo, y ocultos a cualquier otro nivel. {Un TDA representa Una Abstraccin}

TDA La Abstraccin. Habra que partir de dos cosas principales. 1) Se destacan detalles (pocos) de la especificacin (Qu?). 2) Se ocultan detalles (Bastantes) de la informacin (Cmo?). La abstraccin es la herramienta ms poderosa de cualquier programador. Mecanismo fundamental para la solucin de problemas y fenmenos que contienen muchos detalles, su idea principal consiste en manejar un problema, fenmeno, objeto, tema o idea como un concepto general, sin considerar la gran variedad de detalles que estos pueden tener. Dos aspectos: 1) Aspectos Relevantes. 2) Ignorar los irrelevantes del nivel de abstraccin. La irrelevancia depende del nivel de abstraccin ya que si se pasa a niveles concretos, puede se conviertan el relevantes.

Permite establecer un nivel jerrquico en el estudio de los fenmenos, se establece por niveles sucesivos de detalles. General------.------ Concreto Abstraccin. Nos brinda la posibilidad de ir definiendo una serie de refinamientos sucesivos a nuestro TDA y apta que cuando decimos refinamientos sucesivos nos estamos refiriendo a la estrategia que se utiliza para descomponer problemas en subproblemas. Conforme
evoluciona el diseo de software a cada nivel de mdulos se representa un refinamiento en el nivel de abstraccin -> Incluyen detalles obviados en un nivel superior, en un ms bajo de jerarqua.

Hay dos tipos: Funcional: Crea procedimientos y funciones, los invoca mediante un nombre donde se destaca que hace la funcin. Abstracto: a) Tipo de Datos: Proporcionados por el lenguaje de alto nivel. Representacin usada invisible al programar, la cual slo se le permite ver las operaciones predefinidas para cada tipo. b) TDA: Para la definicin y representacin del tipo de datos (valores & Ops.), junto con propiedades. c) Objetos: TDAs a los que se les aade propiedades de reutilizacin y comparacin de cdigo. d) Tipos Definidos: Por programador que posibilitan la definicin de valores ms cercanos a un problema que se pretende resolver. Si se profundiza a la programacin, existen dos cosas que confunden en ocasiones: Tipo de Dato. En un lenguaje de programacin, define un conjunto de valores que en una determinada variable puede tomar, as como las operaciones bsicas sobre este conjunto. Constituyen un primer nivel de abstraccin, ya que es el mismo mareo de que no se tiene en cuenta el cmo, o que representan realmente la informacin sobre la memoria de la mquina. [Usuario]--> {Proceso de Implementacin o representacin} = [Invisible]. Estructura de Datos. Colecciones de Variables, no necesariamente del mismo tipo, relacionadas entre s de alguna forma. Las E.D.s estn caracterizadas por el tipo de dato de

los elementos guardados en la estructura y por relacin definida sobre estos elementos. A este nivel, irrelevante las operaciones sobre un espacio particular, relevante las operaciones que envuelvan la estructura de forma global. Usos! Conjuntos: Implementacin de conjunto con sus operaciones bsicas. rboles Binarios de Bsqueda: Implementacin de rboles de elementos, utilizados para la representacin de datos complejos. Aunque siempre se los toma como un TDA, separado son parte de la familia de los grafos. Pilas & Colas: Luego, luego =p Grafos: Igual, despus

Modularidad/ Uso de TDA. Para comprender un poco ms all el tpico que hace uso del tema anterior pues, se parte de la definicin cruda de Modularidad. Capacidad que tiene un sistema de ser estudiado, visto o entendido como la

unin de varias partes que interrelacionan entre s y trabajan para alcanzar un objetivo comn, realizando cada una de ellas, una tarea necesaria para la
consecucin de dicho objetivo. Cada una de estas partes en que se encuentre dividido el sistema recibe el nombre de mdulo. Idealmente un mdulo cumple con la funcin de caja negra, independientemente del resto de los mdulos, comunicarse con ellos (todos o una parte) a travs de unas entradas y salidas bien definidas. En Programacin Orientada a Objetos, se denomina modularidad a la propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadas

mdulos), cada uno de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes.
Estos mdulos, que igual se pueden compilar por separado, pero que tienen conexiones con otros mdulos. Al igual que la encapsulacin, los lenguajes soportan la modularidad de diversas maneras. Si bien, no qued muy claro, no son ms que burbujas que nosotros como programadores creamos, en las burbujas metemos informacin y procesos que hacen unas cosas, en otras burbujas otras, de manera que si se quiere hacer una grande que haga algo mejor con todas estas pues las metemos y hacemos que se comuniquen, sencillos Como un auto, y as, usen su imaginacin El usarla es esencial en la abstraccin.

Manejo de Memoria Esttica (SRAM Static Random Access Memory). Antes de comenzar habra que definir lo que es una memoria de acceso aleatorio, o RAM como la conocemos, ya que en estos dos temas, esttica y dinmica, ambas parten de este significado, bueno, pues Una RAM (Random Access Memory Memoria de Acceso Aleatorio) es segn la recopilacin de Wikipedia, pues aquella desde donde el procesador recibe las instrucciones y guarda resultados. Hoy da en cuanto escuchamos Memorias RAM atribuimos a que es la memoria que no es la del Disco Duro y decimos que es la que le da velocidad al ordenador. Sencillo, pero fundamentndolo bien podremos tener una visin ms extensa y slida de lo que son estos cachivaches. Memoria RAM se utiliza frecuentemente para los mdulos de memoria que se usan en ordenadores y servidores. En sentidos estrictos, los mdulos de memoria pues tienen sus propios tipos de entre varios que son, ROM, Flash, Cach (SRAM), Registros en procesadores y otras unidades de procesamiento tambin poseen la cualidad de presentar retardos de acceso iguales para cualquier presentacin. Los mdulos RAM es la presentacin comercial de este tipo de memoria, compuesta de circuitos integrados, midiendo su capacidad en Kb, Mb, Gb, Tb Vale la idea principal que tiene que ver con que entre tal cual lo de la RAM es que la denominacin de Acceso Aleatorio surgi para diferenciarlas de las Memorias de Acceso Secuencial debido a que en los comienzos de la computacin, las memorias principales eran siempre de tipo RAM y las secundarias o masivas pues Secuenciales como las unidades de cinta o tarjetas perforadas. Es frecuente pues que se hable de memoria RAM para hacer referencia a la memoria principal de una computadora, pero actualmente la denominacin no es precisa.

Manejo de Memoria Esttica (SRAM). Tipo de memoria basada en semiconductores que a diferencia de la DRAM (Que es la Dinmica), es capaz de mantener los datos, mientras est alimentada por corriente elctrica, sin necesidad de un circuito de refresco. Memorias voltiles, pierden informacin cuando se apagan. Una de las ventajas de este tipo de memorias es que aceptan recibir todos los bits de direccin al mismo tiempo. Modos de Operacin. Se basa en 3 estados: 1) Stand By: Reposo o apagado. 2) Reading: Lectura. 3) Writing: Escritura, se actualizan los datos. Aplicaciones y usos. Bueno, de lo que la caracteriza es que es ms cara y ms rpida que la DRAM, as como menor consumo de recursos. Es usada por tanto cuando se desea disponer de menor tiempo de acceso, o consumo reducido, o ambos. Dada su estructura interna, es menos densa que la DRAM. Y pues no es utilizada cuando es necesaria una alta capacidad de datos. Aplicacin. a) b) c) d) Como memoria RAM o cach en microprocesadores. Cach primaria en Microprocesadores x86. Almacenar registros de microprocesadores. Circuitos integrados.

Tipos. a) No voltiles. Presentan el funcionamiento tpico de las RAM que conocemos normalmente, pero con la caracterstica de que los datos son preservados an con la alimentacin interrumpida. Se utilizan en situaciones donde se requiere conservar la informacin almacenada sin necesidad de alimentacin alguna, donde se desea evitar el uso de la batera o en su efecto, no usarla. b) Asncrona. Disponibles desde 2Kb a 32Mb. Con tiempo reducido de acceso, adecuadas para el uso de equipos de comunicacin, como switches, telfonos IP, routers, tarjetas DSLAM, electrnica de automocin. c) Por tipo de transistor. Desconozco el tema d) Por Funcin. Asncronas. Independientes de la frecuencia del reloj. Sncronas. Todas las operaciones son controladas por el reloj del sistema.

Manejo de Memoria Dinmica (DRAM Dynamic Random Access Memory). Tipo de Memoria Dinmica de Acceso aleatorio que se usa particularmente en los mdulos de Memoria RAM y otros dispositivos, como la memoria principal del sistema. Denominada Dinmica ya que para mantener almacenado un dato,

se requiere revisar el mismo y recargarlo, cada cierto perodo, a esto es lo que se le llama ciclo de refresco. Su principal ventaja es la posibilidad de construir
memorias con gran densidad de posiciones y que todava funcionen a velocidad alta. Memoria Voltil ya que al cortar la energa, se destruye toda la informacin dentro de la misma. La Memoria Dinmica se refiere a aquella memoria que no puede ser definida ya que no se conoce o no se tiene idea del nmero de la variable a considerarse, la solucin a este problema es la Memoria Dinmica que permite solicitar memoria en Tiempo de Ejecucin (Runtime, intervalo de tiempo en el que un programa se ejecuta en un SO. Inicia con la puesta en Memoria Principal (Memoria Principal o Primaria, igualmente

llamada memoria central, la cual es una unidad dividida en celdas que se identifican mediante una direccin. Conformada por bloques de circuitos integrados o chips capaces de almacenar, retener o memorizar informacin digital, valores binarios; a dichos bloques tiene acceso el Microprocesador) del programa, por lo que el SO
comienza a ejecutar sus instrucciones. El intervalo finaliza en el momento en que ste enva al SO la seal de terminacin, sea sta terminacin normal, en que el programa tuvo la posibilidad de concluir sus instrucciones satisfactoriamente, o una terminacin anormal, en el que el programa produjo algn error y el SO debi forzar finalizacin), por lo que cuanta ms memoria se necesite, ms se solicita al SO. El Sistema Operativo maneja la memoria gracias al uso de Punteros (Variable cuya referencia una regin de memoria, variable cuyo valor es una direccin de memoria, lo cual no manipula datos, slo maneja direcciones de memoria en la cual residen), por la misma naturaleza del proceso, nos impide conocer el tamao de la memoria necesaria en el momento de Compilar. Segn esto, tal como los datos se crean y se destruyen mientras se ejecuta el programa 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 si hubiramos tratado de definir la cantidad de memoria a utilizar en el momento de compilar el programa.

Cuando se crea un programa en el que es necesario manejar la memoria dinmica el SO divide el programa en cuatro partes que son: Texto. Datos (Estticos). Pila. Zona Libre.

En el ltimo redactado, es donde queda la memoria libre para poder utilizarla de forma dinmica. 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 SO.

Recursividad. Partamos de la definicin cruda: Forma en la cual se especifica un proceso basado en su propia definicin, siendo ms preciso: Un problema que sea definido en funcin de su trabajo, y que mediante este la divisin en instancias ms pequeas del inicial, y se conozca la solucin explcita a las instancias ms simples, lo que se les conoce como casos base, se puede aplicar una induccin sobre las llamadas pequeas y suponer que estn resueltas (Algo como muecas rusas). Ahora desde Sistemas: Forma de atajar y resolver problemas. De hecho una de las ideas centrales en Ciencias Computacionales es la recursin. Resolver un problema desde una recursin significa que la solucin depende de las soluciones de pequeas instancias del mismo problema.

El PODER de la recursin es, evidentemente, fundamentado en la posibilidad de definir un conjunto infinito de objetos con una declaracin infinita. Igualmente un nmero infinito de operaciones computacionales puede describirse con un programa recursivo finito, incluso en el caso de que este programa no contiene repeticiones infinitas.
La Mayora de los Lenguajes de Programacin da soporte a la recursin permitiendo a una funcin llamarse a s misma desde el texto del programa. Los Lenguajes Imperativos definen las Estructuras de Bucles-Ciclos-Loops como el while y for que son usadas para realizar tareas especficas. Algunos Lenguajes de Programacin Funcionales no definen Estructuras de Bucle, sino que posibilitan

la recursin llamando cdigo de manera repetitiva.


La Teora de la Computabilidad ha demostrado que estos tipos de lenguajes son matemticamente equivalentes, es decir que pueden resolver los mismos tipos de problemas, aunque los lenguajes funcionales carezcan de for y while.

Ejemplos (Con el Curso en Marcha se podrn ver). Fibonacci. Factoriales. Torres Hani. Mximo Comn Denominador. Bsqueda Binaria. Recursin Estructural (Listas y sus tipos). Recursin Frente Iteracin. Funciones de Recursin de Cola. Orden en Llamamiento de Funciones. Recursin Directa/Indirecta.

Resumen. Pues de esto an no finaliza la unidad chavos, si tuviesen alguna duda o conocer como se implementan procesos ms especficos me lo hacen saber, la segunda parte contiene de Listas a Pilas & Colas con sus algoritmos, para cerrar con un glosario de conceptos que pueden hacer rudo en nuestras mentes. Deseo sirva de apoyo y pues cualquier cosa no duden en mencionarla! O agregarla, en fin, como gusten. Buen da!!!

También podría gustarte