SlideShare una empresa de Scribd logo
1 de 37
Estructuras de Datos
Introducción
1
¡Bienvenido a Estructuras de Datos!
 Introducción y Info de contacto
 Programa del Curso
 Objetivo del curso
 Revisión general
 Código de Honestidad
 Partida del 1er capitulo
2
Mi Información
 Patricio Galdames
 Horas de Consulta:
 Martes 15:30-17:00
 Jueves 14:00 - 15:30
 Oficina: en la FACE al frente Secretaria Dirección
DSI
 Teléfono: (41) 311-1519
 E-mail: pgaldames@ubiobio.cl
3
Objetivos
4
 Dado un problema te pediré que escribas un
programa para resolverlo.
 Podemos identificar en el problema:
 Los Datos que son requeridos para su solución
 Los Métodos requeridos para manipular los datos
 Esto es lo que define a un programa!!.
Objetivos
 Ya sea Java o C, proveen un ambiente para
desarrollar
 Estructuras de Datos (maneras de almacenar la
información)
 Ejemplo, un arreglo es una estructura de datos
 Algoritmos (métodos para manipular la información)
 Ejemplo, ‘ordenar’ es un algoritmo
 Usaremos C para estudiar estructuras de datos
simples. Ej: Listas enlazadas, colas y pilas.
 Usaremos Java para estudiar estructuras de datos
mas avanzadas como: arboles, grafos, heaps.
5
Objetivos
 Al final del curso, no tan solo deberías ser capaz
de usar alguna estructura de datos para resolver
un problema, sino que escoger aquella que sea la
mas adecuada.
 Esto significa escoger:
 La mejor forma de ALMACENAR los datos usados
 El mejor método para MANIPULAR los datos
 Pero…necesitamos definir el significado de la
palabra ‘mejor’!

6
Objetivos
7
 ¿Por qué definir el concepto «mejor» es
importante?
 Pensemos sobre lo siguiente:
 Una corporación contrata a Luis para que escriba
un programa para ordenar millones de nombres.
¿Cuál enfoque consideras es el mejor? :
 Un programa que le toma a Luis escribir/codificar un día y
que ordena los nombres en dos horas
 Un programa que le toma Luis cinco días de codificación y
que almacena los nombres en diez segundos
Objetivos
 Supongamos que no estamos en contra del tiempo….
 ¡La opción B ciertamente es la preferible!
 Un programa que le toma Luis cinco días de codificación y
que almacena los nombres en diez segundos
 Lo que vamos a ver una y otra vez en este curso:
 Puede haber múltiples soluciones a un problema
Pero llegar a las mejores soluciones a veces
significa:
 Dedicar más tiempo y desarrollar la creatividad para escribir
el programa, y
 Un programa más largo
8
Objetivos
 ¡La velocidad no es la única variable a
considerar!
 Si tienes dos programas A y B, cada uno de ellos
ordena un millón de nombres, pero B consume
diez veces mas memoria que A ...
 En igualdad de condiciones, A es la mejor solución
 ¡Esto puede ser un punto muy crítico también!
 Esperemos que esto les de una idea de nuestros
motivos para el curso ...
 ¡Los mejores programadores son aquellos que desarrollan las
mejores soluciones!
 Ellos no se sientan y obtienen la mejor solución en cinco
minutos
9
Mito #1
10
 Este curso NO es un curso de programación.
 Muchas personas vienen a este curso con la
actitud, "esto es sólo un curso avanzado de manejo
de la sintaxis de Java o C".
No lo es.
 No pienses que debes conocer C o Java al
detalle para que te vaya bien en el curso.
 Te ira bien en el curso, si no tienes miedo de
desafiar tu mente y de probar ideas nuevas.
Mito #2
11
 Este curso demanda DEMASIADO tiempo.
 Las actividades del curso tenderán a consumir
bastantes horas por semana.
 ¡Esto puede sonar horrible para algunos!
 Que no lo sea para ti. :) No dejes las tareas para ultima
hora...
 Yo estoy aquí para ayudarles:
 Horas de oficina, ya se las definidas o solicitadas
 Trato de responder los emails con regularidad, sobre todo si
