oficial--deda unidad 1. estructuras de datos

13
Estructura de Datos Unidad 1. Estructuras de datos 1 Ingeniería en Desarrollo de software Cuatrimestre 06 Asignatura: Estructuras de Datos Clave: 160920621/150920621

Upload: charrote2013

Post on 22-Oct-2015

87 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: OFICIAL--DeDA Unidad 1. Estructuras de Datos

Estructura de Datos Unidad 1. Estructuras de datos

1

Ingeniería en Desarrollo de software

Cuatrimestre 06

Asignatura:

Estructuras de Datos

Clave: 160920621/150920621

Page 2: OFICIAL--DeDA Unidad 1. Estructuras de Datos

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

Page 3: OFICIAL--DeDA Unidad 1. Estructuras de Datos

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

MegaUsuario
Tachado
MegaUsuario
Tachado
MegaUsuario
Tachado
MegaUsuario
Tachado
Page 4: OFICIAL--DeDA Unidad 1. Estructuras de Datos

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.

MegaUsuario
Tachado
MegaUsuario
Resaltado
MegaUsuario
Resaltado
MegaUsuario
Tachado
MegaUsuario
Resaltado
MegaUsuario
Resaltado
MegaUsuario
Nota adhesiva
HECHA 30/06/2013
Page 5: OFICIAL--DeDA Unidad 1. Estructuras de Datos

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.

MegaUsuario
Resaltado
Page 6: OFICIAL--DeDA Unidad 1. Estructuras de Datos

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.

MegaUsuario
Resaltado
Page 7: OFICIAL--DeDA Unidad 1. 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.

MegaUsuario
Resaltado
MegaUsuario
Resaltado
MegaUsuario
Resaltado
MegaUsuario
Tachado
Page 8: OFICIAL--DeDA Unidad 1. Estructuras de Datos

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.

MegaUsuario
Resaltado
Page 9: OFICIAL--DeDA Unidad 1. Estructuras de Datos

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

MegaUsuario
Subrayado
MegaUsuario
Resaltado
MegaUsuario
Resaltado
MegaUsuario
Resaltado
MegaUsuario
Resaltado
Page 10: OFICIAL--DeDA Unidad 1. Estructuras de Datos

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.

MegaUsuario
Resaltado
MegaUsuario
Subrayado
MegaUsuario
Resaltado
Page 11: OFICIAL--DeDA Unidad 1. Estructuras de Datos

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.

MegaUsuario
Comentario en el texto
A3 PENDIENTE
MegaUsuario
Comentario en el texto
EA PENDIENTE
Page 12: OFICIAL--DeDA Unidad 1. Estructuras de Datos

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.

MegaUsuario
Comentario en el texto
CIERRE DE UNIDAD PENDIENTE
MegaUsuario
Tachado
Page 13: OFICIAL--DeDA Unidad 1. Estructuras de Datos

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