Módulo 2: Estructura los Datos Orientados a Objetos pag. 1 Estructura de datos mediante la implementación de programas Identifica las estructuras de datos estáticas para resolver problemas aplicando un lenguaje de programación Identifica las estructuras de datos estáticas para aplicarlas en un lenguaje de programación y dar solución a problemas reales Las estructuras de datos determinan la conexión lógica entre los datos y afectan el procesamiento físico de los datos. Una estructura de datos es una clase de datos que se puede caracterizar por su organización y operaciones definidas sobre ella. Algunas veces a estas estructuras se les llama tipos de datos. Una estructura de datos es una colección de datos que pueden ser caracterizados por su organización y las operaciones que se definen en ella. Las estructuras de datos son muy importantes en los sistemas de computadora. Los tipos de datos más frecuentes utilizados en los diferentes lenguajes de programación son: 1. Datos simples Estándar Entero (integer) Real Caracter (char) Lógico (bolean) Definido por el programador Subrango Enumerativo Los tipos de datos simples o primitivos significan que no están compuestos de otras estructuras de datos; los más frecuentes y utilizados por casi todos los lenguajes son: enteros, reales y carácter (char). Los tipos de datos compuestos están construidos basados en tipos de datos primitivos; el ejemplo más representativo es la cadena (string) de caracteres. 2. Datos estructurados Internas Estáticas Arreglos Matrices Dinámicas Lineales (listas, pilas y colas) No lineales (árboles y grafos) Externas Bases de datos Archivos M.I. Bertha Evelia Torres Torres Carrera: Técnico en programador de software Módulo 2: Estructura los Datos Orientados a Objetos pag. 2 Los tipos de datos simples pueden ser organizados en diferentes estructuras de datos: estáticas y dinámicas. Las estructuras de datos estáticas son aquellas en las que el tamaño ocupado en memoria se define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa. Estas estructuras están implementadas en casi todos los lenguajes: array (vectores y matrices), registros, archivos y cadenas. Las estructuras de datos dinámicas no tienen las limitaciones o restricciones en el tamaño de memoria ocupada que son propias de las estructuras estáticas. Mediante el uso de un tipo de datos específico, denominado puntero, es posible construir estructuras de datos dinámicas que son soportadas por la mayoría de los lenguajes, y en aquellos que sí tienen estas características ofrecen soluciones eficaces y efectivas en la solución de problemas complejos. Las estructuras dinámicas por excelencia son las listas -enlazadas, pilas, colas-, árboles- binarios, árbol-b, de búsqueda binaria- y grafos. Una característica importante que diferencia a los tipos de datos es la siguiente: los tipos de datos simples tienen como característica común que cada variable representa a un elemento; los tipos de datos estructurados tienen como característica común que un identificador (nombre) puede representar múltiples datos individuales, pudiendo cada uno de éstos ser referenciado independientemente. Se caracteriza por el hecho de que con un nombre se hace referencia a un grupo de casillas de memoria. Es decir un dato estructurado tiene varios componentes. Estructura de datos estática: Arreglos Los arreglos son una colección de variables del mismo tipo que se referencian utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua. La dirección más baja corresponde al primer elemento y la más alta al último. Un arreglo puede tener una o varias dimensiones. Para acceder a un elemento en particular de un arreglo se usa un índice. El formato para declarar un arreglo unidimensional es: tipo nombre_arr [ tamaño ] El formato para declarar un arreglo con más de una dimensión es: tipo nombre_arr [ tam1 ][ tam2 ] ... [ tamN]; M.I. Bertha Evelia Torres Torres Carrera: Técnico en programador de software Módulo 2: Estructura los Datos Orientados a Objetos pag. 3 Estructura de datos estática: Matrices Una matriz es un vector de vectores o un también llamado array bidimensional. La manera de declarar una matriz es C++ es similar a un vector (es una estructura de datos que permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria juntos, uno después de otro): El formato para declarar una matriz unidimensional es: Tipo_dato nombre_matriz[rows][cols]; Estructura de datos dinámicas: Lineales (Listas, pilas y colas) y no lineales (árboles y grafos) Listas abiertas: cada elemento sólo dispone de un puntero, que apuntará al siguiente elemento de la lista o valdrá NULL si es el último elemento. Pilas: son un tipo especial de lista, conocidas como listas LIFO (Last In, First Out: el último en entrar es el primero en salir). Los elementos se "amontonan" o apilan, de modo que sólo el elemento que está encima de la pila puede ser leído, y sólo pueden añadirse elementos encima de la pila. Colas: otro tipo de listas, conocidas como listas FIFO (First In, First Out: El primero en entrar es el primero en salir). Los elementos se almacenan en fila, pero sólo pueden añadirse por un extremo y leerse por el otro. Árboles: cada elemento dispone de dos o más punteros, pero las referencias nunca son a elementos anteriores, de modo que la estructura se ramifica y crece igual que un árbol. Grafos: es el siguiente nivel de complejidad, podemos considerar estas estructuras como árboles no jerarquizados. M.I. Bertha Evelia Torres Torres Carrera: Técnico en programador de software