por temas de compresión de los temas del curso
 Laboratorios con profesor ayudante
Mito #3
12
 Si no se Java o C no podre entender las
estructuras de datos
 Las estructuras de datos son independientes del
lenguaje de programación
 Te asistiremos en el desarrollo de las tareas de
programación
 En el laboratorio, el profesor o el ayudante estará disponible para
preguntas, etc
 Pero en este curso, tendrás que estudiar mucho por
tu cuenta.
 Sin embargo, ante cualquier duda pregunta!!,
aprovecha las horas de consulta y la bibliografía. :)
Prerrequisitos
 Al menos uno de los siguientes cursos
 Curso de algoritmo y programación
 Curso de Programación Orientada a Objetos
 Estructuras Discretas
 Asumo:
 Conocimiento previo de algún lenguaje de
programación
 Para explicar los conceptos, usaremos:
 Seudocódigo
 Java y C
13
Libros de consulta
 Robert LaFore. Data Structures and Algorithms in Java:
Second Edition. Indianapolis: SAMS Publishing, 2003.
 Tenenbaum A. et al., Estructuras de Datos en C, Prentice
Hall, 1999
 Espero cubrir aproximadamente un capitulo por semana
 Las clases estarán basadas en estos textos
 Daremos a menudos ejemplos y lecturas (moodleUBB)
 A veces las tareas estarán basadas en estos textos
 Hay diversos textos de Estructuras de Datos en
Bibliotecas muy buenos que también tratan los mismos
temas, especialmente aquellos que utilizan C o Java
14
Clases
 Diapositivas estarán disponibles en moddleubb
 Espero estimular la discusión en clases
 Es altamente recomendable venir a clases, pero
la asistencia no es requerida
 Las diapositivas estarán a propósito incompletas,
las cuales se completaran con el trabajo en pizarra
o discusiones.
15
Evaluaciones
 2 Certámenes
 Controles en ayudantía y cátedras
 Tareas (grupos de 2 alumnos)
 Código de Honestidad
16
Tópicos
 Vamos sobre cada uno de ellos
17
Cada Estructura de Datos
 Note que hay un total de diez estructuras de datos
que cubriremos:
 Arreglos, pilas (stacks), colas (queues), listas enlazadas (linked
lists), arboles binarios (binary trees), arboles AVL (AVL trees), B*
trees (Arboles B*), tablas de hashing, heaps, y grafos
 Cada una de ellas es una forma de almacenar un grupo de datos
 Para cada uno de ellos veremos:
 Su motivación
 Sus operaciones
 Su eficiencia
 Su implementación en C o en Java
18
Código de Honestidad
19
 Cuando venga el momento de colaborar en las tareas
 Es ilegal dar las soluciones
 Es ilegal recibirlas y usarlas
 Lo mas seguro es no dar tu solución a nadie
 Te aliento a que discutas tus ideas, pero NO TUS
RESPUESTAS
 Legal:
 “Tengo una idea: porque no usamos un arreglo.”
 Ilegal:
 “Te enviare mi programa. Puedes basarte en el para
escribir el tuyo.”
Resumen
20
 Soy flexible con:
 Las lecturas
 Asistencia
 Pero seré muy estricto:
 Fecha de evaluaciones
 Honestidad
 En el fondo: ¡Son adultos y futuros profesionales!
Sean honestos y responsables sobre todo con
ustedes mismos!.
¿Estamos listos? Vamos…
 En la descripción del curso, he mencionado que
esta clase cubrirá tanto las estructuras de datos y
algoritmos.
 Vamos a profundizar un poco más en
exactamente lo que queremos decir ...
 Y mostrar algunos ejemplos de cada uno.
21
Definición de una Estructura de
Datos
 Una estructura de datos es la disposición de los
datos en la memoria de una computadora (o
disco).
 Preguntas para reflexionar:
 ¿Cuáles son algunos ejemplos de estructuras de
datos que ya conocen desde otros cursos?
 ¿Cómo puede la disposición de los datos en la
memoria afectar el rendimiento?
22
Definición de un Algoritmo
 Un algoritmo proporciona un conjunto de
