abstracciones de datos

26
IFE 115: INFORMÁTICA BÁSICA 0319199200025 Ariel Amilcar Medina PTEG-I-12-Ariel Amilcar Medina-VISITA 2-EXPO Abstracciones de datos Lic. Marcio Rodas Abstracciones de datos Capit ulo 8

Upload: ariel-medina

Post on 13-Feb-2017

29 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Abstracciones de datos

IFE 115: INFORMÁTICA BÁSICA

0319199200025 Ariel Amilcar Medina

PTEG-I-12-Ariel Amilcar Medina-VISITA 2-EXPO Abstracciones de datos

Lic. Marcio Rodas

Abstracciones de datos

Capitulo8

Page 2: Abstracciones de datos

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 estudio8.5 Tipos de datos personalizados8.6 Clases y objetos8.7 Punteros en el lenguaje maquina.

ContenidoCapitulo

8

Page 3: Abstracciones de datos

IntroducciónEn 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.

Capitulo8

Page 4: Abstracciones de datos

8.1 Estructura de datos básicas1.- ArraysEs 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.

Capitulo8

Page 5: Abstracciones de datos

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.

Capitulo8

Page 6: Abstracciones de datos

-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).

Capitulo8

2.- Listas, pilas y colas

Page 7: Abstracciones de datos

Capitulo8

• -Una cola es una lista en la que las entradas se extraen únicamente por el principio y se insertan únicamente por el final.

2.- Listas, pilas y colas

Page 8: Abstracciones de datos

Capitulo8

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.

3.- Árboles

Page 9: Abstracciones de datos

Capitulo88.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.

Page 10: Abstracciones de datos

Capitulo8Estructuras 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.

Page 11: Abstracciones de datos

Capitulo8Punteros

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.

Page 12: Abstracciones de datos

Capitulo88.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.

Page 13: Abstracciones de datos

Capitulo8Almacenamiento de arrays

- Matrices

Page 14: Abstracciones de datos

Estructuras

Capitulo8

Page 15: Abstracciones de datos

Almacenamiento de listas

Capitulo8

Page 16: Abstracciones de datos

Almacenamiento de pilas y colas.

Capitulo8

Page 17: Abstracciones de datos

Almacenamiento de arboles binarios.

Capitulo8

Page 18: Abstracciones de datos

Capitulo8Almacenamiento de arboles binarios.

Page 19: Abstracciones de datos

Manipulación de estructuras de datos.

Capitulo8

Page 20: Abstracciones de datos

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.

Capitulo8

Page 21: Abstracciones de datos

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

Capitulo8

Page 22: Abstracciones de datos

Capitulo8

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.

Page 23: Abstracciones de datos

Capitulo8

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.

Page 24: Abstracciones de datos

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:

Capitulo8

Page 25: Abstracciones de datos

Tipos abstractos de datosAunque 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:1) 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)2) 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.

Capitulo8

Page 26: Abstracciones de datos

Bibliografía• Introducción a la Computación 11. edición J. Glenn Brookshear.

Capitulo8