La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Abstracciones de datos

Presentaciones similares


Presentación del tema: "Abstracciones de datos"— Transcripción de la presentación:

1 Abstracciones de datos
IFE 115: INFORMÁTICA BÁSICA Lic. Marcio Rodas Abstracciones de datos Capitulo 8

2 Contenido Capitulo 8 8.1 Estructuras de datos básicas.
8.2 Conceptos relacionados. 8.3 Implementación de estructuras de datos. 8.4 Un pequeño caso de estudio 8.5 Tipos de datos personalizados 8.6 Clases y objetos 8.7 Punteros en el lenguaje maquina.

3 Introducción Capitulo 8
En este capitulo vamos a explorar técnicas para la construcción y manipulación de estructuras de datos distintas de las primitivas de un lenguaje, un análisis que nos llevara desde las estructuras de datos tradicionales hasta el paradigma orientado a objetos. Un tema subyacente a lo largo de toda esta progresión es la de construcción de herramientas abstractas.

4 8.1 Estructura de datos básicas
Capitulo 8 8.1 Estructura de datos básicas 1.- Arrays Es un bloque de datos “rectangular” cuyas entradas son todas del mismo tipo. En particular, un array bidimensional esta compuesto por filas y columnas en las que las distintas posiciones se identifican mediante una pareja de índices, el primer índice identifica la fila asociada con la posición, mientras que el segundo índice identifica la columna. A diferencia de un array, recuerde que un tipo agregado o estructura es un conjunto de datos que pueden ser de diferentes tipos. Los elementos del conjunto suele denominar componentes o campos.

5 Capitulo 8 2.- Listas, pilas y colas
-La lista es un conjunto cuyas entradas están ordenadas de manera secuencial. El inicio de una lista se denomina principio de lista, el otro extremo final.

6 Capitulo 8 2.- Listas, pilas y colas
-Una pila es una lista en la que las entradas se insertan y se eliminan únicamente al principio de la lista. Terminología coloquial el principio se denomina cima, el final fondo o base. Cuando se inserta una nueva entrada se dice que se apila (pushing), si se elimina se desapila (popping). La ultima entrada colocada en la pila, será siempre la primera en ser extraída, se le conoce como estructura LIFO (Last-IN, First-Out; ultimo en entrar, primero en salir). Suelen utilizarse pilas para implementar mecanismos para deshacer actividades, se conocen como vuelta atrás (backtracking).

7 Capitulo 8 2.- Listas, pilas y colas
-Una cola es una lista en la que las entradas se extraen únicamente por el principio y se insertan únicamente por el final.

8 Capitulo 8 3.- Árboles Un árbol es un conjunto cuyas entradas tienen una organización jerárquica similar a la del organigrama de cualquier empresa. Cada posición de un árbol se denomina nodo. El nodo situado en la parte superior es el nodo raíz. Los nodos situados en el otro extremo se denominan nodos terminales (en ocasiones nodos hoja). Se le denomina profundidad del árbol al numero de nodos existente en la ruta mas larga desde la raíz a una de las hojas. Llamaremos hijos a sus descendientes inmediatos y padre a su antecesor. Nodos con un mismo padre diremos que son hermanos. Un árbol en el que cada padre no tenga mas de dos se denomina árbol binario. Los nodos situados por debajo de el tiene también estructura de un árbol las llamaremos subárbol. Cada subárbol se dice que es una rama del padre.

9 8.2 Conceptos relacionados
Capitulo 8 8.2 Conceptos relacionados Otra vez la abstracción. La memoria principal de una computadora no esta organizada como arrays, lista, pilas colas y arboles, sino como una secuencia de celdas de memoria direccionales. Por tanto, todos los demás tipos de estructuras deberán se simulados. Matrices, listas, pilas, colas y arboles son organizaciones abstractas de los datos que se crean para ocultar a ojos de los usuarios los datos los detalles del almacenamiento real de esos datos y para que estos usuarios puedan acceder a la información como si esta estuviera almacenada de una forma mas conveniente.

10 Estructuras de estáticas y dinámicas.
Capitulo 8 Estructuras de estáticas y dinámicas. Una diferencia importante a la hora de construir estructuras de abstractas es si la estructura que se esta simulando es estática o dinámica; es decir, si la forma o el tamaño de la estructura varia a lo largo del tiempo. Como regla general, las estructuras de datos estáticas se manipulan mas fácilmente que las dinámicas. Si una estructura es estática, simplemente necesitamos proporcionar un medio para acceder a los distintos elementos de datos de la estructura, y quizá también un medio de modificar los valores almacenados en ciertas ubicaciones.

