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
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.
Capitulo
8
Introducción
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.
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.
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.
Capitulo
8
-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).
Capitulo
8
2.- Listas, pilas y colas
Capitulo
8
• -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
Capitulo
8
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
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.
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.
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.
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.
Capitulo
8Almacenamiento de arrays
- Matrices
Estructuras
Capitulo
8
Almacenamiento de listas
Capitulo
8
Almacenamiento de pilas y colas.
Capitulo
8
Almacenamiento de arboles binarios.
Capitulo
8
Capitulo
8Almacenamiento de arboles binarios.
Manipulación de estructuras de datos.
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.
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.
Capitulo
8
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.
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.
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:
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:
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.
Capitulo
8
Bibliografía
• Introducción a la Computación 11. edición J. Glenn Brookshear.
Capitulo
8

Abstracciones de datos

  • 1.
    IFE 115: INFORMÁTICABÁSICA 0319199200025 Ariel Amilcar Medina PTEG-I-12-Ariel Amilcar Medina-VISITA 2-EXPO Abstracciones de datos Lic. Marcio Rodas Capitulo 8
  • 2.
    8.1 Estructuras dedatos 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. Capitulo 8
  • 3.
    Introducción En este capitulovamos 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. Capitulo 8
  • 4.
    8.1 Estructura dedatos 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. Capitulo 8
  • 5.
    2.- Listas, pilasy 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. Capitulo 8
  • 6.
    -Una pila esuna 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). Capitulo 8 2.- Listas, pilas y colas
  • 7.
    Capitulo 8 • -Una colaes 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
  • 8.
    Capitulo 8 Un árbol esun 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
  • 9.
    Capitulo 8 8.2 Conceptos relacionados Otravez 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.
    Capitulo 8 Estructuras de estáticasy 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 esun á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.
    Capitulo 8 8.3 Implementación deestructuras 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.
  • 14.
  • 15.
  • 16.
    Almacenamiento de pilasy colas. Capitulo 8
  • 17.
    Almacenamiento de arbolesbinarios. Capitulo 8
  • 18.
  • 19.
    Manipulación de estructurasde datos. Capitulo 8
  • 20.
    8.4 Un pequeñocaso 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. Capitulo 8
  • 21.
    La Figura 8.21muestra como podría expresarse este proceso de búsqueda en el caso de una estructura de árbol enlazado. Capitulo 8
  • 22.
    Capitulo 8 Este esbozo incluyelas 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 queun 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 dedatos 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: Capitulo 8
  • 25.
    Tipos abstractos dedatos 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: 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. Capitulo 8
  • 26.
    Bibliografía • Introducción ala Computación 11. edición J. Glenn Brookshear. Capitulo 8