Introducción a los TADs

Slides:



Advertisements
Presentaciones similares
Complejidad Computacional
Advertisements

Complejidad Computacional
Diseño y análisis de algoritmos
Estrella 0 - Fundamentos de la Programación
Planificación de Monoprocesadores
Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.
¿ Que es la complejidad de un algoritmo ?
Introducción a la Programación
Tipos de Datos Abstractos Modularidad
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
PROGRAMACION DE ESTRUCTURAS DE DATOS
Representación en espacio de estado
Programación 1 Introducción
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Teoría de lenguajes y compiladores
Arreglos Ing. Nahiby Castillo.
¿Qué es un algoritmo? “(del árabe al-Khowârizmî, sobrenombre del célebre matemático árabe Mohámed ben Musa). Conjunto ordenado y finito de operaciones.
Estructuras de datos M.I.A Daniel Alejandro García López.
Programación I Teoría VI: Recursividad
Tema 6: Clases Antonio J. Sierra.
TRADUCTOR DE UN PROGRAMA
Profesor: Julio Canales
Fundamentos de Programación
Semana 5 Subprogramas..
BIENVENIDOS Instituto Tecnológico de Colima Estructuras de Datos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Programación Lineal Unidad 1 Parte 3.
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
Análisis de Algoritmos

Introducción al análisis de algoritmos

Clase 10: Estructuras de datos y arreglos.
1.1 Concepto y terminología
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
(Organización y Manejo de Archivos)
Asignación de Espacio No Contiguo
Diseño de algoritmos La computadora puede realizar procesos y darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza. Con.
Programación Básica con NQC Patricio A. Castillo Pizarro 25/08/2007.
Material de apoyo Unidad 4 Estructura de datos
Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse.
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
Capítulo 7 Gestión de memoria.
Programación Lineal Entera Antonio H. Escobar Z Universidad Tecnológica de Pereira – Colombia Posgrado en Ingeniería Maestría en Ingeniería Eléctrica.
APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
Una introducción a la computación evolutiva
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Administrador de procesos
Parte I. Estructuras de Datos.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
Metodología de la programación
Patricio A. Castillo José M. Galarce Agosto 23 de 2008 Segunda Clase.
Software El software permite comunicar al computador los problemas y hace posible que nos comunique las soluciones Los programas son el software del computador.
Programación Básica con NQC Patricio A. Castillo 12/04/2008.
Computación I (CI-2125) Clase 2 Prof. Mireya Morales.
Teoría de lenguajes y compiladores
Lic. Carla Aguirre Montalvo

Programación Java y Desarrollo de Aplicaciones Modulo 1 Arquitectura de ordenadores Tema 3 Programas.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Programación de Sistemas
MEMORIA DINÁMICA.
PROGRAMACION DE APLICACIONES EN MEMORIA DEL COMPUTADOR = ALGORITMOS Y ESTRUCTURAS DE DATOS.
Bachillerato Ingeniería en Informática Fundamentos de Computación.
Tema 8: Programación estructurada Introducción La importancia del conocimiento de programación es mucho mayor de lo que se piensa. Aprender a programar.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Estructura de Datos Introducción a:.
Transcripción de la presentación:

Introducción a los TADs Estructura de Datos Introducción a los TADs

Conceptos para la resolución de problemas. Especificación del problema - Análisis, identificando: Datos de entrada. Datos de salida. Procesos. Técnicas algorítmicas para resolver un problema: Algoritmos de fuerza bruta  toman la ruta más evidente o corta para resolver el problema, independiente de que sea buena o no. Dividir y conquistar  la solución global es la unión de todas las soluciones parciales (subsoluciones). Programación dinámica  es similar al anterior, pero busca reutilizar los resultados obtenidos de los subproblemas. Algoritmos voraces  en cada punto de decisión, selecciona la opción que tiene el menos coste inmediato. Algoritmos probabilistas  además de los datos de entrada, dependen de valores producidos aleatoriamente. Cuando no es capaz de tomar una decisión óptima, escoge una al azar.

Conceptos para la resolución de problemas. Recursión  un algoritmo es recursivo si se encuentra definido en términos de sí mismo. Esta técnica se utiliza para las estructuras de datos recursivas, como los árboles. Ventajas: simplicidad de expresión. Desventajas: el espacio que utiliza en memoria por cada llamada de la rutina y tiempo adicional de ejecución. Ejemplo: Int factorial(int num) { if (num==0) return 1; else return num*factorial(num-1); } Fact(3) = fact(2)*3 Fact(2) = fact(1)*2 Fact(1) = fact(0)*1=1*1=1 1*2=2 2*3=6 Fact(4) = fact(3)*4 6*4=24 (en espera)

Conceptos para la resolución de problemas. Análisis de Algoritmos  Busca establecer la calidad de un programa y compararlo con otros que resuelvan el mismo problema, sin necesidad de desarrollarlos.  Permite evaluar el diseño de las estructuras de datos de un programa, midiendo su eficiencia.  Se basa en: Las características estructurales del algoritmo que respalda al programa. Se persigue encontrar una medida de calidad que permita comparar los algoritmos empleados, aplicando una función matemática para medir la eficiencia de cada algoritmo.

Conceptos para la resolución de problemas. Eficiencia Espacio de memoria que el algoritmo requiere, se determina por: Número y tamaño de las variables y estructuras de datos. Tiempo de ejecución del algoritmo (tiempo de cómputo) considerando: La estructura del algoritmo, número de operaciones elementales que deben ser realizadas durante la ejecución del algoritmo. La velocidad de operación del computador en que se ejecuta. El compilador utilizado. Tamaño de los datos de entrada con los que el programa trabaja. Se define como TA(n), tiempo empleado por el algoritmo A en procesar una entrada de tamaño n y producir una solución al problema. Tiempo y espacio suelen estar inversamente relacionados. ejemplo: para reducir los requisitos de espacio, se debe incrementar el tiempo de ejecución.

Conceptos para la resolución de problemas. Técnica para medir el tiempo de ejecución: Complejidad Asintótica del tiempo de ejecución (complejidad en tiempo), busca medir el término de orden más alto que exprese el tiempo de ejecución, ya que con este se determina la tasa de crecimiento de la ecuación. Dependiendo de la complejidad en tiempo (eficiente v/s intratable) de un algoritmo, estos se clasifican en: Algoritmos de tiempo polinómico, se mantienen estables. Algoritmos de tiempo exponencial, crecen en tiempo de ejecución conforme al tamaño de la entrada.

Tipos Abstractos de Datos (TADs) Definición: “Un TAD es un ente cerrado y autosuficiente, que no requiere de un contexto específico para que pueda ser utilizado en un programa, lo que garantiza portabilidad y reutilización del software y minimiza los efectos que puedan producir un cambio al interior del TAD” El ocultar la representación del tipo de datos respecto de las aplicaciones lo conocemos como encapsulación de datos. Esta forma de trabajar tiene la ventaja de la reutilización.

Tipos Abstractos de Datos (TADs) Definición: Es un modelo matemático de los objetos de datos que se necesitarán y las funciones que operan sobre estos objetos. Ejemplo: El TAD conjunto y los elementos que lo constituyen (datos), posee las operaciones: UNION, INTERSECCION y DIFERENCIA DE CONJUNTOS. La implementación de un TAD se compone de: Las variables necesarias para definir los datos. Las rutinas de acceso a dichas variables.

Tipos Abstractos de Datos (TADs) Observaciones: TAD: modelo matemático. Tipo de datos: implementación del modelo matemático anterior. Estructura de datos: colección de variables en memoria que están relacionadas de alguna forma específica. Cada lenguaje de programación ofrece tipos de datos predefinidos. Ejemplo para C: TAD: Entero  tipo de dato: Int Las operaciones que incluye son: suma, resta, multiplicación y división enteras, entre otras. Ahora, hay que considerar las limitaciones que tiene la implementación, como sólo puede ser el rango que posee el tipo de dato.

Tipos Abstractos de Datos (TADs) Otros ejemplos: TAD: Vector  Implementación: Arreglos. TAD: Red  Implementación: Grafos. TAD: Matriz  Implementación: Arreglos bidimensionales.

Tipos Abstractos de Datos (TADs) Clasificación de operaciones por grupos: Constructora: crea los elementos del TAD. Modificadora: permite alterar el estado de un elemento del TAD. Analizadora: permite consultar por el estado del objeto y retornar algún tipo de información.  Operaciones complementarias que permiten mayor portabilidad: Analizadoras: Comparación de igualdad entre objetos. Salida en pantalla, permite visualizar el estado de un elemento del TAD (sirve como base para alguna interfaz o depuración en pruebas). Modificadoras: Copiar un objeto por otro, cambiando su estado. Destrucción, retorna el espacio de memoria dinámica ocupada por un objeto abstracto. Después de su ejecución, el objeto deja de existir. Persistencia: Operaciones que permiten guardar/leer el estado de un objeto abstracto desde un medio de almacenamiento secundario.

Tipos Abstractos de Datos (TADs) Especificación genérica de un TAD: Nombre del TAD. Objeto abstracto. Restricciones. Lista de Operaciones. Definición de cada operación. Ejemplo: TAD Matriz. Objeto abstracto: Restricciones: n>0, m>0 Lista de Operaciones: CrearMatriz(i, j) AsignarMatriz(M, i, j, valor) ObtenerDatoMatriz(M, i, j) SumaMatriz(M1, M2) i j m-1 X i,j n-1 MatrizNegativa(M) RestarMatriz(M1, M2) MatrizInversa(M) MostrarMatriz(M)

Memoria Memoria de almacenamiento secundario. Memoria principal. Las estructuras de datos que se almacenan aquí se las llama estructuras de datos externas. Memoria principal. Estructuras de datos internas. Clasificación de Estructuras de Datos según tipo de memoria: Hablamos de una Estructura de datos estática cuando se le asigna una cantidad fija de memoria para esa estructura antes de la ejecución del programa. La cantidad de espacio asignado para la memoria estática se determina durante la compilación y no varía. Hablamos de una Estructura de datos dinámica cuando se le asigna memoria a medida que es necesitada, durante la ejecución del programa. En este caso la memoria no queda fija durante la compilación. El acto de asignar memoria durante la ejecución se llama asignación dinámica de la memoria.

Memoria El sistema de la computadora mantiene una pila de ejecución, cuya cantidad de espacio que ocupa, variará durante la ejecución del programa. Cada vez que un proceso es invocado en un programa, se crea un registro de activación y se almacena en la pila de ejecución. El registro contiene espacio para todas las variables declaradas en un procedimiento y una copia a los parámetros que están siendo pasados a un procedimiento. Además de la indicación para continuar donde debe seguir la ejecución del programa, una vez se complete la función. La memoria dinámica se almacena en la memoria libre, la que crece hacia la zona baja. Se producen errores cuando: Demasiada memoria es asignada dinámicamente. Se crean demasiados registros de activación. Memoria estática Memoria libre Pila de ejecución Memoria alta Memoria baja