Top Banner
Estructuras de Datos y Algoritmos ! Docente: M.Sc. Carlo Corrales Delgado [email protected] ! https://sites.google.com/site/unsaepiseda o simplemente /episeda.tk Universidad Nacional de San Agustín Escuela Profesional de Ingeniería de Sistemas III Semestre
41

Implementaciónde EDs

Feb 13, 2016

Download

Documents

Menis Cham Piao

Como implementar estructuras de datos
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Implementaciónde  EDs

Estructuras de Datos y Algoritmos

!  Docente: M.Sc. Carlo Corrales Delgado [email protected]

!  https://sites.google.com/site/unsaepiseda o simplemente /episeda.tk

Universidad Nacional de San Agustín Escuela Profesional de Ingeniería de Sistemas III Semestre

Page 2: Implementaciónde  EDs

Introducción

Page 3: Implementaciónde  EDs

Cómo enseñar el Diseño de Estructuras de Datos

!  Desde el GOTO, Programación estructurada, POO, Tipos de datos abstractos, Templates, etc.

!  Clasificación de acuerdo a: -  Dinamicidad: vectores estáticos o dinámicos -  Protección de datos: Acceso libre, parcial o

totalmente protegido -  Encapsulación: namespaces, struct, classes,

interfaces o funciones variables. -  Abstracción de datos: técnicas inflexibles o

flexibles (en t ejec y en t compilac).

Page 4: Implementaciónde  EDs

Cómo enseñar el Diseño de Estructuras de Datos

!  Alternativas de implementación: !  Vectores de tamaño fíjo !  Vectores dinámicos y variables globales !  Programación modular !  Programación Orientada a Objetos !  Tipos de Datos abstractos !  Diseño de patrones !  Código para proyectos grupales !  NameSpaces !  Definición de tipos de datos en tiempo de

ejecución !  Punteros para reducir códigos !  Interfaces !  Software tolerante a fallas

Page 5: Implementaciónde  EDs

!  La meta es almacenar elementos de tipo entero !  Usar un vector fijo y un contador global

Page 6: Implementaciónde  EDs

!  Estructura más flexible !  Usa un puntero

Page 7: Implementaciónde  EDs

!  Solo se maneja 1 vector por programa (var global)

Page 8: Implementaciónde  EDs

!  Para la coexistencia de más de 1 vector en el sistema

Page 9: Implementaciónde  EDs

!  Si necesitamos n parámetros, usaremos estructuras

Page 10: Implementaciónde  EDs

!  Si queremos proteger los datos: encapsulamiento

Page 11: Implementaciónde  EDs

!  Pero, y si queremos un vector entero, otro doble, etc??

Page 12: Implementaciónde  EDs

!  Cuando el tipo de elementos a insertar no es específico

Page 13: Implementaciónde  EDs

!  Pero no sería usual si necesitamos 2 vectores de diferentes tipos (repetiríamos código): templates

Page 14: Implementaciónde  EDs

!  Observe que se debe definir el tipo en t compilación.

Page 15: Implementaciónde  EDs

!  Alto nivel de abstracción !  Mecanismo para ejecutar operaciones sobre los

datos que contiene: iterators (STL)

Page 16: Implementaciónde  EDs

!  Técnica: Objetos de Función (sin punteros)

Page 17: Implementaciónde  EDs

!  Si 2 programadores implementan un árbol binario y una lista enlazada por separado; usarán un NODE

Page 18: Implementaciónde  EDs

!  NODE es de uso interno.

Page 19: Implementaciónde  EDs

!  NODE es de uso interno.

Page 20: Implementaciónde  EDs

!  Si diseñamos un Excel y un Word: métodos y DLLs

Page 21: Implementaciónde  EDs

!  Al extraer clases y métodos con #import, muchos se repiten

Page 22: Implementaciónde  EDs

!  Nuevo nivel de encapsulación !  No se pueden crear instancias en un namespace

Page 23: Implementaciónde  EDs

!  Motores de BD generan runtime ED. !  Primer solución: switch

Page 24: Implementaciónde  EDs

!  Problemas con los ifs

Page 25: Implementaciónde  EDs

!  Sin templates, usando un punteros a funciones

Page 26: Implementaciónde  EDs

!  Función para comparar 2 valores

Page 27: Implementaciónde  EDs

!  Función para comparar 2 valores

Page 28: Implementaciónde  EDs

!  Si deseamos acceder a diferentes BD, con ODBC se necesita drivers con operaciones de insertar, borrar, actualizar, etc.

Page 29: Implementaciónde  EDs

!  El nuevo productor debe añadir sus drivers a ODBC usando su propia piscina

!  Toda la complejidad es escondida por ODBC y es transparente para el usuario final

Page 30: Implementaciónde  EDs

!  Veamos el llamado a funciones sin punteros

Page 31: Implementaciónde  EDs

!  Ahora con punteros: reducción de código y escalabilidad

Page 32: Implementaciónde  EDs

!  Al pensar en la implementación de Cvector, tenemos dos grupos de métodos: -  Insert(), Remove() -  Write(), Read()

!  Tienen relación semántica? !  ATL implementan distintas interfaces

Page 33: Implementaciónde  EDs

!  Medidas para que errores que puedan pasar sean controlados. Ej.

Page 34: Implementaciónde  EDs

!  Factorial → -1, pero Division → ??

Page 35: Implementaciónde  EDs

Consideraciones de lenguajes de programación

!  Lenguajes de programación: -  C++: punteros -  Java: aplicaciones web, estricto chequeo de tipos

!  Consideremos STL, ATL, Boost

Page 36: Implementaciónde  EDs

" La calidad de los algoritmos usados:

!  Fibonacci

Page 37: Implementaciónde  EDs

" La calidad de los algoritmos usados:

!  Fibonacci

Page 38: Implementaciónde  EDs

Ayuda del Compilador

!  Búsqueda binaria

Page 39: Implementaciónde  EDs

Ayuda del Compilador !  Compilador GNU C

Page 40: Implementaciónde  EDs

Ayuda del Compilador !  Función Factorial: función recursiva se

transforma en recursiva cortada, donde fácilmente un compilador lo vuelve iterativa.

Page 41: Implementaciónde  EDs

Comentarios finales

!  Uso de threads !  Documentación