124 Estructuras de datos 6.0.4 Clasificación de las estructuras de datos Uno de los criterios por los que se puede clasificar las estructuras de datos organizadas en memoria principal, tiene que ver con la posibilidad o no de variar su tamaño en algún paso del algoritmo. - Estructuras estáticas: conservan su tamaño, desde que empieza hasta que termina el al- goritmo que las usa. El espacio que ocupan en memoria se fija antes que se ejecuten las acciones y no existe ninguna, que le pueda ordenar al procesador alterar la cantidad de componentes, se los use o no. El tamaño de las estructuras estáticas no puede modificarse una vez definida, aunque no necesariamente tiene que utilizarse toda la memoria reservada al inicio. Hay distintas estructuras estáticas, cada una de las cuales responde a un formato general específi- co. Vamos a estudiar algunas de ellas, que son usadas en todos los lenguajes de programación: Registro, Arreglo y Cadena.- Estructuras dinámicas o flexibles: su tamaño puede crecer o decrecer, durante la ejecución del algoritmo que las usa. El espacio que ocupan en memoria NO puede ser predeterminado, depende de lo que se vaya necesitando para satisfacer los requerim- ientos de la aplicación. Estas estructuras pueden soportar acciones especiales que, durante la ejecución, permiten disponer de memoria adicional para ella o, por el contrario liberar la que se le haya asignado. El tamaño de las estructuras dinámicas podrá modificarse; teóricamente no hay límites a su tamaño, salvo el que impone la memoria disponible en la computadora. Entre estas estructuras podemos mencionar: Lista, Árbol, Grafo, etc. Las estructuras de datos pueden ser clasificadas también, atendiendo al tipo de dato de sus componentes. - Estructuras homogéneas: organizan un conjunto de datos de igual tipo. Entre éstas encon- tramos a los Arreglos y a las Cadenas (string). Las podemos imaginar y representar gráficamente con cualquiera de los siguientes esquemas: - Estructuras heterogéneas: organizan un conjunto de datos de distinto tipo. Entre éstas en- contramos a los Registros. Las podemos imaginar y representar gráficamente con el siguiente esquema:
125 Tipo de dato estructurado Los lenguajes de alto nivel, para solucionar el problema de las distintas representaciones internas de valores y de la organización de los datos correspondientes, nos brindan la posibilidad de encuadrar los datos a procesar en un modelo preestablecido. En un sentido amplio, esto implica imponer restricciones referidas a qué valores pueden tomar los datos, qué operaciones se pueden realizar y qué propiedades los caracterizan. Por ejemplo: al declarar una variable M numérica, se está determinando de qué forma se almacenarán sus posibles valores en cuanto a cantidad de bytes y a la disposición de los bits en ellos (sea según la notación en punto fijo o en punto flotante) y se está definiendo que la suma y la resta, entre otras, son operaciones a las que se podrán someter los valores de M, no así la concatenación, pues no está definida para los números. Así es como los lenguajes definen a los tipos de datos. Casi todos incluyen en forma explícita, una determinada notación para los distintos tipos correspondientes a datos simples, aunque no todos usan la misma sintaxis (son los llamados tipos fundamentales, primitivos o estándares).Por otro lado, estos mismos lenguajes, permiten al programador “inventar” tipos de datos adicionales, normalmente combinando múltiples elementos de otros tipos. Se los denominan en forma genérica como tipos de datos definidos por el usuario.Tradicionalmente, bajo esta denominación los lenguajes tienen a una herramienta apropiada solamente para definir nuevos sistemas de almacenamiento. No llegan a crear realmente, en toda su magnitud, un nuevo tipo de dato, aunque así se los nombre, ya que estos lenguajes no cuentan con mecanismos que permitan definir algún conjunto de operaciones a realizar con los valores del nuevo tipo. Por ejemplo: al declarar una variable Z de un tipo especial previamente definido, solamente se está determinando de qué forma se almacenarán los posibles valores de cada uno de sus componentes y no se está previendo ninguna operación para Z como conjunto.Si bien, actualmente los lenguajes contemplan la posibilidad de definir tipos de datos de una forma más completa, pues incluyen el sistema de almacenamiento y las operaciones asociadas, en este libro trataremos sólo la forma tradicional.Siendo las estructuras de datos un mecanismo sumamente útil para almacenar y procesar conjuntos de datos en la memoria principal, resultan completamente apropiadas para implementar con ellas algunos de estos tipos de datos particulares, especialmente diseñados para la aplicación que se esté realizando. Se trata del denominado tipo de dato estructurado o compuesto. Un tipo de dato estructurado o compuesto es una forma general de describir bajo un único nombre, a una estructura particular, pudiendo representar con él, a un lugar de memoria capaz de alojar un conjunto de valores Recordemos que, recién cuando se declara una variable se está identificando al lugar de memoria que puede almacenar valores con determinadas características.Entonces, si al diseñar la solución de un determinado problema, hubiera que manipular algún dato estructurado, habría que: 1 o definir la estructura adecuada, identificándola como un tipo especial mediante un nombre particular. Por ejemplo: registro R, registro dat, cadena meses, arreglo LOS, etc. y se describirán sus componentes
Created with BuildVu