Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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)
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?
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
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
10
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
12
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;
15
16
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
22