11 Capitulo 8 Punteros Un puntero es un área de almacenamiento que contiene una de esas direcciones codificadas. En el caso de las estructuras de datos, se utilizan punteros para anotar la ubicación en la que están almacenados los campos de datos. Al contador de programa se le denomina también en ocasiones puntero de instrucciones.

12 8.3 Implementación de estructuras de datos.
Capitulo 8 8.3 Implementación de estructuras de datos. Maneras en las que pueden almacenarse en la memoria principal de una computadora una estructura de datos de las que hemos hablado en la sección anterior. *Almacenamiento de arrays: -Matrices -Estructuras *Almacenamiento de lista. *Almacenamiento de pilas y colas. *Almacenamiento de arboles binarios. *Manipulación de Estructuras de datos.

13 Almacenamiento de arrays - Matrices
Capitulo 8 Almacenamiento de arrays - Matrices

14 Capitulo 8 Estructuras

15 Almacenamiento de listas
Capitulo 8 Almacenamiento de listas

16 Almacenamiento de pilas y colas.
Capitulo 8 Almacenamiento de pilas y colas.

17 Almacenamiento de arboles binarios.
Capitulo 8 Almacenamiento de arboles binarios.

18 Almacenamiento de arboles binarios.
Capitulo 8 Almacenamiento de arboles binarios.

19 Manipulación de estructuras de datos.
Capitulo 8 Manipulación de estructuras de datos.

20 8.4 Un pequeño caso de estudio.
Capitulo 8 8.4 Un pequeño caso de estudio. Vamos a considerar la tarea de almacenar una lista de nombres en orden alfabético. Vamos a asumir que las operaciones que hay que realizar con esta lista son las siguientes: -Buscar si existe una cierta entrada. -Imprimir la lista en orden alfabético e -Insertar una nueva entrada. Para efectuar búsquedas en la lista teniéndola almacenada de esta manera comparamos el valor buscado con el nodo raíz. Si los dos son iguales, la búsqueda habrá tenido éxito. Si son distintitos, nos moveremos al hijo izquierdo o al hijo derecho de la raíz dependiendo de si el valor buscado es menor o mayor que la raíz, respectivamente.

21 Capitulo 8 La Figura 8.21 muestra como podría expresarse este proceso de búsqueda en el caso de una estructura de árbol enlazado.

22 Capitulo 8 Este esbozo incluye las tareas de imprimir el subárbol izquierdo y el subárbol derecho en orden alfabético, siendo ambas tareas básicamente versiones reducidas de la tarea origina.

23 Capitulo 8 Podemos concluir que un paquete software compuesto por una estructura de árbol binario enlazado y por nuestros procedimientos para buscar, imprimir e insertar proporciona un paquete completo que una hipotética aplicación podría utilizar como herramienta abstracta.

24 8.5 Tipos de datos personalizados.
Capitulo 8 8.5 Tipos de datos personalizados. Vamos a ver de que manera pueden los programadores definir sus propios tipos de datos, para ajustarse, mejor a las necesidades de una aplicación concreta. Tipo de datos definidos por el usuario. Expresar un algoritmo suele ser mas fácil si hay disponibles tipos de datos distintos que los proporcionados como primitivos en los lenguajes de programación. Por esta razón, muchos lenguajes de programación modernos permiten a los programadores definir tipos adicionales, utilizando los tipos primitivos como componentes básicos. Para implementa esta idea, podríamos utilizar una instrucción de pseudo-código de la forma:

25 Tipos abstractos de datos
Capitulo 8 Tipos abstractos de datos Aunque el concepto de tipo de datos definido por el usuario es muy útil, no termina de resolver completamente la necesidad de creación de nuevos tipos de datos. Un tipo de datos completo esta compuesto por dos partes: Un sistema de almacenamiento predeterminado (como un sistema en complemento a dos en el caso del tipo entero y un sistema de punto flotante en el caso del tipo real) Una colección de operaciones predefinidas (como la suma y la resta) Si un programador declara una variable como de tipo primitivo, puede comenzar a aplicar de inmediato operaciones primitivas a esa variable, sin necesidad de efectuar definiciones adicionales. Los tipos de datos definidos por el usuario que incluyen también definiciones de operaciones se denominan tipos abstractos de datos.

26 Bibliografía Capitulo 8
Introducción a la Computación 11. edición J. Glenn Brookshear.


Descargar ppt "Abstracciones de datos"

Presentaciones similares


Anuncios Google