Story Transcript
TIPOS DE DATOS ELEMENTALES, DE ESTRUCTURAS Y ABSTRACTOS. • Datos objetos, variables y constantes. Un dato objeto que se define y se nombra explicitamente por el programador en un programa es llamado en forma habital, variable. Una variable simple es un dato objeto elemental con un nombre. Una constante, es un dato objeto con un nombre, el cual se liga a un valor (o valores) en forma permanente durante su tiempo de vida. Una literal (o constante literal) es una constante cuyo nombre es solo la representacion escrita de su valor. Una constante definida por el programador, es una constante cuyo nombre escoge el programador en una definicion del dato objeto. El dato objeto es mas general que el de variable o de constante, ya que los datos objeto no necesitan tener nombres ni ser creados explicitamente por el programador. • Especificaciones de datos elementales. Un dato objeto elemental contiene un valor simple. • Declaraciones. Una declaracion es una instruccion en un programa que sirve para comunicarse con la informacion del traductor del lenguaje a cerca del numero y tipo de los datos objeto que se necesitan durante la ejecucion de un programa. • Datos numericos. Algunas formas de datos numericos se encuentran en casi todos los lenguajes de programacion, pero los detalles de la especificacion e implementacion de tales tipos varia mucho, los tipos de numeros enteros y reales son mas comunes, porque estan directamente soportados en el hardware de la computadora. Las diferentes clases de datos numericos son: • Enteros. Un dato objeto de tipo entero no tiene otros atributos ademas de su tipo. La serie de valores enteros definidos por el tipo forman un subconjunto ordenado, dentro de los limites finitos del conjunto infirnito de enteros. • Reales de punto flotante. Un tipo de datos de numeros reales de punto flotante se especifica con el simple atributo del tipo de dato REAL. En forma alternativa, debe especificar el programador la precision requerida en los numeros de punto flotante, en terminos del numero de digitos utilizados en la represetacion decimal, como en Ada y en PL/I. • Otros tipos de datos numericos. • Numeros reales de punto fijo. Un numero de punto fijo se representa como una secuencia de digitos de longitud fija, con el punto decimal posicionado en un punto entre dos digitos. • Numero complejos. Un numero complejo consta de un par de numeros reales, que representan las partes reales e imaginarias de un numero. Un tipo de dato de numeros complejos puede ser proporcionado con facilidad, representando cada dato objeto como un bloque de dos locaciones de almacenamiento que contienen un par de valores reales. • Numeros racionales. Un numero racional es el cociente de dos enteros. La razon usual para incluir un tipo de dato de numeros racional en un lenguaje es evitar los problemas de redondeo y truncamiento que se encuentran en las representaciones de reales de punto fijo y punto flotante. Como resultado, se desea representar numeros racionales como pares de enteros de longitud ilimitada. • Caracteres. La mayoria de los datos entran y salen en forma de caracteres. Por lo regular se proporciona la 1
conversion a otros tipos de datos durante la entrada y salida, pero el proceso de algunos datos directamente en forma de caracteres tambien es importante. Las secuencias de caracteres (cadenas de caracteres) se presenta como una unidad. Las provisiones para datos en cadenas de caracteres pueden ser proporcionadas ya sea directamente a traves de un tipo de dato de cadena de caracteres (como en SNOBOL4 y PL/I) o a traves de un tipo de datos caracter, con una cadena de caracteres considerada como un arreglo lineal de caracteres (como en APL, Pascal, Ada, o C). • Enumeracion. Es comun en programacion tener una variable que puede tomar solo uno de un numero pequño de valores. Muchos lenguajes recientes como Pascal, Ada o C, incluye un tipo de datos de enumeracion que permite al programador definir y manipular esas variables en forma mas directa. • Boleanos. Un tipo de dato Booleano o logico es comun en la mayoria de los lenguajes. El tipo de dato booleano consiste en objetos de datos que tienen uno de los dos valores falso o verdadero. En pascal y en Ada, el tipo de dato booleano se considera simplemente una enumeracion definida por el lenguaje. • Implementacion de datos elementales. • Enumeracion. La representacion de almacenamiento para un dato objeto de un tipo de enumeracion es directa: cada valor en la secuencia de enumeraciones se representa en el tiempo de ejecucion por uno de los enteros 0,1,2,... Sin embargo como solo se incluyen una pequeña serie de valores y los valores nunca son negativos, la representacion habitual de valores se acorta para omitir el bit del signo y solo usa bits suficientes para el rango de valores requerido, como un valor de subrango. • Booleanos. La representacion de almacenamiento para un dato objeto booleano es simplemente un bit sencillo de almacenamiento, no se proporciona ningun descriptor que designe el tipo de dato necesario. Como los bits simles no pueden estar direccionados separadamente en la memoria, algunas veces se extiende esta representacion de almacenaje para que sea una unidad simple, direccionada tal como un byte o una palabra. Entonces los valores verdaderos y falsos pueden representarse en dos formas (0 = falso y 1 = verdadero). • Caracteres. Los valores de los datos caracter, son casi siempre soportados directamente por el hardware subyacente y el sistema operativo por su uso en la entrada−salida. Por lo regular la implementacion de un lenguaje emplea la misma representacion de almacenamiento para caracteres. • Especificacion e implementacion de tipos de estructuras de datos. • Declaraciones. Las declaraciones para las estructuras de datos son mas complejas que aquellas para datos objetos elementales, porque hay mas atributos que deben especificarse. El tiempo en el cual una declaracion aparece en un programa, determina con frecuencia el tiempo de vida del dato objeto declarado tambien. • Arreglos. 2
Los arreglos y vectores son los tipos mas comunes de estructuras de datos en los lenguajes de programacion. Un vector es una estructura de datos compuestas de un numero fijo de componentes del mismo tipo, organizado como una simple secuencia lienal. Un componente de un vector se selecciona dado su subindice, un entero (o valor de enumeracion) que indica la posicion del componente en la secuencia. Un vector tambien es llamado "Arreglo Unidimensioinal" o "Arreglo lineal". Un arreglo de dos dimensiones o matriz, tiene sus componentes organizados en una rejilla rectangular de renglones y columnas. Se necesita ambos, el subindice del renglon y el subindice de la columna, para seleccionar un componente de una matriz. • Registros. Una estructura de datos, compuesta de un numero fijo de componentes de diferentes tipos se llaman por lo regular registros. Ambos, registros y vectores, son formas de estructuras de datos lineales de longitud fija, pero los registros diferentes en dos formas: ♦ Los componentes de los registros pueden ser heterogeneos; por ejemplo, tipos de datos mixtos, mas que homogeneos. ♦ Los componentes de los registros se nombran con nombres simbolicos (identificadores), mas que con subindices enteros. ♦ Cadenas de caracteres. Una cadena de caracteres es un dato objeto de una secuencia de caracteres. Un tipo de cadena de caracteres es importante en la mayoria de lenguajes, debido en parte al uso de las representaciones de caracteres de datos para entrada y salida. ♦ Datos objetos y apuntadores dinamicos. Un tipo de dato elemental indicador (tambien llamado referencia, tipo de acceso o apuntador). Un dato objeto indicador contiene la localidad de otro dato objeto o el indicador nulo, nada (Null). Los indicadores son datos objeto que pueden ser simples variables o componentes de arreglos y registros. ♦ Conjuntos. Logicamente un conjunto puede considerarse como en matematicas: un conjunto es un dato objeto que tiene una coleccion desordenada de distintos valores. En cambio, una lista es una coleccion ordenada de valores, algunos de los cuales pueden repetirse. Las operaciones basicas sobre conjunto son: ◊ Prueba de pertenencia membresia. Es el valor del dato X un miembro del conjunto S? ◊ Insercion y supresion de valores simples. Inserte el valor del dato X en la serie S, a condicion de que no sea ya un miembro de S. Suprima al valor del dato X de S si es miembro. ◊ Union, interseccion y diferencia de conjuntos. Dados dos conjuntos, S1 y S2 cree el conjunto S3 que contiene a todos los miembros de ambos, S1 y S2 con supresiones duplicadas (operacion de union), cree S3 para que contenga solo los valores que son miembros de ambos S1 y S2 (operacion de interseccion) o ◊ cree S3 para que contenga solo los valores que hay en S1 pero no en S2 (operacion de diferiencia). ◊ Archivos. Un archivo es una estructura de datos con dos propiedades especiales: 3
⋅ Se representa principalmente sobre un dispositivo de almacenamiento secundario. ⋅ Su tiempo de vida puede comprender un mayor alcance de tiempo que el del programa que lo creo. Los archivos secuenciales son los mas comunes, pero muchos lenguajes tambien proporcionan archivos de acceso directo y archivos secuenciales indirectos. Se ven dos usos generales para los archivos: para entrada y salida de datos de un ambiente operativo externo y como un almacenamiento para borrar temporal para datos cuando no se dispone de suficiente memoria de alta velocidad. ◊ Tipos de datos abstractos (definidos por el programador). Un tipo de datos abstracto es un tipo de dato nuevo definido por el programador que incluye: ⋅ La definicion de un conjunto de datos objeto, que por lo regular usan una o mas definiciones de tipo. ⋅ La definicion de un conjunto de operaciones abstractas sobre aquellos datos objeto, que usan una o mas definiciones de subprogramas para definir cada operacion abstracta. ⋅ La encapsulacion de todo en tal forma que el usuario del tipo nuevo no puede manipular los datos objeto del tipo, excepto por el uso de la operacion definida. Abstracion de datos (esto es, el diseño de los datos objeto abstractos y de las operaciones sobre esos objetos) es una parte fundamental de la programacion. Los tipos de datos abstractos genéricos. Los tipos de datos primarios integrados en un lenguaje con frecuencia permiten al programador declarar el tipo basico de una nueva clase de datos objeto y despues especificar varios atributos de los datos objeto.
4