instrucciones para la manipulación de datos en
las estructuras.
 Preguntas para reflexionar:
 ¿Cuál es un ejemplo de un algoritmo?
 ¿Cómo puede el diseño de un algoritmo afectar el
rendimiento? ¿Cómo puede afectar la memoria?
23
¿Estructura de Datos o Algoritmo?
 Lista
 Ordenar
 Búsqueda
 Pila
 Arreglo
24
Almacenamiento de datos del
Mundo Real
 Datos del mundo real: datos que describen las
entidades físicas externas al computador.
¿Podemos pensar en algunos ejemplos?
 He aquí una pista:
 Direcciones y #s de teléfono
 Nombres de libros, títulos, números ISBN
25
Almacenamiento de datos del
Mundo Real
 Digamos que queremos procesar la libreta de
direcciones con un programa computacional,
¿qué debemos tener en cuenta?
 El consumo de memoria
 Algoritmos (¿cuáles de ellos nos importan?):
26
Importante: ¡las Estructuras de Datos
pueden ser ENORMES!
 ¿Cuáles son algunos ejemplos de escenarios en los que
necesitamos estructuras de datos de gran tamaño?
 Sugerencia: ¿Cuál es el sitio web que utiliza una
libreta de direcciones muy grande?
 Ahora el problema de la escalabilidad entra en juego.
Supongamos que yo diseño un componente reutilizable
para (es decir) ordenar un arreglo de registros por
apellido. Voy a distribuirlo en la Internet. Me tengo que
preparar para muchas situaciones desde ahora.
27
Definiciones
 Base de Datos
 Nos referiremos a todos los datos que usaremos en un caso
particular. Ejemplo: Libreta de direcciones
 El concepto de archivo también lo usaremos en este sentido
 Registro
 Son las unidades en las cuales la base de datos esta dividida
 Campo
 Usualmente un registro esta dividido en varios campo y
guarda un dato en particular. Ejemplo: Nombre, numero de
pagina, dirección, teléfono.
 Llave (key)
 Campo usado para realizar la búsqueda de un registro
28
Modelando el Mundo Real
 Efectivamente, 'simular' una situación del mundo
real.
 Por ejemplo, ¿que podría representar lo
siguiente?:
29
Modelando el Mundo Real
 ¿Podrían ser las rutas de una aerolínea?
 Este tipo de estructura se le llama ‘grafo no
dirigido’
 Lo estudiaremos!!
30
Modelando el Mundo Real
 ¿Qué tal una 'cola' de datos, donde se pueda insertar
y retirar. El primer elemento en ingresar es el primer
elemento en salir (denominado "FIFO"):
 Ejemplo de aplicaciones
 Colas en los supermercados
 Las colas se utilizan también a la hora de determinar el
tiempo de los semáforos! ¿Cómo? (Piense sobre esto)
31
Dilemas de las Estructuras de
Datos
 Estos son los costos que típicamente nos
tendremos que preocupar:
 Acceso a un fragmento de datos
 Búsqueda de un fragmento de datos
 Inserción de datos en la estructura
 Eliminación de datos de la estructura
 La implementación de la estructura
 Memoria (en realidad el almacenamiento de los
datos)
 Como se pueden imaginar, no hay un costo
universal ...
32
Costos generales de las Estructuras
que estudiaremos
Estructura Acceso Búsqueda Inserción Eliminación Impl. Memoria
Arreglo Muy Bajo Alto Med Alto Bajo Bajo
Lista
Enlazada
Alto Alto Bajo Bajo Med Med
Pila Med Alto Med Med Med Med
Cola Med Alto Med Med Med Med
Árbol Bin. Med Bajo Bajo Bajo Alto Alto
Árbol R-N Med Muy Bajo Bajo Bajo Muy
Alto
Alto
Tabla Hash Med Med Bajo Alto Bajo Alto
Heap Med Med Muy Bajo Bajo Alto Alto
Grafo Alto Alto Med Med Med Med
Un importante detalle que deberías darte cuenta: No hay una estructura
de datos "universal"!
33
Algoritmos que estudiaremos
 Acceso/Inserción/Búsqueda/Eliminación
 Ordenamiento. Créanlo o no, hay MUCHAS
