0% encontró este documento útil (0 votos)
29 vistas22 páginas

Tipos de Datos

Una descripcion breve sobre los tipos de datos en programacion

Cargado por

odcardozo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
29 vistas22 páginas

Tipos de Datos

Una descripcion breve sobre los tipos de datos en programacion

Cargado por

odcardozo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 22

Datos escalares y compuestos

Seccin 5.1-5.3

Objeto de datos
Objetos de datos escalares:
Numrico (Integers, Real)
Bolanos
Caracteres
Enumeraciones
Objetos compuestos:
Cadenas (String)
Puntero (Pointer)
Objetos estructurados:
Arreglos (Arrays)
Registros (Records)
Listas (Lists)
Conjuntos (Sets)

Tipos de datos
abstractos:
Clases
Objetos activos:
Tareas (Tasks)
Procesos (Processes)

Unin de objetos de datos


Un compilador crea dos clases de objetos:
Posiciones de memoria
Valores numricos
Una variable es la unin (binding) de un nombre con una
posicin de memoria:
Contenido de la posicin puede cambiar

Tipos de datos
Cada objeto de datos tiene un tipo:
Valores: para objetos de ese tipo
Operaciones: para objetos de ese tipo
Implementacin: (Representacin de almacenamiento) para
objetos de ese tipo
Atributos: (p.eje. nombre) para objetos de ese tipo
Firma: (de operaciones de f): f: tipo x tipo
tipo

L-value y R-value
Posicin de un objeto es
su L-value. Contenidos de
esa posicin es su R-value.
Porque los nombres L-value y R-value?
Considere ejecutar: A = B + C;
1. Coja el contenido de posicin B
2. Sume el contenido de posicin C
3. Almacene el resultado en la direccin A.
Para cada objeto nombrado, su posicin en el lado
derecho del operador de asignacin (=) es un acceso al
contenido de , y su posicin en el lado izquierdo del
operador de asignacin es el acceso a la direccin de.
direccin de entonces es un L-value
Contenido de entonces es un R-value
Valor, por si solo, generalmente significa Rvalue
5

Subtipos
A es un subtipo de B si todo valor de A es un valor de
B.
Nota: In C casi todo es un subtipo de integer.
Conversin entre tipos:
Dado dos variables A y B, cuando es A:=B legal?

Explicito: Todas las conversiones entre diferentes


tipos debe ser especificado
Implcito: Algunas conversiones entre diferentes tipos
estn implcitas en la definicin del lenguaje.

Ejemplos de coercin
Ejemplos en Pascal:
var A: real;
B: integer;
A := B - Implcito, denominado una coercin una
conversin automtica de un tipo a otro tipo
A := B es llamada ampliacin (widening) por cuanto el
tipo A tiene ms valores que B.
B := A (si fuera permitido) sera llamado contraccin
(narrowing) ya que B tiene menos valores que A.
Informacin se pierde en este caso.
En la mayora de los lenguajes se permite coercin de
ampliacin;
Coerciones de contraccin deben ser explicitas:
B := round(A); El entero ms cercano a A
B := trunc(A); Borrar la parte fraccional de A

Datos nmericos enteros

Enteros:
Representacin binaria
en aritmtica de
complemento a 2
Para palabras de 32-bits:
Valor mximo:
231-1
Valor mnimo:
-231
Valores positivos Valores Negativos

Datos numricos reales


Float (real): representacin de hardware

Exponentes usualmente desplazados


ejemplo, si 8 bits (256 valores)+128 sumados al
exponente
exponente de 128 = 128-128 = 0 es el verdadero
exponente
exponente de 129 = 129-128 = 1 es el verdadero
exponente
exponente de 120 = 120-128 = -8 es el exponente
9

Formato de punto flotante IEEE


IEEE standard 754 especifica 32- y 64-bit standard.
Nmeros consisten de tres campos:
S: campo de bit de signo. 0 es positivo.
E: exponente en notacin de exceso de -127. Valores (8
bits) van de 0 a 255, correspondiendo a exponentes de
2 que van de -127 a 128.
M: mantisa de 23 bits. Debido a que el primer bit de la
mantisa en un nmero normalizado es 1, puede ser
omitido e insertado automticamente por el hardware,
dando un 24avo bit adicional de precisin.

10

Decodificacin del formato


Dado E, y M, el valor de la representacin es:

Parmetros
E=255 y M

E=255 y M = 0
0<E<255
E=0 y M
0
E=0 y M=0

Valor
Un nmero invalido
2{E-127}(1.M)
2 {-126}.M
0

11

Ejemplo de nmero de punto flotante


+1= 20*1= 2{127-127}*(1).0 (binario)
0 01111111 000000...
+1.5= 20*1.5= 2{127-127}*(1).1 (binario) 0 01111111 100000...
-5= -22*1.25= 2{129-127}*(1).01 (binario)1 10000001 010000...
Esto da un rango desde 10-38 a 1038.
En formato de 64 bits,el exponente es extendido a 11
bits dando un rango desde -1022 a +1023, con nmeros en
el rango de 10-308 a 10308.

12

Otros datos numricos


Entero corto (C) - 16 bit, 8 bit
Entero largo (C) - 64 bit
Booleano o lgico - 1 bit con valor verdadero o falso
Byte - 8 bits

Carcter Un byte - 256 caracteres


ASCII es un cdigo de 7 bits 128 caracteres
En C, una variable tipo char es simplemente un dato
numrico entero de 8 bits

13

Enumeraciones
typedef enum cosas {A, B, C, D } NuevoTipo;
Implementado como enteros pequeos con valores:
A = 0, B = 1, C = 2, D = 3
NuevoTipo X, Y, Z;
X = A
Por que no escribir: X=0 en vez de
Facilidad de lectura
Deteccin de error

X=A?

Ejemplo:
enum { electrica, mecanica, maritima, geologia}
ClaseFacultad;
enum { viejo,nuevo } CalidadPan;
CalidadPan = fresco;

Un error que puede ser detectado


14

Declarando datos decimales


Decimal fijo en PL/I y COBOL (Para aplicaciones financieras)
DECLARE X FIXED DECIMAL(p,q);
p = nmero de dgitos decimales
q = nmero de dgitos en la fraccin
Ejemplo de decimal fijo en PL/I:

DECLARE X FIXED DECIMAL (5,3),


Y FIXED DECIMAL (6,2),
Z FIXED DECIMAL (6,1);
X = 12.345;
Y = 9876.54;

15

Usando datos decimales


Que es Z=X+Y?:
Realizando la operacin manualmente, alineamos el punto
decimal y sumamos:
0012.345
9876.540
9888.885 = FIXED DECIMAL(8,3)

p=8 debido a que al sumar dos nmeros de 4 dgitos puede dar


un resultado de 5 dgitos y se necesitan 3 lugares para la
parte fraccional.
p=8 y q=3 es conocido antes de la suma
Conocido durante la compilacin - No se requiere pruebas
en ejecucin.

16

Implementando datos decimales


Algoritmo:
1. Almacene cada nmero como un entero (12345, 987654)
El compilador conoce el factor de escala (S=3 para
X, S=2 para Y).
Valores verdaderos impresos dividiendo el entero
almacenado por 10S
2. Para sumar, alinee el punto decimal. Ajuste S en 1
multiplicando por 10.

3. 10*Y+X = 9876540 + 12345 = 9888885, Compilador


conoce S=3
4. S=1 para Z, por lo que se necesita ajustar S en la
suma en 2; divida por 102 (98888)
5. Almacene 98888 en Z. Compilador conoce S=1
Nota: S nunca aparece en memoria y no hay perdida de
exactitud al almacenar datos como enteros.
17

Datos compuestos
Cadena de caracteres: Objeto primitivo hecho de datos
de caracteres ms primitivos.
Longitud fija:
char A(10) - C
DCL B CHAR(10) - PL/I
var C packed array [1..10] of char - Pascal

Longitud variable:
DCL D CHAR(20) VARYING - PL/I - 0 a 20 caracteres
E = ABC - SNOBOL4 cualquier tamao, dinmico
F = `ABCDEFG\0' - C cualquier tamao, definido por
el programador

18

Implementacin de cadenas

19

Operaciones en cadenas
En C, arreglos y cadenas de caracteres son lo mismo.
Implementacin:
L-value(A[I]) = L-value(A[0]) + I

20

Punteros
Uso de punteros para crear estructuras de datos
arbitrarios
Cada puntero puede apuntar a un objeto de otra
estructura de datos
De manera general es muy tendiente a errores y debe ser
evitado

21

Asignacin con punteros

22

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy