Estructura de Datos Introducción a:.

Slides:



Advertisements
Presentaciones similares
Introducción a los TADs
Advertisements

PROGRAMACION DE APLICACIONES EN MEMORIA DEL COMPUTADOR = ALGORITMOS Y ESTRUCTURAS DE DATOS.
AYUDANTÍA 2 Lenguaje Imperativo y Java. Punteros Dirección a memoria (puede apuntar a NULL). Permite trabajar con memoria (variables dinámicas de heap).
Análisis de los algoritmos Unidad 7. Análisis La resolución práctica de un problema – algoritmo o método de resolución – y por otra un programa o codificación.
Lenguaje de programación: Lua Fundamentos de lenguaje de programación. Iván Cardemil Patricio Tudela Camilo Rojas Llosect Moscoso.
2012-BM5A. Introducción Todos los lenguajes de programación son distintos entre si. Sin embargo, pueden ser agrupados según la forma de pensar y estructurar.
INTRODUCCION A LOS SISTEMAS DE INFORMACION SISTEMAS DE INFORMACION Conceptos Básicos de Sistemas Definición de SI SI.
FACULTAD DE INGENIERÍA CIVIL Y MECÀNICA CARRERA DE INGENIERÍA MÈCANICA EMPLEO DE NUEVAS TECNOLOGÍAS DE INFORMACIÓN Y COMUNICACIÓN (NTIC´s II) TEMA: PASOS.
TUTORIA 1 Lógica para la Computación TUTORIA 1 Facultad de Ciencias Naturales y Matemáticas.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Figure: Algoritmos. Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Funciones en lenguaje C 2 Funciones Definición: – Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad.
Unidad Primer Periodo. Matemáticas
Repaso Programacion en C
ROBERTO PINEDA FLORES. ALEXIS JULIAN VELAZQUEZ NAVA.
Sistema de Base de datos
Tema 2. Resolución de Problemas
U.T. 11: Introducción A Las Bases De Datos
RECURSIVIDAD.
Conceptos básicos de programación
MANEJO DE ARRELOGS EN C Clase 8: Arreglos.
Hardware Software Sistema Informática Computadora Computación Datos.
ADMINISTRACíON DE LA MEMORIA EN SISTEMAS RECIENTES
Conceptos y definición básicos
Complejidad Programación II de febrero de 2009.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Tema 6. Conceptos básicos de programación (Clase 2)
TUTORIAL PSeint.
Sonia Rueda Herencia y Polimorfismo
CREAR DIAGRAMA DE FLUJO
Tipos de Datos abstractos
Continuación Unidad 4. Control de flujo
Análisis de error en estado estacionario México D.F. a 18 de Septiembre de 2006 Departamento de Control, División de Ingeniería Eléctrica Facultad de Ingeniería.
Continuación Unidad 4. Control de flujo
Introducción a las estructuras de datos
PROCESOS COMENZAR.
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
ARREGLOS BIDIMENSIONALES MATRICES Son un espacio de almacenamiento continuo, que contiene una serie de elementos del mismo tipo de datos. Desde el punto.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
HERRAMIENTAS DE PROGRAMACIÓN
MTI. Rosa Imelda García Chi Programación Lógica y Funcional PLYF UNIDAD 1. Conceptos Fundamentales 1.1 Estilos de Programación Enero-Junio 2018.
Programación lógica y funcional Unidad I Conceptos fundamentales.
CURSO PROGRAMACIÓN BÁSICA SEMANA 3 ¿Qué es un programa?
ABSTRACCION DE DATOS   Estructura de Datos Básicos: En programación una estructurad de datos, es una forma particular de organizar datos en una computadora.
Procesamiento de señales Introducción a Matlab 2014
TEMAS *Arboles Binarios *listas Abiertas y Cerradas - Inserción - Recorrido - Eliminación *Pilas - Concepto - Inserción - Recorrido -
Eficiencia de un Algoritmo  El análisis de algoritmos estudia desde el punto de vista teórico los recursos computacionales que necesita un programa para.
Estructura general de un programa. Estructura general de un programa. Pseudocódigo Diagrama de flujo Concepto de programas. Concepto de programas. Instrucciones.
Francisco García Barrios
MC Beatriz Beltrán Martínez Verano 2018
Estimación 4 de software Tamaño Costo Duración Personas Mtro. Edgar Cossio Mayo 2016.
Informática Ingeniería en Electrónica y Automática Industrial
Tema 6. Conceptos básicos de programación (Clase 2)
ESTRUCTURA DE SISTEMAS OPERATIVOS Carbajal Rojas karla.
Recursividad 1 Análisis de algoritmos. Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más.
Informática Ingeniería en Electrónica y Automática Industrial
Complejidad algorítmica
Programación Modular Programación de Computadoras - Hugo Vega Grupo2: Reina Rodríguez Miriam Salluca.
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
Lenguaje de Programación II
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
Técnicas para la elaboración de un instrumento. Etapa de recolección de datos Implica tres actividades: -Seleccionar uno varios instrumentos o métodos.
MONITORES INTEGRANTES: Arias Marcelo Tnt. Espín Roberto Tnt. Rosero Santiago.
ALGORITMO DE ORDENAMIENTO POR BURBUJA. El método de la burbuja es uno de los mas simples, es tan fácil como comparar todos los elementos de una lista.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS. Estos sistemas no tienen una estructura definida, sino que son escritos como una colección de procedimientos donde.
Estrategia algorítmica
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
Diseños Experimentales y Cuasi-Experimentales Mg. Gabriel Castillo Hidalgo.
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
Transcripción de la presentación:

Estructura de Datos Introducción a:

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

…GRACIAS.