Implementaciónde EDs

Post on 13-Feb-2016

230 views 0 download

description

Como implementar estructuras de datos

Transcript of Implementaciónde EDs

Estructuras de Datos y Algoritmos

!  Docente: M.Sc. Carlo Corrales Delgado carlocorrales@hotmail.com

!  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