Escolar Documentos
Profissional Documentos
Cultura Documentos
Conceptos Bsicos..
Introduccin
El estudio de las Estructuras de Datos es sumamente importante, debido a la necesidad de manipular la informacin de manera adecuada y oportuna. El objetivo principal es el de procurar que los algoritmos aplicados funcionen en un adecuado tiempo de ejecucin.
Introduccin
Es por ello de la importancia de aprender acerca de las Estructuras de Datos, y de cmo manipular la informacin a travs de ordenamientos, bsquedas, organizacin, mtodos de acceso, etc. estudio de las Estructuras de Datos se har desde algunos puntos de vista, analizndolos primero desde el punto de vista terico pero sin perder de vista sus aplicaciones prcticas.
Estructura de Datos
Forma de organizar un conjunto de datos elementales con el objeto de facilitar su manipulacin. En el entendido que un dato es la mnima informacin que se tienen en un sistema. Las operaciones son:
Crear un nuevo valor a la estructura Borrar un nuevo valor de la estructura Bsqueda encontrar un valor determinado en la estructura (siempre que los datos estn ordenados)
Estructura de datos
Otras Operaciones:
Ordenamiento: de los elementos pertenecientes a la estructura. Apareo: dadas dos estructuras originar una nueva ordenada, que contenga las apareadas.
Abstraccin
La abstraccin permite que dispongamos las caractersticas de un objeto que necesitemos. Expresa las caractersticas bsicas de un objeto, las cuales distinguen al objeto de los dems. Por lo tanto se puede decir que la encapsulacin separa las caractersticas esenciales de las que no lo son dentro de un objeto. Y mientras se tengan ms caractersticas de las necesarias estas resultarn difciles de usar, modificar y construir.
Abstraccin
Si necesitamos el objeto Persona , para un sistema administrativo, podramos incluir: nombre, edad, direccin, estado civil, etc. Si lo necesitamos para el rea de biologa, sus atributos seran: Tipo de sangre, ADN, ARN, etc.
Diseo descendente
Cuando se escriben programas de tamao y complejidad moderada, nos enfrentamos a la dificultad de escribir dichos programas. La solucin para resolver estos problemas y, naturalmente, aquellos de mayor tamao y complejidad, es recurrir a la modularidad mediante el diseo descendente.
Diseo descendente
La filosofa del diseo descendente reside en que se descompone una tarea en sucesivos niveles de detalle. Para ello se divide el programa en mdulos independientes procedimientos, funciones y otros bloques de cdigo.
Diseo descendente
Abstraccin procedimental
Una abstraccin procedimental separa el propsito de
un subprograma de su implementacin. Una vez que un subprograma se haya escrito o codificado, se puede usar sin necesidad de conocer su cuerpo y basta con su nombre y una descripcin de sus parmetros.
Abstraccin procedimental
implica romper una solucin en mdulos; la abstraccin procedimental implica la especificacin de cada mdulo antes de su implementacin en cualquier lenguaje de programacin. El mdulo implica que se puede cambiar su algoritmo concreto sin afectar el resto de la solucin.
El Rol de la abstraccin
Los programadores han tenido que luchar con el problema de la complejidad durante mucho tiempo desde el nacimiento de la informtica. Para comprender lo mejor posible la importancia de las tcnicas orientadas a objetos, revisemos cules han sido los diferentes mecanismos utilizados por los programadores para controlar la complejidad
El Rol de la abstraccin
la abstraccin es la capacidad para encapsular y aislar la informacin, del diseo y ejecucin. En otro sentido, las tcnicas orientadas a objetos se ven como resultado de una larga progresin histrica que comienza en los procedimientos y sigue en los mdulos, tipos abstractos de datos y objetos.
Procedimientos (Procedure)
Los procedimientos y funciones fueron uno de los primeros mecanismos de abstraccin que se utilizaron ampliamente en lenguajes de programacin. Los procedimientos permitan tareas que se ejecutaban rpidamente, o eran ejecutados slo con ligeras variaciones, que se reunan en una entidad y se reutilizaban, en lugar de duplicar el cdigo varias veces
Procedimientos (Procedure)
Un programador poda escribir un procedimiento o conjunto de procedimientos, que se utilizaban por otros programadores. Estos otros programadores no necesitaban conocer con exactitud los detalles de la implementacin, slo necesitaban el interfaz necesario.
Mdulos
Un mdulo es una tcnica que proporciona la posibilidad de dividir sus datos y procedimientos en una parte privada slo accesible dentro del mdulo y parte pblica, accesible fuera del mdulo . Los tipos, datos (variables) y procedimientos se pueden definir en cualquier parte. Los mdulos proporcionan un mtodo efectivo de ocultacin de la informacin, pero no permiten realizar instanciacin, que es la capacidad de hacer mltiples copias de las zonas de datos.
Objetos
Un objeto es sencillamente un tipo abstracto de datos al que se aaden importantes innovaciones en comparticin de cdigo y reutilizacin. Los mecanismos bsicos de orientacin a objetos son: objetos, mensajes y mtodos, clases e instancias y herencia. Una idea fundamental es la comunicacin de los objetos a travs de paso de mensajes. Adems de esta idea, se aaden los mecanismos de herencia y polimorfismo.
Objetos
La herencia permite diferentes tipos de datos para compartir el mismo cdigo, permitiendo una reduccin en el tamao del cdigo y un incremento en la funcionalidad. El polimorfismo permite que un mismo mensaje pueda actuar sobre objetos diferentes y comportarse de modo distinto. La persistencia se refiere a la permanencia de un objeto, esto es, la cantidad de tiempo para el cual se asigna espacio y permanece accesible en la memoria del computador.
Objetos
Encapsulacin o encapsulamiento es la propiedad que permite asegurar que el contenido de la informacin de un objeto est oculta al mundo exterior: el objeto A no conoce lo que hace el objeto B, y viceversa. La encapsulacin (tambin se conoce como ocultacin de la informacin), en esencia, es el proceso de ocultar todos los secretos de un objeto que no contribuyen a sus caractersticas esenciales
Objetos
Modularidad es la propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadas mdulos), cada una las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes. Jerarqua La jerarqua es una propiedad que permite una ordenacin de las abstracciones. Las dos jerarquas ms importantes de un sistema complejo son: estructura de clases [jerarqua es-un (is-a):
generalizacin/especializacin] y estructura [jerarqua parte- de (part-of): agregacin]. de objetos
Punteros
Un puntero o apuntador es una variable que da referencia a una regin de memoria; en otras palabras es una variable cuyo valor es una direccin de memoria. Si se tiene una variable ' p ' de tipo puntero que contiene una direccin de memoria en la que se encuentra almacenado un valor ' v ' se dice que ' p ' apunta a ' v '. El programador utilizar punteros para guardar datos en memoria en muchas ocasiones.
Punteros
Punteros:
Los punteros son de amplia utilizacin en programacin y muchos lenguajes permiten la manipulacin directa o indirecta de los mismos. La principal razn de ser de los punteros es la de manejar datos alojados en la zona de memoria dinmica o heap (aunque tambin se pueden manipular objetos en la zona esttica),
Punteros:
bien sean datos elementales, estructuras (struct en C) u objetos pertenecientes a una clase (en lenguajes Orientados a Objetos). Gracias a esta propiedad, los punteros permiten modelar un grafo, en donde los elementos de ste son los datos residentes en memoria y las relaciones entre los elementos son los propios apuntadores.
Listas enlazadas
Es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias, enlaces o punteros al nodo anterior o posterior.
Listas enlazadas
El principal beneficio de las listas enlazadas respecto a los vectores convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.
Pilas
Una pila (stack en ingls) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del ingls Last In First Out, ltimo en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el rea de informtica debido a su simplicidad y ordenacin implcita de la propia estructura.
Pilas
Para el manejo de los datos se cuenta con dos operaciones bsicas: apilar (push), que coloca un objeto en la pila, y su operacin inversa, retirar (o desapilar, pop), que retira el ltimo elemento apilado. En cada momento slo se tiene acceso a la parte superior de la pila, es decir, al ltimo objeto apilado (denominado TOS, Top of Stack en ingls).
Pilas
La operacin retirar permite la obtencin de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS.
Pilas
Operaciones Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las implementaciones modernas de las pilas se suelen aadir ms de uso habitual. Crear: se crea la pila vaca. (constructor) Tamao: regresa el numero de elementos de la pila. (size) Apilar: se aade un elemento a la pila.(push) Desapilar: se elimina el elemento frontal de la pila.(pop) Cima: devuelve el elemento que esta en la cima de la pila. (top o peek) Vaca: devuelve cierto si la pila est vaca o falso en caso contrario (empty).
Colas
Una cola (tambin llamada fila) es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operacin de insercin push se realiza por un extremo y la operacin de extraccin pop por el otro. Tambin se le llama estructura FIFO (del ingls First In First Out), debido a que el primer elemento en entrar ser tambin el primero en salir.
Colas
Las colas se utilizan en sistemas informticos, transportes y operaciones de investigacin (entre otros), dnde los objetos, personas o eventos son tomados como datos que se almacenan y se guardan mediante colas para su posterior procesamiento. Este tipo de estructura de datos abstracta se implementa en lenguajes orientados a objetos mediante clases, en forma de listas enlazadas.
Colas
Operaciones Bsicas: Crear: se crea la cola vaca. Encolar (aadir, entrar, insertar): se aade un elemento a la cola. Se aade al final de esta. Desencolar (sacar, salir, eliminar): se elimina el elemento frontal de la cola, es decir, el primer elemento que entr. Frente (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primer elemento que entr.
Colas
Colas