Implementaciónde EDs
-
Upload
menis-cham-piao -
Category
Documents
-
view
230 -
download
0
description
Transcript of 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
Introducción
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).
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
! La meta es almacenar elementos de tipo entero ! Usar un vector fijo y un contador global
! Estructura más flexible ! Usa un puntero
! Solo se maneja 1 vector por programa (var global)
! Para la coexistencia de más de 1 vector en el sistema
! Si necesitamos n parámetros, usaremos estructuras
! Si queremos proteger los datos: encapsulamiento
! Pero, y si queremos un vector entero, otro doble, etc??
! Cuando el tipo de elementos a insertar no es específico
! Pero no sería usual si necesitamos 2 vectores de diferentes tipos (repetiríamos código): templates
! Observe que se debe definir el tipo en t compilación.
! Alto nivel de abstracción ! Mecanismo para ejecutar operaciones sobre los
datos que contiene: iterators (STL)
! Técnica: Objetos de Función (sin punteros)
! Si 2 programadores implementan un árbol binario y una lista enlazada por separado; usarán un NODE
! NODE es de uso interno.
! NODE es de uso interno.
! Si diseñamos un Excel y un Word: métodos y DLLs
! Al extraer clases y métodos con #import, muchos se repiten
! Nuevo nivel de encapsulación ! No se pueden crear instancias en un namespace
! Motores de BD generan runtime ED. ! Primer solución: switch
! Problemas con los ifs
! Sin templates, usando un punteros a funciones
! Función para comparar 2 valores
! Función para comparar 2 valores
! Si deseamos acceder a diferentes BD, con ODBC se necesita drivers con operaciones de insertar, borrar, actualizar, etc.
! 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
! Veamos el llamado a funciones sin punteros
! Ahora con punteros: reducción de código y escalabilidad
! 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
! Medidas para que errores que puedan pasar sean controlados. Ej.
! Factorial → -1, pero Division → ??
Consideraciones de lenguajes de programación
! Lenguajes de programación: - C++: punteros - Java: aplicaciones web, estricto chequeo de tipos
! Consideremos STL, ATL, Boost
" La calidad de los algoritmos usados:
! Fibonacci
" La calidad de los algoritmos usados:
! Fibonacci
Ayuda del Compilador
! Búsqueda binaria
Ayuda del Compilador ! Compilador GNU C
Ayuda del Compilador ! Función Factorial: función recursiva se
transforma en recursiva cortada, donde fácilmente un compilador lo vuelve iterativa.
Comentarios finales
! Uso de threads ! Documentación