Beruflich Dokumente
Kultur Dokumente
- Tipos de datos
Concepto de dato
Un dato es una representación formalizada de entidades o hechos, adecuada para la
comunicación, interpretación y procesamiento por medios humanos o automáticos. Por
ejemplo, en una organización, existen empleados, muebles, etc. Para cada empleado,
hay un número de legajo; para cada mueble, hay un número de inventario, etc. Del
mismo modo, existen representaciones simbólicas de lo que sucede en una
organización. Por ejemplo, si se realiza una venta al contado, esa venta generará
datos como un número de factura, un importe percibido, etc.
Fuentes de Información
Cualquier elemento de datos puede participar en la generación de “partes” múltiples de
la información. Es importante su flexibilidad para que puedan ser agregados y
sumados de tal manera que pueda producirse información útil para apoyar las
decisiones oportunamente.
Los datos se deben estructurar correctamente para que sean accesibles y que sirvan
como respuesta a varios tipos de preguntas.
Tipos de datos
El recurso fundamental utilizado por un programa es la memoria. Es en la memoria
donde un programa almacena sus datos e instrucciones. Los datos se almacenan en
localizaciones en la memoria denominadas variables. Cada variable puede
almacenar un solo tipo de dato (entero, real, caracter, booleano, etc.) y requiere de un
identificador para poder tener acceso a su contenido.
1
Estructura de datos Unidad I.- Tipos de datos
Los datos son los objetos de información sobre los que actúa un programa. Un dato
puede ser un simple caracter como 'a', un valor entero tal como 35, un número real tal
como 2.345 o una cadena tal como "algoritmia".
A nivel máquina los datos se representan internamente como una secuencia de bits
(dígitos 0 y 1). Los lenguajes de alto nivel evitan estos manejos internos mediante el
concepto de tipo de dato.
2
Estructura de datos Unidad I.- Tipos de datos
El tamaño de una celda de almacenamiento es el número de partículas magnéticas
que la celda agrupa.
Bit
Byte
A ocho partículas ferromagnéticas u ocho bits se les conoce con el nombre de byte. El
tamaño del byte depende mucho de la arquitectura de la computadora y del sistema
operativo, ya que en otros países y en otras épocas ha variado su tamaño por la
cantidad de símbolos que necesitan representar.
Caracter
• ASCII: Cada caracter usa 8 bits = 1 byte. Contiene 28 = 256 caracteres. Usado
por MS-DOS.
• UNICODE: Cada carácter usa 16 bits = 2 bytes. Tiene 216 = 65,536 caracteres.
Usado por Windows.
3
Estructura de datos Unidad I.- Tipos de datos
Palabra o Word
Para el caso del tamaño de las celdas de memoria, otra unidad de medida aplicable es
“word” o “palabra” que significa 2 bytes o 16 bits.
Generalmente, las celdas de memoria tienen un tamaño de 1 byte, sin embargo, hay
computadoras que tienen celdas de memoria de 1 word.
Unidad Tamaño
1 Kilobyte (Kb) 1024 bytes 210 bytes
1 Megabyte (Mb) 1024 Kb 220 bytes
1 Gigabyte (Gb) 1024 Mb 230 bytes
1 Terabyte (Tb) 1024 Gb 240 bytes
1 Petabyte (Pb) 1024 Pb 250 bytes
1 Exabyte (Eb) 1024 Eb 260 bytes
1 Zettabyte (Zb) 1024 Zb 270 bytes
1 Yottabyte (Yb) 1024 Yb 280 bytes
1 Brontobyte (Bb) 1024 Bb 290 bytes
1 Geopbyte (Geb) 1024 Geb 2100 bytes
Tipos de
datos Arreglos (Vectores, Matrices,
Multidimensionales)
No primitivos, Registros
Estructurados, Archivos
Compuestos o Apuntadores o referencias
def. por el
usuario
4
Estructura de datos Unidad I.- Tipos de datos
Tipos simples o primitivos
Estándares:
Los científicos han resuelto este problema con una notación especial,
en la cual se usa un cierto número de dígitos de exactitud (o de
precisión), seguidos por la magnitud del número que se expresa como
una potencia de 10.
Por ejemplo, puede representar 3 863 213 632 con cuatro dígitos de
precisión en la forma 3.864 * 109.
3.864 * 109
Dígitos de magnitud
exactitud
5
Estructura de datos Unidad I.- Tipos de datos
3 863 213 632 * 100
0.0065 * 100
0.0065 = 6.5 * 10-3
Ejemplo:
“Materia Fundamentos de Programación”
“2004”
• Arreglos (Arrays): Los arreglos son una colección de variables del mismo
tipo (primitivas o estructuradas) que se referencían utilizando un nombre
común. Un arreglo puede tener una o varias dimensiones.
Ejemplos:
o Un tablero de ajedrez.
o El juego del gato.
o Un casillero de huevos.
6
Estructura de datos Unidad I.- Tipos de datos
o Un tablero de llaves de la recepción de un hotel, donde las filas
son los pisos y las columnas los números de cuarto.
o Una colonia, donde las filas son las manzanas y las columnas
ubican los lotes.
Ejemplos:
o Tomando como base el ejemplo de la colonia anterior, se podría
pensar agrupar varias colonias y así tener un arreglo tridimensional, donde el primer
índice se usa para ubicar a la colonia, el segundo a la manzana y el tercero al lote.
o Podemos pensar también en representar la estantería de un
supermercado con un arreglo de 3 dimensiones, donde la primera dimensión será
para ubicar el rack (productos para el hogar, comestibles, carnicería, ropa, etc), la
segunda al estante y la tercera, la posición del producto.
Manipulación de bits
Los sistemas operativos, el software para equipo de prueba, el software de red y otros,
requieren comunicarse “directamente con el hardware”. Para ello es necesario bajar al
llamado nivel de “bits y bytes”.
7
Estructura de datos Unidad I.- Tipos de datos
operandos son 1.
| OR inclusivo bit por El bit de resultado se pone en 1 si al menos uno de los
bit bits de los operandos es 1.
^ XOR, OR exclusivo El bit de resultado se pone en 1 si y solo si uno de los bits
correspondientes en al menos uno de los operandos es 1.
<< Desplazamiento a Desplaza los bits del primer operando a la izquierda, el
la izquierda núm. de bits especificado por el segundo operando. Se
rellena a la derecha con bits 0.
>> Desplazamiento a Desplaza los bits del primer operando a la derecha, el
la derecha con núm. de bits especificado por el segundo operando. Si el
extensión de signo primer operando es negativo, se introducen unos por la
izquierda; en caso contrario se introducen ceros por la
izquierda.
>>> Desplazamiento a Desplaza los bits del primer operando a la derecha, el
la derecha con núm. de bits especificado por el segundo operando. Se
extensión cero introducen ceros por la izquierda.
~ Complemento a Todos los bits 0 se ponen a 1 y todos los bits 1 se ponen a
unos. Operador 0.
unario.
a b a& a^ a| ~
b b b a
0 0 0 0 0 1
1 0 0 1 1 0
0 1 0 1 1 1
1 1 1 0 1 0
Representación de datos
Representación de enteros
8
Estructura de datos Unidad I.- Tipos de datos
1111 17 F 15
10000 20 10 16
Las operaciones en cada una de estas bases son análogas a la base 10. En esta base
por ejemplo, el número decimal 743.57 es calculado:
Los siguientes tipos de datos sin signo son usados en el lenguaje de programación C+
+:
• unsigned char (8 bits)
• unsigned short (16 bits)
• unsigned int (native machine size)
• unsigned long (machine dependent)
El número de bits para cada tipo depende de cada tipo de compilador, en la tabla 1 se
presentan los datos para el lenguaje java.
9
Estructura de datos Unidad I.- Tipos de datos
n−2
A ≡ a n −1 a n −2 a 0 Con valor de A = ( −1) an −1 ∑a k 2k a k ∈ { 0,1}
k =0
Un numero A, es negativo si y solo si a n −1 =1. El rango de números de n-bits en
notación con signo:
( )
− 2 n −1 −1 ≤ A ≤ 2 n −1 −1
Complemento a dos
Es usado por casi todas las computadoras para representar enteros positivos y
negativos. Un número A, en complemento a dos es representado:
n− 2
A ≡ a n −1 a n −2 a 0 Con un valor de A = ∑a k 2 k − a n −1 2 n −1 a k ∈ { 0,1}
k =0
Representación de Flotantes
Muchos estudiantes consideran que el ordenador puede trabajar con números con
cantidades de cifras infinitamente grandes. Este preconcepto es uno de los más
erróneos que se puede detectar en el alumno.
Todo ordenador cuenta con un número finito de Bytes para poder almacenar una cifra.
Este número puede ser de 1, 2, 4, 6, 8, 10 Bytes, pero nunca infinito. Por lo tanto solo
se podrá ingresar, procesar, almacenar y extraer un rango de valores. Por ejemplo
para números enteros se utiliza como máximo 4 Bytes (32 bits), siendo el rango de
representación entre -2147483648... 2147483647.
Coma Flotante
Este método nace de la necesidad de representar números reales o enteros con un
rango mayor que el dado por los otros métodos.
En su representación se utiliza la representación matemática
NO = mantisa * base exponente
Por ejemplo:
79436.54 = 0,7943654 * 105
A este proceso se lo denomina normalización.
Para simple precisión se utiliza 32 bits (4 Bytes), en el segundo caso 64 bits (8 Bytes).
(Todos los elementos en computación se comienzan a numerar por 0)
El esquema en ambos casos es como se ve abajo:
10
Estructura de datos Unidad I.- Tipos de datos
Ejemplos de Decimal a Flotante
57 a Flotante
1) Pasa 57 a Binario
57 ⇒ 111001
2) Se normaliza el binario
111001 ⇒ 0,111001 * 26
SP 10000110
DP 10000000110
1 8 23
En el caso de - 57
1 8 23
11
Estructura de datos Unidad I.- Tipos de datos
Paso a binario
0.13671875 ⇒ 0.00100011
Normalizo
0.001000112 ⇒ 0.1000112 *2-2
SP 01111110
Como el número es positivo, el bit de signo es 0.
El número queda estructurado de la siguiente manera:
12
Estructura de datos Unidad I.- Tipos de datos
SP 1 01111111110 100011
32 bits 64 bits
-0,13671875 BF460000 BFE8C00000000000
Los ceros a la izquierda no son representativos, pueden o no escribirse.
Este método de representación tiene sus rangos de representación los cuales no
incluyen el número 0 (cero). Se puede representar números muy próximos a 0 pero no
incluye este número.
El módulo mayor que se puede expresar en doble precisión es 1,710 * 10308, con una
precisión de 15 a 16 cifras. El número más próximo a cero será 1 * 10 -309. El módulo
mayor que se puede expresar en punto flotante (extended) es 1,10 * 104932.
Codificación alfanumérica
Cada vez que presionamos una tecla cualquiera en nuestra computadora, esta
convierte el carácter presionado en un conjunto bits. Para esta transformación se
utilizaron y se utilizan distintos códigos.
El primero fue un código de 6 bits denominado FIELDATA. Es código fue reemplazado
por el ASCII (American Standard Code for Information Interchange) que era un código
de 7 bits (tenía 128 caracteres posibles), luego aparece el EBCDIC que fue el primer
código de 8 bits por último aparece para el ambiente de PC el ASCII extendido que
también es de 8 bits (256 caracteres). Actualmente los modernos sistemas operativos
manejan el UNICODE de 16 bits (65,536 caracteres).
13
Estructura de datos Unidad I.- Tipos de datos
tratar de entender el problema para separar los detalles esenciales de los no
esenciales: Tratas de obtener tu propia perspectiva abstracta, o modelo, del problema.
Este proceso de modelado se llama abstracción y se ilustra en la Figura 2.
El modelo define una perspectiva abstracta del problema. Esto implica que el modelo
se enfoca solamente en aspectos relacionados con el problema y que tú tratas de
definir propiedades del problema. Estas propiedades incluyen
• nombre,
• tamaño,
• fecha de nacimiento,
• forma,
• número social,
• número de cuarto,
• color de pelo,
• pasatiempos.
Ciertamente que no todas estas propiedades son esenciales para resolver el problema
de la administración. Solamente algunas de ellas son específicas del problema. En
consecuencia, creas un modelo de un empleado para el problema. Este modelo solo
implica propiedades que son necesarias para cumplir con los requerimientos de la
administración, por ejemplo el nombre, fecha de nacimiento y el número social. A
estas propiedades se les llama los datos del modelo (de empleado). Ahora ya se
tienen descritas a las personas reales por medio de un empleado abstracto.
14
Estructura de datos Unidad I.- Tipos de datos
nuevo una vez que una persona ingrese a la institución. Consecuentemente, tienes
que identificar las operaciones que deberían ser posibles de ser ejecutadas en un
empleado abstracto. Decides también permitir el acceso a los datos del empleado
solamente por medio de operaciones asociadas. Esto te permite asegurarte que los
elementos de datos siempre estén en un estado apropiado. Por ejemplo, poder
verificar si una fecha provista es válida.
El ejemplo de la sección anterior muestra que por medio de la abstracción por lo tanto
se crea una entidad bien definida que puede ser adecuadamente manejada. Estas
entidades definen la estructura de datos de un conjunto de elementos. Por ejemplo,
cada empleado administrado tiene un nombre, fecha de nacimiento y número social.
La estructura de los datos puede ser accesada solamente por medio de operaciones
definidas. Este conjunto de operaciones es conocida como interface y es exportada
por la entidad. Una entidad con las propiedades recién descritas se conoce como un
tipo de datos abstracto (TDA).
Una vez que un nuevo empleado es "creado", la estructura de datos es llenada con los
valores reales. Ahora tú tienes una instancia de un empleado abstracto. Tú puedes
crear tantas instancias de un empleado abstracto como sea necesario para describir
cada una de las personas empleadas.
1. Exporta un tipo.
2. Exporta un conjunto de operaciones. Este conjunto es llamado interface.
3. Las operaciones de la interface son el único y exclusivo mecanismo de acceso a la
estructura de datos del TDA.
4 Axiomas y precondiciones definen el ámbito de aplicación del TDA.
15
Estructura de datos Unidad I.- Tipos de datos
Con la primera propiedad es posible crear más de una instancia de un TDA como se
pudo ver con el ejemplo de la administración de empleados
El Punto 3 de la definición del TDA dice que para cada acceso a la estructura de los
datos debe haber una operación definida. Los ejemplos de acceso de arriba parecen
contradecir este requisito. ¿Es esto realmente cierto?
Veamos otra vez las dos posibilidades para representar números complejos.
Pensemos únicamente en la parte real. En la primera versión, x es igual a c[0]. En la
segunda versión, x es igual a c.r. En ambos casos x es igual a "algo". Es este "algo" el
que difiere en la estructura de datos actual que se está usando. Pero en ambos casos,
la operación ejecutada "igual a" tiene el mismo significado para declarar que x es igual
a la parte real del número complejo c: ambos casos logran la misma semántica.
Una vez que has creado un TDA para números complejos, digamos Complex, tu
puedes usarlo de la misma manera que se usan los tipos de datos conocidos tales
como los enteros (integers).
Resumiendo: La separación de las estructuras de los datos y las operaciones por una
parte y la restricción de solamente accesar la estructura de los datos vía una bien
16
Estructura de datos Unidad I.- Tipos de datos
definida interface por la otra, te permite escoger estructuras de datos apropiadas para
el ambiente de la aplicación.
Los TDAs se usan para definir un nuevo tipo a partir del cuál se pueden crear
instancias. Algunas veces estas instancias deberían operar del mismo modo sobre
otros tipos de datos. Por ejemplo, uno puede pensar en listas de manzanas, carros o
aún listas. La definición semántica de una lista siempre es la misma. Solamente el tipo
de los elementos de datos cambia de acuerdo al tipo sobre el cuál debía operar la
lista.
Esta información adicional podría ser especificada por un parámetro genérico que es
especificado al momento de la creación de la instancia. Así, una instancia de un TDA
genérico es en la práctica una instancia de una variante particular del TDA. Una lista
de manzanas puede ser por lo tanto declarada como sigue:
List<Apple> listOfApples;
Los corchetes angulares encierran ahora el tipo de datos para el cuál una variante del
TDA genérico List sería creada. listOfApples ofrece la misma interface que cualquiera
otra lista, pero opera en instancias del tipo Apple.
Notación
Debido a que los TDAs proveen una perspectiva abstracta para describir propiedades
de conjuntos de entidades, su uso es independiente de un lenguaje de programación
en particular. Se presenta aquí por lo tanto una notación. Toda descripción de un TDA
consiste en dos partes:
• Datos: Esta parte describe la estructua de los datos usada en el TDA de una
manera informal.
• Operaciones: Esta parte describe las operaciones válidas para este TDA, por
lo tanto, describe su interface. Usamos la operación especial constructor para
describir las acciones que se van a ejecutar una vez que una entidad de este
TDA es creada y destructor para describir las acciones que se van a efectuar
cuando una entidad es destruída. Son dados para cada operación, los
argumentos provistos así como precondiciones y postcondiciones.
Se presenta como ejemplo la descripción del TDA Integer. Sea k una expresión
integer:
TDA Integer :
Datos
Una secuencia de dígitos que opcionalmente presentan como prefijo un signo
más o un signo menos. Nos referimos a este número entero con signo como N.
Operaciones
constructor
Crea un nuevo integer.
add(k)
Crea un nuevo integer, suma de N y k.
17
Estructura de datos Unidad I.- Tipos de datos
Por consecuencia, la postcondición de esta operación es sum = N+k. ¡No
confundir esto con los enunciados de asignación tal como se usan en los
lenguajes de programación! Es más bien una ecuación matemática que da
"verdadero" por cada valor sum, N y k después que add ha sido ejecutada.
sub(k)
Similar a add, esta operación crea un nuevo integer de la diferencia de ambos
valores integer. Por lo tanto la postcondición para esta operación es sum = N-k.
set(k)
Pone a N lo que vale k. La postcondición para esta operación es N = k.
...
end
La descripción de arriba es una especificación para el TDA Integer. Nótese por favor,
que usamos palabras para nombres de operaciones tales como "add". Podríamos
haber usado el signo "+", que es más intuitivo, pero ésto podría llevar a alguna
confusión: se debe distinguir la operación "+" de el uso matemático de "+" en la
postcondición. El nombre de la operación es solamente sintaxis ahí donde la
semántica se describe por las pre- y postcondiciones asociadas. Sin embargo, siempre
constituye una buena idea el combinar ambos para hacer que la lectura de las
especificaciones del TDA sea más fácil.
Los TDAs definen la funcionalidad al poner especial énfasis en los datos involucrados,
su estructura, operaciones, así como en axiomas y precondiciones.
Consecuentemente, la programación orientada a objetos es "programación con TDAs":
al combinar la funcionalidad de distintos TDAs para resolver un problema. Por lo tanto,
instancias (objetos) de TDAs (clases) son creados dinámicamente, usados y
destruídos.
Estructuras de 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 tipo de datos.
Las estructuras primitivas no están compuestas por otras estructuras de datos. Por
ejemplo los enteros, boléanos, y caracteres.
18
Estructura de datos Unidad I.- Tipos de datos
Las estructuras de datos simples se construyen a partir de estructuras primitivas y son:
cadenas, arreglos y registros. En la tabla 2 se encuentra resumidas las estructuras que
se pretenden cubrir a lo largo de este curso
Clasificación
19
Estructura de datos Unidad I.- Tipos de datos
Fuentes de información:
20