Date post: | 03-Jan-2016 |
Category: |
Documents |
Upload: | david-perez |
View: | 330 times |
Download: | 4 times |
Estructura de Datos Unidad 1. Estructuras de datos
1
Ingeniería en Desarrollo de software
Cuatrimestre 06
Asignatura:
Estructuras de Datos
Clave: 160920621/150920621
Estructura de Datos Unidad 1. Estructuras de datos
2
Índice
Presentación de la unidad ___________________________________________________ 3
Propósitos de la unidad _____________________________________________________ 3
Competencia específica ____________________________________________________ 3
Temario de la unidad _______________________________________________________ 3
Tema 1. Estructura de datos _________________________________________________ 4
Tema 1.1. Pilas ___________________________________________________________ 4
Tema 1.2. Listas __________________________________________________________ 7
Tema 1.3. Colas __________________________________________________________ 9
Cierre de la unidad _______________________________________________________ 12
Para saber más… ________________________________________________________ 12
Fuentes de consulta ______________________________________________________ 13
Estructura de Datos Unidad 1. Estructuras de datos
3
Presentación de la unidad
En esta primera unidad conocerás tres conceptos importantes acerca de estructuras de
datos que son: pilas, colas y listas.
Para cada uno de estos conceptos, conocerás, comprenderás y utilizarás adecuadamente
sus métodos fundamentales, así como sus métodos de soporte.
De esta manera, serás capaz de realizar ejercicios de programación donde apliques las
operaciones que se ejecutan sobre las estructuras mencionadas. Los ejercicios de
programación estarán relacionados con aplicaciones reales.
Propósitos de la unidad
Al finalizar la unidad serás capaz de emplear pilas, colas y listas, así como sus diferentes
operaciones en programas con aplicaciones reales haciendo uso de este tipo de estructuras.
Competencia específica
Aplicar algoritmos para almacenar datos de forma segura, mediante la utilización de las
estructuras básicas de la programación.
Temario de la unidad
1. Estructuras de datos
1.1. Pilas
1.1.1. Generalidades
1.1.2. Creación de una pila
1.1.3. Operaciones básicas
1.2. Listas
1.2.1. Generalidades
1.2.2. Creación de una lista
1.2.3. Operaciones básicas
1.3. Colas
1.3.1. Generalidades
1.3.2. Creación de una cola
1.3.3. Operaciones básicas
Estructura de Datos Unidad 1. Estructuras de datos
4
Tema 1. Estructura de datos
Para comenzar con los conceptos básicos de la Estructura de datos, forma de trabajar, etc.
Abre el archivo de Actividades de la unidad y dirígete a la Actividad 1. Foro de la asignatura
donde encontrarás las instrucciones para ingresar al foro que te permitirá realizar preguntas,
hacer comentarios, entre otras cosas. Una vez ingreses al foro, regresa a la lectura de tu
unidad. No olvides atender a las indicaciones en ella se te presentan.
Así mismo, ingresa al archivo Actividades de la unidad y realiza la Actividad 2.
Identificación de la relación entre algoritmos y estructuras de datos. La cual tiene como
propósito que identifiques las Estructura de datos.
Puedes buscar estas definiciones tanto en las fuentes proporcionadas en tu unidad, así
como en fuentes complementarias, como lo son libros, internet, journals, etc.
Luego de realizar las actividades y consultar los textos, es necesario que formes un
concepto propio acerca de los diferentes términos utilizados en las estructuras de datos:
pilas, colas y listas.
Tema 1.1. Pilas
El primer tema que revisaremos es el de pila. Una pila se puede definir como un contenedor
de objetos que se introducen y se sacan según el principio conocido como LIFO (last – in,
first - out) que significa, último en entrar, primero en salir. Siempre es posible insertar objetos
en una pila, sin embargo, sólo es posible sacar el objeto que se introdujo más
recientemente.
Las pilas son estructuras de datos fundamentales que se usan en muchas aplicaciones
como puede ser: cuando los navegadores de Internet van guardando en una pila las
direcciones de los sitios recién revisados. Cuando un usuario visita un sitio nuevo, su
dirección es introducida para meterla en la pila de direcciones, luego el navegador permite
que el usuario quite el sitio recién visitado dando clic al botón “atrás”. Como podemos notar,
son muchas las aplicaciones de las pilas que realizamos de forma cotidiana en actividades
informáticas.
La Actividad 3. Ejemplificación con un caso cotidiano del uso de pilas, colas y listas, en el
inciso 1, te pide que anotes un ejemplo de la vida cotidiana, donde se utilice el concepto de
pilas, durante la lectura de esta unidad podrás encontrar algunas respuestas, sin embargo,
es recomendable que busques otras más ya sea en las fuentes sugeridas o en fuentes
externas.
Las actividades 3, 4 y 5, se trabajarán a la par de los temas 1.1. Pilas, 1.2 Listas y 1.3.
Colas, por lo tanto, las actividades las comenzarás a trabajar desde este momento; no
obstante, sólo las podrás concluir hasta terminar los 3 temas.
Estructura de Datos Unidad 1. Estructuras de datos
5
El nombre de pila se le da a esta estructura como una analogía con las máquinas servidoras
de platos de resorte en una cafetería o también por la forma como se despachan los dulces
con el despachador PEZ. También podemos ubicarla como una pila de libros o de monedas.
Pila de libros
Pila de monedas
Pila de platos
Despachador de dulces PEZMR.
Una pila es un tipo de dato abstracto (TDA) que soporta dos métodos fundamentales: push y
pop. Por su importancia, la estructura de datos pila se incluye como clase “constructora” en
el paquete java.util de Java.
En la Actividad 4. Resolución de un programa donde se cree una pila, una cola y una lista,
específicamente el inciso 1, se te indica que tendrás que programar los métodos que se
emplean en las pilas.
Apóyate en la bibliografía sugerida de la unidad para revisar los métodos que se emplean en
las pilas, por ejemplo:
push (o): permite insertar, introducir o empujar un objeto en la parte superior de la pila.
Estructura de Datos Unidad 1. Estructuras de datos
6
Entrada: objeto
Salida: ninguna
pop (): sacar el objeto superior de la pila y regresarlo; se produce un error si la pila está
vacía.
Entrada: ninguna
Salida: objeto
Para una pila también se definen métodos de soporte:
size(): Regresa la cantidad de objetos en la pila.
Entrada: ninguna
Salida: entero
isEmpty(): Regresa un valor booleano que indica si la pila está vacía.
Entrada: ninguna
Salida: booleana
Top(): Regresa el objeto superior de la pila sin sacarlo de ella, se produce un error si la pila
está vacía.
Entrada: ninguna
Salida: objeto
La implementación de un tipo de dato abstracto en Java se hace en dos pasos. El primero
es la definición de una interfaz de programación de aplicación Java o interfaz; solamente
que describe los nombres de los métodos que soporta el TDA (tipo de dato abstracto) y
cómo se deben declarar y usar.
Revisa Goodrich, Tamassia, (2010, pp. 136-137), pues, en este texto, podrás ver a través
de ejemplos como se crea la interfaz en Java, el proceso de declaración y uso de variables.
También hace referencia a la forma de utilizar los métodos que emplea la estructura de
datos pila. Después de conocer estos conceptos y verlos ejemplificados, podrás llevarlos a
la práctica a través de las actividades que se plantean en el documento del mismo nombre;
además podrás ubicar los métodos que se aplican en la estructura pila e identificarás, cómo
ilustrar una pila a través de un diagrama o dibujo, entre otras cosas que te permitirán
diferenciar con respecto a otras estructuras de datos.
Estructura de Datos Unidad 1. Estructuras de datos
7
Las pilas son aplicaciones importantes en el ambiente de ejecución de los programas Java.
Un programa Java en ejecución tiene una pila privada, llamada pila de métodos Java que se
usa para rastrear las variables locales y otra información importante sobre los métodos, a
medida que se invocan durante la ejecución. En Joyanes, Zahonero (2012, pp. 490-498)
encontrarás cómo emplear este tipo de estructura para realizar aplicaciones cotidianas.
También, podrás darte cuenta cómo este tipo de estructura queda inherente a la forma de
ejecución de los programas en el lenguaje Java. Revisa las páginas que se te señalan.
Como has constatado, el tema de pilas es amplio y a la vez muy interesante ya que
implementando pilas en diferentes programas podrás mejorar la eficiencia de los mismos,
también podrás identificar la funcionalidad y en qué áreas se han hecho aplicaciones de las
pilas.
No olvides el ejemplo del caso de los sitios web visitados por los usuarios; otro ejemplo lo
puedes verificar en los editores de texto, estos suelen tener una función llamada “deshacer”
(undo) que cancela las operaciones recientes de edición, y hace regresar al documento a
sus estados anteriores. Esta operación de deshacer se logra guardando los cambios de
texto en una pila.
En la Actividad 5. Aplicación de las operaciones básicas de una estructura de datos, inciso
1, aplicarás el código que realizaste en la Actividad 4, dándole un giro orientado hacia
alguna aplicación real de una pila, en la lectura de esta Unidad podrás encontrar algunas
opciones, aunque tú puedes sugerir y optar por la que más te convenga.
Tema 1.2. Listas
El siguiente tipo de estructura que conocerás será la lista. Una lista es una colección de
nodos que en conjunto forman un ordenamiento de forma lineal. El orden se determina como
en el juego infantil “sigan al líder”, porque cada nodo es un objeto compuesto que guarda
una referencia a un elemento y, una referencia llamada “next” (siguiente), a otro nodo.
Podemos traer a nuestra mente una lista de alumnos inscritos en un curso, una lista de
productos para hacer el mandado, etc.
La lista es el tipo más general de estructura lineal donde las inserciones y eliminaciones se
realizan en cualquier punto de la lista, por esta razón se debe especificar dónde se requiere
que se haga la operación. Sus operaciones básicas son: creación, destrucción, inserción,
eliminación, consulta y verificación de lista vacía.
Pudiera considerarse como una redundancia el hecho de tener un nodo que refiera a otro
nodo, sin embargo, la referencia next dentro de un nodo se puede considerar como un
enlace o apuntador hacia otro nodo. Así mismo, pasar de un nodo a otro con una referencia
next se llama salto de apuntador. Al primer nodo de la lista se le llama: cabeza (top) y al
último se le conoce como fin de la lista.
Estructura de Datos Unidad 1. Estructuras de datos
8
Para que puedas conocer a detalle la forma como se conceptualiza la lista, cómo se
agregan elementos, se retiran, etc., es conveniente que revises Joyanes (2010).
Fundamentos de programación, Algoritmos, Estructuras de datos y objetos. Las páginas que
deberás revisar son de la 440 a la 443.
También deberás revisar Joyanes et al (2012, pp. 500-512), en dicho texto encontrarás:
cómo emplear este tipo de estructura para realizar aplicaciones cotidianas. Podrás también
darte cuenta cómo este tipo de estructura queda inherente a la forma de ejecución de los
programas en el lenguaje Java. Revisa las páginas que se te señalan.
Es de vital importancia que revises la fuente arriba citada para que puedas conocer a detalle
esta estructura de datos y, de esta manera, puedas establecer la diferencia en uso con
respecto a otras estructuras como: la pila, que fue el tema anterior revisado, así como la
estructura cola que es otra de las estructuras más utilizadas.
Luego de haber revisado la bibliografía deberás tener una idea clara del tema, así como
poder emplear las diferentes estructuras que conoces y conocerás dependiendo del tipo de
problemas de desarrollo que se te presente.
Componentes de una lista
Imagen recuperada de: yatarihuana2.blogspot.es
Una lista enlazada consta de un número de elementos y cada elemento tiene dos
componentes: una referencia al siguiente elemento de la lista y un valor, que puede ser de
cualquier tipo.
Una lista enlazada requiere de las siguientes funciones:
Definir la clase nodo y referencia a nodo.
Inicializar o crear.
Insertar elementos en una lista.
Eliminar elementos de una lista.
Buscar elementos de una lista.
Recorrer una lista.
Comprobar si la lista está vacía.
Estructura de Datos Unidad 1. Estructuras de datos
9
Este tipo de estructura puede resultar un poco más complejo de utilizar, lo recomendable es
que conozcas y sepas utilizar las diferentes estructuras de datos, así como la forma de
emplear adecuadamente los temas de las siguientes unidades como son los árboles y, con
base en tu experiencia, decidas qué conceptos utilizar para la resolución de determinado
problema. Para que conceptualices el término lista se puede utilizar la analogía con listas
que utilices en tu día a día, revisa la Actividad 3. Ejemplificación con un caso cotidiano del
uso de pilas, colas y listas. En el inciso 2, se te pide que anotes un ejemplo de la vida
cotidiana donde se utilice el concepto de listas, durante la lectura de esta unidad podrás
encontrar algunas respuestas, sin embargo, es recomendable que busques otras más ya
sea en las fuentes sugeridas o en externas.
Las listas resuelven las situaciones mencionadas arriba; son, probablemente, la segunda
estructura de almacenamiento de propósito general más comúnmente utilizada, después de
los arreglos.
Una lista es un tipo de estructura conveniente para usarse en muchos tipos de bases de
datos de propósito general. También, puede remplazar a los arreglos como base para otras
estructuras de almacenamiento como pilas y colas. No pierdas de vista lo señalado, pues,
ello te servirá para realizar la Actividad 4. Resolución de un programa donde se cree una
pila, una cola y una lista, específicamente el inciso 2, donde se te indica que tendrás que
programar los métodos que se emplean en las listas. No olvides apoyarte de la bibliografía
sugerida, en las líneas siguientes de lectura de esta unidad, pues en ella revisarás podrá ver
qué métodos se emplean en las listas.
La ventaja más evidente de utilizar estructuras ligadas, es que permite optimizar el uso de la
memoria, pues no desperdiciamos el espacio de localidades vacías.
Ahora entra a la Actividad 5. Aplicación de las operaciones básicas de una estructura de
datos, inciso 2; aplicarás el código que realizaste en la Actividad 4, dándole un giro
orientado hacia alguna aplicación real de una lista. En la lectura de esta unidad podrás
encontrar algunas opciones, aunque tú puedes sugerir y optar por otra opción, luego de la
realización de la actividad podrás darte cuenta de que las listas son una estructura de datos
bastante interesante; sin embargo, presenta algunas desventajas, la más grande, de las
listas, es que deben ser recorridas desde su inicio para localizar un dato particular. Es decir,
no hay forma de acceder a algún dato de la lista en particular, como se haría en un arreglo.
Tema 1.3. Colas
Para concluir con esta unidad trataremos el tema de colas, se trata de una estructura que
consta solamente de 2 operaciones: inserción (push) y eliminación (pop). La función push
sólo se puede realizar a través de un extremo (frente) y la función pop sólo se realiza por el
otro extremo (final).
Estructura de Datos Unidad 1. Estructuras de datos
10
Este tipo de estructura se conoce como FIFO (first in – firstout), el recorrido se realiza
sacando el primer dato que se insertó hasta llegar al extremo final.
Para entender este concepto pensemos en la “cola” (fila) que hacemos para comprar las
tortillas, la fila en el banco o la que hacemos para comprar un boleto en el cine. Para
ampliar estas analogías del concepto de colas con filas o colas de la vida cotidiana, abre la
Actividad 3. Ejemplificación con un caso cotidiano del uso de pilas, colas y listas. En el inciso
3, te indica que anotes un ejemplo de la vida cotidiana donde se utilice el concepto de colas,
durante la lectura de esta unidad podrás encontrar algunas respuestas, sin embargo, es
recomendable que busques otras más ya sea en las fuentes sugeridas o en otras externas.
Procura ofrecer analogías novedosas e interesantes.
Fila para las tortillas, también conocida como cola de las tortillas.
Imagen recuperada de: fotolog.com
Para el caso particular del trabajo con la estructura FIFO en primera instancia se compara
para saber si existe algún elemento en la cola, de no ser así, entonces se muestra un
mensaje que indica que la cola está vacía. De otra forma compara si Frente es mayor o
igual a Final, así simplemente hace un Recorrido lineal como los anteriores. De otra forma
usar Max como bandera para saber cuándo empezar a contar de 0 a Final. Para llevar a la
práctica estos conceptos, revisa la Actividad 4. Resolución de un programa donde se cree
una pila, una cola y una lista, específicamente el inciso 3, te indica que tendrás que
programar los métodos que se emplean en las colas, no olvides apoyarte de la bibliografía
sugerida, en las líneas siguientes de lectura de esta unidad podrás ver qué métodos se
emplean en las colas.
Para profundizar en el tema, revisa Goodrich, Tamassia (2010, pp. 140-142). En dicho
texto, revisarás de forma detallada cada uno de los conceptos que te he mencionado: la
forma de introducir elementos a cada estructura, sacar elementos de ella, entre otros. La
finalidad de que consultes estos temas es que te adentres en ellos y que ubiques las
similitudes y diferencia entre cada estructura, así como la forma adecuada de utilizar cada
una de las estructuras de datos que has revisado en la unidad.
Estructura de Datos Unidad 1. Estructuras de datos
11
Revisar Joyanes et al (2012, pp. 520-522) donde encontrarás cómo emplear este tipo de
estructura para realizar aplicaciones cotidianas. Podrás también darte cuenta cómo este tipo
de estructura queda inherente a la forma de ejecución de los programas en el lenguaje Java.
Revisa las páginas que se te señalan.
Estructura de datos cola
Imagen recuperada de: programacionfacil.com
Como puedes observar, la estructura de datos conocida como cola puede utilizarse para
ayudar a resolver situaciones de nuestra vida cotidiana, por ejemplo, cuando enviamos a
imprimir un documento desde una red de computadoras, o cuando nos encontramos en una
conversación en un chat, etc. Para ampliar estos casos donde se aplican las colas, revisa la
Actividad 5. Aplicación de las operaciones básicas de una estructura de datos, inciso 3,
aplicarás el código que realizaste en la unidad 4, dándole un giro orientado hacia alguna
aplicación real de una cola, en la lectura de esta unidad podrás encontrar algunas opciones,
aunque tú puedes sugerir y optar por otra opción, al término de esta actividad, habrás
realizado un programa que incluso podrías aplicar en tu ámbito laboral, no olvides regresar a
la lectura para conocer el cierre de la unidad.
Una vez que terminaste de revisar los temas de la unidad, concluye: la Actividad 3.
Ejemplificación con un caso cotidiano del uso de pilas, colas y listas; Actividad 4. Resolución
de un programa donde se cree una pila, una cola y una lista; y Actividad 5. Aplicación de las
operaciones básicas de una estructura de datos.
Posterior a concluir tus actividades, realiza la Evidencia de aprendizaje de la unidad, pues,
ésta es la actividad integradora de lo que consultaste y realizaste en la unidad.
Estructura de Datos Unidad 1. Estructuras de datos
12
Cierre de la unidad
En la presente unidad abordaste las diferentes estructuras de datos: pilas, listas y colas.
Como ya se te mencionó es primordial que te adentres en cada uno de los temas de la
unidad a través de la consulta de las diferentes fuentes indicadas, así como también es
necesario que leas detalladamente las actividades que se te han asignado por unidad y las
resuelvas a cabalidad para poder tener conocimiento profundo de las estructuras de datos,
pues éstas son fundamentales en el área de la programación, además que te permitirán
asimilar de mejor manera los temas de las unidades posteriores.
Por lo anterior, es necesario que conozcas bien en qué consiste cada una de las
estructuras, cómo se utilizan, qué métodos se realizan en cada una, así como en qué casos
puedo emplearlas. Además, comprender bien cada estructura te permitirá abordar de una
manera más sencilla los temas de las siguientes unidades.
Resultado del conocimiento y comprensión de los temas de pilas, colas y listas, podrás
realizar programas donde apliques estos conceptos avanzados de programación, es decir,
podrás realizar programas de aplicación para el día a día, como lo son: una cola de
impresión, una lista de correo electrónico, entre otras aplicaciones.
Para saber más…
Existen diversas fuentes que puedes consultar para ampliar tus conocimientos. Por ejemplo:
http://www.fismat.umich.mx/computacion/computacion2/estructuras/notasEstructuras.pdf
Esta liga te llevará a un documento de extensión PDF. Este archivo contiene temas muy
completos en lo que a estructura de datos se refiere; contiene, además, ejemplos que
explican comportamientos de las diferentes estructuras de datos empleando líneas de
código y lenguaje Java.
http://www.utim.edu.mx/~svalero/docs/ED_Java.pdf
En el documento PDF al que podrás acceder en la liga arriba anotada, podrás encontrar de
una forma breve, pero concisa, los conceptos básicos de las estructuras de datos, sobre
todo, a través de imágenes que ilustran los componentes y comportamiento de los mismos;
podrás conocer cómo se utilizan dichas estructuras.
http://www.grycap.upv.es/gmolto/docs/eda/EDA_Tema_1_gmolto.pdf
En esta otra fuente encontrarás conceptos de java para utilizar en las estructuras de datos.
Es importante que para complementar tu conocimiento de ésta, y cualquiera otra de tus
materias, consultes diferentes fuentes; las arriba mencionadas son sólo algunas, es
recomendable, si buscas otras fuentes en Internet, que te cerciores de que éstas son
fidedignas.
Estructura de Datos Unidad 1. Estructuras de datos
13
Fuentes de consulta
Goodrich/, Tamassia (2010). Estructura de Datos y Algoritmos en Java. México:
CECSA
Joyanes (2010). Fundamentos de programación, Algoritmos, Estructuras de datos y
objetos. España: Mc Graw Hill
Joyanes & Zahonero (2012). Programación en Java 2, Algoritmos, estructuras de
datos y programación orientada a objetos. España: Mc Graw Hill