maneras de hacerlo!
 Recursión
 Cuando un método en C o Java se llama a si
mismo
 Revisaremos como hacer esto.
34
Java
35
 Nota: Java es en cierto sentido el lenguaje perfecto
para estudiar estructuras de datos y algoritmos!!!
 ¿Por que?
 Veamos una clase Java … la que esta compuesta
de:
 Variables (Datos)
 Métodos (Algoritmos)
 Una clase puede por lo tanto ser usada para
representar una ________________
 Los métodos representan
______________________.
¿Por que entonces partir con C?
 La maquina virtual de Java esta escrita en C
 La sintaxis de Java se inspiro en la de C
 Java restringe la manipulación de punteros
 Para reducir la posibilidad de provocar errores en
código
 Punteros es un recurso muy poderoso de
programación
 Útil para posteriormente comprender tópicos de
gestión de memoria en Arquitectura de
Computadores y Sistemas Operativos.
 Mejora eficiencia de procesos
36
Resumen
 Reglas y Programa del curso
 Tipo de Dato Abstracto
 Datos
 Algoritmos
 Lenguaje de programación Java y C
37

Más contenido relacionado

Similar a Lecture 01 Introduccion.ppt (20)

Rc edinson mosquera
Rc edinson mosqueraRc edinson mosquera
Rc edinson mosquera
 
Rc edinson mosquera
Rc edinson mosqueraRc edinson mosquera
Rc edinson mosquera
 
EDINSON MOSQUERA
 EDINSON MOSQUERA EDINSON MOSQUERA
EDINSON MOSQUERA
 
Rc edinson mosquera
Rc edinson mosqueraRc edinson mosquera
Rc edinson mosquera
 
Estruc datos
Estruc datosEstruc datos
Estruc datos
 
Diseño de patrones
Diseño de patronesDiseño de patrones
Diseño de patrones
 
Ayala
AyalaAyala
Ayala
 
Ayala
AyalaAyala
Ayala
 
Ayala
AyalaAyala
Ayala
 
Aya
AyaAya
Aya
 
Aya
AyaAya
Aya
 
Aya
AyaAya
Aya
 
Trabajo de sistema
Trabajo de sistemaTrabajo de sistema
Trabajo de sistema
 
Trabajo de sistema
Trabajo de sistemaTrabajo de sistema
Trabajo de sistema
 
Trabajo de sistema
Trabajo de sistemaTrabajo de sistema
Trabajo de sistema
 
Ccna
CcnaCcna
Ccna
 
Nata
NataNata
Nata
 
trabajo de laboratorio 3
trabajo de laboratorio 3trabajo de laboratorio 3
trabajo de laboratorio 3
 
Nata
NataNata
Nata
 
Actividad integradora de info b3 neuer
Actividad integradora de info b3 neuerActividad integradora de info b3 neuer
Actividad integradora de info b3 neuer
 

Último

TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 

Último (20)

Ensayo Paes competencia matematicas 2 Preuniversitario
Ensayo Paes competencia matematicas 2 PreuniversitarioEnsayo Paes competencia matematicas 2 Preuniversitario
Ensayo Paes competencia matematicas 2 Preuniversitario
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
animalesdelaproincia de beunos aires.pdf
animalesdelaproincia de beunos aires.pdfanimalesdelaproincia de beunos aires.pdf
animalesdelaproincia de beunos aires.pdf
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 

