Você está na página 1de 45

Estructura de Datos..

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.

Resolucin de Problemas de Programacin.


El trmino resolucin del problema se refiere al proceso completo de tomar la descripcin del problema y desarrollar un programa de computadora que resuelva ese problema. Este proceso requiere pasar a travs de muchas fases: desde una buena comprensin del problema a resolver, hasta el diseo de una solucin conceptual, para implementar la solucin con un programa de computadora.

Resolucin de Problemas de Programacin.


Realmente qu es una solucin? Normalmente, una solucin consta de dos componentes: algoritmos y medios para almacenar datos. Un algoritmo es una especificacin concisa de un mtodo para resolver un problema. Una accin que un algoritmo realiza con frecuencia es operar sobre una coleccin de datos.

Herramientas para la resolucin de problemas


Diferentes herramientas ayudan al programador y al ingeniero de software a disear una solucin para un problema dado. Algunas de estas herramientas son: diseo descendente, abstraccin procedimental, abstraccin de datos, ocultacin de la informacin, recursin o recursividad y programacin orientada a objetos.

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.

Programacin orientada a objetos


Los conceptos de modularidad, abstraccin procedimental, abstraccin de datos y ocultacin de la informacin conducen a la programacin orientada a objetos, basada en el mdulo o tipo de dato objeto. Las prioridades fundamentales de un tipo son: encapsulamientos, herencia y polimorfismo. El encapsulamiento es la combinacin de datos y operaciones que se pueden ejecutar sobre esos datos en un objeto

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.

Tipos de datos abstractos (TAD)


Un tipo de dato abstracto (TDA) o Tipo abstracto de datos (TAD) es un modelo matemtico compuesto por una coleccin de operaciones definidas sobre un conjunto de datos para el modelo. 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.

Tipos de datos abstractos (TAD)


Cuando yo digo 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,

Tipos de datos abstractos (TAD)


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. perro es un Tipo de Dato Abstracto y todo el proceso de definirlo, implementarlo y mencionarlo es a lo que llamamos Abstraccin de Datos.

Tipos de datos abstractos (TAD)


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.

Tipos de datos abstractos (TAD)


Por ello, el programador puede crear una funcin 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.

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

Você também pode gostar