Implementaciónde EDs

41
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

description

Como implementar estructuras de datos

Transcript of Implementaciónde EDs

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