Lecture 01 Introduccion.ppt

  • 2. ¡Bienvenido a Estructuras de Datos!  Introducción y Info de contacto  Programa del Curso  Objetivo del curso  Revisión general  Código de Honestidad  Partida del 1er capitulo 2
  • 3. Mi Información  Patricio Galdames  Horas de Consulta:  Martes 15:30-17:00  Jueves 14:00 - 15:30  Oficina: en la FACE al frente Secretaria Dirección DSI  Teléfono: (41) 311-1519  E-mail: pgaldames@ubiobio.cl 3
  • 4. Objetivos 4  Dado un problema te pediré que escribas un programa para resolverlo.  Podemos identificar en el problema:  Los Datos que son requeridos para su solución  Los Métodos requeridos para manipular los datos  Esto es lo que define a un programa!!.
  • 5. Objetivos  Ya sea Java o C, proveen un ambiente para desarrollar  Estructuras de Datos (maneras de almacenar la información)  Ejemplo, un arreglo es una estructura de datos  Algoritmos (métodos para manipular la información)  Ejemplo, ‘ordenar’ es un algoritmo  Usaremos C para estudiar estructuras de datos simples. Ej: Listas enlazadas, colas y pilas.  Usaremos Java para estudiar estructuras de datos mas avanzadas como: arboles, grafos, heaps. 5
  • 6. Objetivos  Al final del curso, no tan solo deberías ser capaz de usar alguna estructura de datos para resolver un problema, sino que escoger aquella que sea la mas adecuada.  Esto significa escoger:  La mejor forma de ALMACENAR los datos usados  El mejor método para MANIPULAR los datos  Pero…necesitamos definir el significado de la palabra ‘mejor’!  6
  • 7. Objetivos 7  ¿Por qué definir el concepto «mejor» es importante?  Pensemos sobre lo siguiente:  Una corporación contrata a Luis para que escriba un programa para ordenar millones de nombres. ¿Cuál enfoque consideras es el mejor? :  Un programa que le toma a Luis escribir/codificar un día y que ordena los nombres en dos horas  Un programa que le toma Luis cinco días de codificación y que almacena los nombres en diez segundos
  • 8. Objetivos  Supongamos que no estamos en contra del tiempo….  ¡La opción B ciertamente es la preferible!  Un programa que le toma Luis cinco días de codificación y que almacena los nombres en diez segundos  Lo que vamos a ver una y otra vez en este curso:  Puede haber múltiples soluciones a un problema Pero llegar a las mejores soluciones a veces significa:  Dedicar más tiempo y desarrollar la creatividad para escribir el programa, y  Un programa más largo 8
  • 9. Objetivos  ¡La velocidad no es la única variable a considerar!  Si tienes dos programas A y B, cada uno de ellos ordena un millón de nombres, pero B consume diez veces mas memoria que A ...  En igualdad de condiciones, A es la mejor solución  ¡Esto puede ser un punto muy crítico también!  Esperemos que esto les de una idea de nuestros motivos para el curso ...  ¡Los mejores programadores son aquellos que desarrollan las mejores soluciones!  Ellos no se sientan y obtienen la mejor solución en cinco minutos 9
  • 10. Mito #1 10  Este curso NO es un curso de programación.  Muchas personas vienen a este curso con la actitud, "esto es sólo un curso avanzado de manejo de la sintaxis de Java o C". No lo es.  No pienses que debes conocer C o Java al detalle para que te vaya bien en el curso.  Te ira bien en el curso, si no tienes miedo de desafiar tu mente y de probar ideas nuevas.
  • 11. Mito #2 11  Este curso demanda DEMASIADO tiempo.  Las actividades del curso tenderán a consumir bastantes horas por semana.  ¡Esto puede sonar horrible para algunos!  Que no lo sea para ti. :) No dejes las tareas para ultima hora...  Yo estoy aquí para ayudarles:  Horas de oficina, ya se las definidas o solicitadas  Trato de responder los emails con regularidad, sobre todo si por temas de compresión de los temas del curso  Laboratorios con profesor ayudante
  • 12. Mito #3 12  Si no se Java o C no podre entender las estructuras de datos  Las estructuras de datos son independientes del lenguaje de programación  Te asistiremos en el desarrollo de las tareas de programación  En el laboratorio, el profesor o el ayudante estará disponible para preguntas, etc  Pero en este curso, tendrás que estudiar mucho por tu cuenta.  Sin embargo, ante cualquier duda pregunta!!, aprovecha las horas de consulta y la bibliografía. :)
  • 13. Prerrequisitos  Al menos uno de los siguientes cursos  Curso de algoritmo y programación  Curso de Programación Orientada a Objetos  Estructuras Discretas  Asumo:  Conocimiento previo de algún lenguaje de programación  Para explicar los conceptos, usaremos:  Seudocódigo  Java y C 13
  • 14. Libros de consulta  Robert LaFore. Data Structures and Algorithms in Java: Second Edition. Indianapolis: SAMS Publishing, 2003.  Tenenbaum A. et al., Estructuras de Datos en C, Prentice Hall, 1999  Espero cubrir aproximadamente un capitulo por semana  Las clases estarán basadas en estos textos  Daremos a menudos ejemplos y lecturas (moodleUBB)  A veces las tareas estarán basadas en estos textos  Hay diversos textos de Estructuras de Datos en Bibliotecas muy buenos que también tratan los mismos temas, especialmente aquellos que utilizan C o Java 14
  • 15. Clases  Diapositivas estarán disponibles en moddleubb  Espero estimular la discusión en clases  Es altamente recomendable venir a clases, pero la asistencia no es requerida  Las diapositivas estarán a propósito incompletas, las cuales se completaran con el trabajo en pizarra o discusiones. 15
  • 16. Evaluaciones  2 Certámenes  Controles en ayudantía y cátedras  Tareas (grupos de 2 alumnos)  Código de Honestidad 16
  • 17. Tópicos  Vamos sobre cada uno de ellos 17
  • 18. Cada Estructura de Datos  Note que hay un total de diez estructuras de datos que cubriremos:  Arreglos, pilas (stacks), colas (queues), listas enlazadas (linked lists), arboles binarios (binary trees), arboles AVL (AVL trees), B* trees (Arboles B*), tablas de hashing, heaps, y grafos  Cada una de ellas es una forma de almacenar un grupo de datos  Para cada uno de ellos veremos:  Su motivación  Sus operaciones  Su eficiencia  Su implementación en C o en Java 18
  • 19. Código de Honestidad 19  Cuando venga el momento de colaborar en las tareas  Es ilegal dar las soluciones  Es ilegal recibirlas y usarlas  Lo mas seguro es no dar tu solución a nadie  Te aliento a que discutas tus ideas, pero NO TUS RESPUESTAS  Legal:  “Tengo una idea: porque no usamos un arreglo.”  Ilegal:  “Te enviare mi programa. Puedes basarte en el para escribir el tuyo.”
  • 20. Resumen 20  Soy flexible con:  Las lecturas  Asistencia  Pero seré muy estricto:  Fecha de evaluaciones  Honestidad  En el fondo: ¡Son adultos y futuros profesionales! Sean honestos y responsables sobre todo con ustedes mismos!.
  • 21. ¿Estamos listos? Vamos…  En la descripción del curso, he mencionado que esta clase cubrirá tanto las estructuras de datos y algoritmos.  Vamos a profundizar un poco más en exactamente lo que queremos decir ...  Y mostrar algunos ejemplos de cada uno. 21
  • 22. Definición de una Estructura de Datos  Una estructura de datos es la disposición de los datos en la memoria de una computadora (o disco).  Preguntas para reflexionar:  ¿Cuáles son algunos ejemplos de estructuras de datos que ya conocen desde otros cursos?  ¿Cómo puede la disposición de los datos en la memoria afectar el rendimiento? 22
  • 23. Definición de un Algoritmo  Un algoritmo proporciona un conjunto de instrucciones para la manipulación de datos en las estructuras.  Preguntas para reflexionar:  ¿Cuál es un ejemplo de un algoritmo?  ¿Cómo puede el diseño de un algoritmo afectar el rendimiento? ¿Cómo puede afectar la memoria? 23
  • 24. ¿Estructura de Datos o Algoritmo?  Lista  Ordenar  Búsqueda  Pila  Arreglo 24
  • 25. Almacenamiento de datos del Mundo Real  Datos del mundo real: datos que describen las entidades físicas externas al computador. ¿Podemos pensar en algunos ejemplos?  He aquí una pista:  Direcciones y #s de teléfono  Nombres de libros, títulos, números ISBN 25
  • 26. Almacenamiento de datos del Mundo Real  Digamos que queremos procesar la libreta de direcciones con un programa computacional, ¿qué debemos tener en cuenta?  El consumo de memoria  Algoritmos (¿cuáles de ellos nos importan?): 26
  • 27. Importante: ¡las Estructuras de Datos pueden ser ENORMES!  ¿Cuáles son algunos ejemplos de escenarios en los que necesitamos estructuras de datos de gran tamaño?  Sugerencia: ¿Cuál es el sitio web que utiliza una libreta de direcciones muy grande?  Ahora el problema de la escalabilidad entra en juego. Supongamos que yo diseño un componente reutilizable para (es decir) ordenar un arreglo de registros por apellido. Voy a distribuirlo en la Internet. Me tengo que preparar para muchas situaciones desde ahora. 27
  • 28. Definiciones  Base de Datos  Nos referiremos a todos los datos que usaremos en un caso particular. Ejemplo: Libreta de direcciones  El concepto de archivo también lo usaremos en este sentido  Registro  Son las unidades en las cuales la base de datos esta dividida  Campo  Usualmente un registro esta dividido en varios campo y guarda un dato en particular. Ejemplo: Nombre, numero de pagina, dirección, teléfono.  Llave (key)  Campo usado para realizar la búsqueda de un registro 28
  • 29. Modelando el Mundo Real  Efectivamente, 'simular' una situación del mundo real.  Por ejemplo, ¿que podría representar lo siguiente?: 29
  • 30. Modelando el Mundo Real  ¿Podrían ser las rutas de una aerolínea?  Este tipo de estructura se le llama ‘grafo no dirigido’  Lo estudiaremos!! 30
  • 31. Modelando el Mundo Real  ¿Qué tal una 'cola' de datos, donde se pueda insertar y retirar. El primer elemento en ingresar es el primer elemento en salir (denominado "FIFO"):  Ejemplo de aplicaciones  Colas en los supermercados  Las colas se utilizan también a la hora de determinar el tiempo de los semáforos! ¿Cómo? (Piense sobre esto) 31
  • 32. Dilemas de las Estructuras de Datos  Estos son los costos que típicamente nos tendremos que preocupar:  Acceso a un fragmento de datos  Búsqueda de un fragmento de datos  Inserción de datos en la estructura  Eliminación de datos de la estructura  La implementación de la estructura  Memoria (en realidad el almacenamiento de los datos)  Como se pueden imaginar, no hay un costo universal ... 32
  • 33. Costos generales de las Estructuras que estudiaremos Estructura Acceso Búsqueda Inserción Eliminación Impl. Memoria Arreglo Muy Bajo Alto Med Alto Bajo Bajo Lista Enlazada Alto Alto Bajo Bajo Med Med Pila Med Alto Med Med Med Med Cola Med Alto Med Med Med Med Árbol Bin. Med Bajo Bajo Bajo Alto Alto Árbol R-N Med Muy Bajo Bajo Bajo Muy Alto Alto Tabla Hash Med Med Bajo Alto Bajo Alto Heap Med Med Muy Bajo Bajo Alto Alto Grafo Alto Alto Med Med Med Med Un importante detalle que deberías darte cuenta: No hay una estructura de datos "universal"! 33
  • 34. Algoritmos que estudiaremos  Acceso/Inserción/Búsqueda/Eliminación  Ordenamiento. Créanlo o no, hay MUCHAS maneras de hacerlo!  Recursión  Cuando un método en C o Java se llama a si mismo  Revisaremos como hacer esto. 34
  • 35. Java 35  Nota: Java es en cierto sentido el lenguaje perfecto para estudiar estructuras de datos y algoritmos!!!  ¿Por que?  Veamos una clase Java … la que esta compuesta de:  Variables (Datos)  Métodos (Algoritmos)  Una clase puede por lo tanto ser usada para representar una ________________  Los métodos representan ______________________.
  • 36. ¿Por que entonces partir con C?  La maquina virtual de Java esta escrita en C  La sintaxis de Java se inspiro en la de C  Java restringe la manipulación de punteros  Para reducir la posibilidad de provocar errores en código  Punteros es un recurso muy poderoso de programación  Útil para posteriormente comprender tópicos de gestión de memoria en Arquitectura de Computadores y Sistemas Operativos.  Mejora eficiencia de procesos 36
  • 37. Resumen  Reglas y Programa del curso  Tipo de Dato Abstracto  Datos  Algoritmos  Lenguaje de programación Java y C 37

Notas del editor

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37