ESTRUCTURAS DE DATOS SOFTWARE ESTRUCTURA DE DATOS Unidad No 1: Introducción a las estructuras de datos (TDA) con objetos, conceptos y definiciones. Unidad No1 Semana No1: Jueves 06 de Mayo de 2023 USO E IMPLEMENTACIÓN DE TIPOS DE DATOS ABSTRACTOS 1. 2. 3. 4. 5. Tipos de Datos Tipos de datos primitivos Tipos de datos compuestos La necesidad de las estructuras de datos Etapas en la selección de una estructura de datos TIPOS DE DATOS • Todos los lenguajes de programación lo proporcionan. • Dos definiciones son: • Definición 1: Un tipo de dato es un conjunto de valores y operaciones asociadas a esos valores. • Definición 2: Un tipo de dato consta de dos partes: un conjunto de datos y las operaciones que se pueden realizar sobre esos datos. • Existen: • Tipo de datos primitivos, • Tipos compuestos y agregados. TIPOS DE DATOS PRIMITIVOS • Los tipos numéricos son, probablemente, los tipos primitivos más fáciles de entender, debido a que las personas estamos familiarizadas con los números. TIPOS DE DATOS COMPUESTOS AGREGADOS • Los datos compuestos son el tipo opuesto a los tipos de datos atómicos. Los datos compuestos se pueden romper en subcampos que tengan significado. • Un ejemplo sencillo es el número de cédula 09 le pertenece a la provincia y el resto le pertenece a una secuencia. • En algunas ocasiones los datos compuestos se conocen también como datos o tipos agregados. • Los tipos agregados son tipos de datos cuyos valores constan de colecciones de elementos de datos. • Un tipo agregado se compone de tipos de datos previamente definitivos. • Existen tres tipos agregados básicos: arrays (arreglos), secuencias y registros. TIPOS DE DATOS COMPUESTOS AGREGADOS • Un array o arreglo es, normalmente, una colección de datos de tamaño o longitud fija, cada uno de cuyos datos es accesible en tiempo de ejecución mediante la evaluación de las expresiones que representan a los subíndices o índices correspondientes. Todos los elementos de un array deben ser del mismo tipo. • Una secuencia o cadena es, en esencia, un array cuyo tamaño puede variar en tiempo de ejecución. Por consiguiente, las secuencias son similares a arrays dinámicos o flexibles. ARREGLOS CONTENIDO 1. Qué son las estructuras de datos 2. Ejemplos de estructuras de datos 3. Lenguajes que soportan las estructuras de datos QUÉ SON LAS ESTRUCTURAS DE DATOS En ciencias de la computación, una estructura de datos es una forma particular de organizar datos en una computadora para que puedan ser utilizados de manera eficiente. Diferentes tipos de estructuras de datos son adecuados para diferentes tipos de aplicaciones, y algunos son altamente especializados para tareas específicas. Las estructuras de datos son un medio para manejar grandes cantidades de datos de manera eficiente para usos tales como grandes bases de datos y servicios de indización de Internet. Por lo general, las estructuras de datos eficientes son clave para diseñar algoritmos eficientes. Las estructuras de datos se basan generalmente en la capacidad de un ordenador para recuperar y almacenar datos en cualquier lugar de su memoria. QUÉ SON LAS ESTRUCTURAS DE DATOS QUÉ NOS PERMITEN LAS ESTRUCTURAS DE DATOS QUÉ OPERACIONES PODEMOS EJECUTAR CON LAS ESTRUCTURAS DE DATOS QUÉ LAS HACE TAN IMPORTANTES TIPOS DE ESTRUCTURAS TIPOS DE ESTRUCTURAS CASOS LENGUAJES QUE SOPORTAN LAS ESTRUCTURAS DE DATOS • La mayoría de los lenguajes ensambladores, carecen de soporte de estructuras de datos. En cambio, muchos lenguajes de alto nivel, tienen algún tipo de soporte incorporado para ciertas estructuras de datos, tales como los registros y arreglos. • Por ejemplo, los lenguajes C y Pascal soportan estructuras y registros, respectivamente, además de arreglos y matrices multidimensionales. La mayoría de los lenguajes de programación disponen de algún tipo de biblioteca o mecanismo que el uso de estructuras de datos en los programas. Los lenguajes modernos por lo general vienen con bibliotecas estándar que implementan las estructuras de datos más comunes. Ejemplos de ello son la biblioteca Standard Template Library de C++. LA ELECCIÓN DE LAS ESTRUCTURA DE DATOS • La elección de la estructura de datos adecuada redundará en una mayor eficiencia del programa y, sobre todo, en una mejor resolución del problema en cuestión. Una elección inadecuada de la estructura de datos puede conducir a programas lentos, largos y poco eficientes. • Una solución se denomina eficiente si resuelve el problema dentro de las restricciones de recursos requeridas. Restricciones de recursos pueden ser el espacio total disponible para almacenar los datos (considerando la memoria principal independiente de las restricciones de espacio de discos, fijos, CD, DVD, flash…) o el tiempo permitido para ejecutar cada subtarea. ETAPAS EN LA SELECCIÓN DE UNA ESTRUCTURA DE DATOS • Los pasos a seguir para seleccionar una estructura de datos que resuelva un problema son: 1. Analizar el problema para determinar las restricciones de recursos que debe cumplir cada posible solución. 2. Determinar las operaciones básicas que se deben soportar y cuantificar las restricciones de recursos para cada una. Ejemplos de operaciones básicas son la inserción de un dato en la estructura de datos, suprimir un dato de la estructura o encontrar un dato determinado en dicha estructura. 3. Seleccionar la estructura de datos que cumple mejor los requisitos o requerimientos. ETAPAS EN LA SELECCIÓN DE UNA ESTRUCTURA DE DATOS • Este método de tres etapas para la selección de una estructura de datos es una aproximación centrada en los datos. • Primero se diseñan los datos y las operaciones que se realizan sobre ellos, • A continuación viene la representación de esos datos y, • Por último, viene la implementación de esa representación. • Las restricciones de recursos sobre ciertas operaciones clave, como búsqueda, inserción de registros de datos y eliminación de registros de datos, normalmente conducen el proceso de selección de las estructuras de datos. ESTRUCTURAS DE DATOS ABSTRACTOS TIPOS DE DATOS ABSTRACTOS Un Tipo de dato abstracto (TDA) es un conjunto de datos u objetos al cual se le asocian operaciones. El TDA provee de una interfaz con la cual es posible realizar las operaciones permitidas, abstrayéndose de la manera en como estén implementadas dichas operaciones. Esto quiere decir que un mismo TDA puede ser implementado utilizando distintas estructuras de datos y proveer la misma funcionalidad. El paradigma de orientación a objetos permite el encapsulamiento de los datos y las operaciones mediante la definición de clases e interfaces, lo cual permite ocultar la manera en cómo ha sido implementado el TDA y solo permite el acceso a los datos a través de las operaciones provistas por la interfaz. En este capítulo se estudiarán TDA básicos como lo son las listas, pilas y colas, y se mostrarán algunos usos prácticos de estos TDA. EJEMPLOS Existen numerosos tipos de estructuras de datos, generalmente construidas sobre otras más simples: 1. Un vector es una serie de elementos en un orden específico, por lo general todos del mismo tipo (si bien los elementos pueden ser de casi cualquier tipo). Se accede a los elementos utilizando un entero como índice para especificar el elemento que se requiere. Las implementaciones típicas asignan palabras de memoria contiguas a los elementos de los arreglos (aunque no siempre es el caso). Los arreglos pueden cambiar de tamaño o tener una longitud fija. EJEMPLOS 2. Pilas y Colas: Implementación de los algoritmos FIFO y LIFO. 3. Un grafo es una estructura de datos conectada compuesta por nodos. Cada nodo contiene un valor y una o más referencias a otros nodos. Los grafos pueden utilizarse para representar redes, dado que los nodos pueden referenciarse entre ellos. Las conexiones entre nodos pueden tener dirección, es decir un nodo de partida y uno de llegada. 4. Un árbol es un caso particular de grafo dirigido en el que no se admiten ciclos y existe un camino desde un nodo llamado raíz hasta cada uno de los otros nodos. Una colección de árboles es llamada un bosque. ESTRUCTURAS DE DATOS ARREGLOS CONTENIDO 1. 2. 3. 4. 5. Arreglos Características Ventajas Operaciones Punteros CONCEPTO RECORDANDO CARACTERÍSTICAS RECORDANDO VENTAJAS DEL USO DE ARREGLOS RECORDANDO EJEMPLO RECORDANDO ARREGLOS UNIDIMENSIONALES: VECTORES - OPERACIONES RECORDANDO ARREGLOS UNIDIMENSIONALES: VECTORES - OPERACIONES RECORDANDO ARREGLOS UNIDIMENSIONALES: VECTORES - OPERACIONES RECORDANDO ARREGLOS UNIDIMENSIONALES: VECTORES - OPERACIONES RECORDANDO ARREGLOS UNIDIMENSIONALES: VECTORES - OPERACIONES RECORDANDO ARREGLOS UNIDIMENSIONALES: VECTORES - OPERACIONES RECORDANDO ARREGLOS BIDIMENSIONALES: MATRICES RECORDANDO ARREGLOS BIDIMENSIONALES: MATRICES RECORDANDO ARREGLOS BIDIMENSIONALES: MATRICES RECORDANDO ARREGLOS BIDIMENSIONALES: MATRICES RECORDANDO ARREGLOS BIDIMENSIONALES: MATRICES RECORDANDO ARREGLOS BIDIMENSIONALES: MATRICES RECORDANDO