1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección...
-
Upload
elvira-abar -
Category
Documents
-
view
219 -
download
0
Transcript of 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección...
![Page 1: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/1.jpg)
1
4. TIPOS DE DATOS
![Page 2: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/2.jpg)
2
Conceptos Básicos
Un tipo de dato es:
un conjunto de objetos
una colección de operaciones
con
Tipo elemental. Valores constantes
Tipo estructurado. Compuestos
![Page 3: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/3.jpg)
3
Estructura de Tipos
La estructura de los tipos de datos en un lenguaje la determinan dos componentes
Equivalencia
Conversión
![Page 4: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/4.jpg)
4
Equivalencia
Criterio con el cual se decide que dos objetos son del mismo tipo
Equivalencia
Nominal
Estructural
Los tipos de los dos objetos tienen el mismo nombre
Los dos objetos tienen la misma estructura
C++, Pascal, Ada
C
![Page 5: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/5.jpg)
5
Ejemplo
Type E = integer; A = array[1..10] of
integer;Var x1 : integer; x2 : integer; x3 : E; v1 : array [1..10] of
integer; v2 : A; v3 : A;
Equivalencia nominal
x1 eqN x2
v2 eqN v3Equivalencia estructural
x1 eqE x2 eqE x3
v1 eqE v2 eqE v3
NOTA:
El tipo de v1 es anónimo
![Page 6: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/6.jpg)
6
Ejemplo Program Ejemplo; Type Vector1= Array[1..10] of Real; Vector2= array[1..10] of Real;Var X,Z : Vector1; Y : Vector2; Procedure Rutina(A: Vector1); : End;Begin X:= Y; Rutina(Y);End.
Error!! en eq. nominal Permitido en eq.
estructural
![Page 7: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/7.jpg)
7
Conversión
Transformar la representación interna de un r-valor
representación| interna del respectivo l-valor.
según
La conversiónCoerción (Implícita)
Casting (Explícita)
![Page 8: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/8.jpg)
8
Coerción
Conversión de dato IMPLÍCITA, que depende del contexto
Al efectuar una asignación
Al evaluar una expresiónPASCAL
Var Z,X: Real;
Y: Integer;
X:= Y;
Z:= X+3;
FORTRAN
R=I
![Page 9: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/9.jpg)
9
Coerción
PL/1 provee una conversión implícita entre TODOS los tipos elementales
• Caracter
• Real
• bit
Real
Integer
Caracter
En general, los LP proveen conversión de tipos entre tipos escalares y no entre tipos estructurados o definidos por el usuario.
![Page 10: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/10.jpg)
10
Casting
Conversión de tipo de dato EXPLÍCITA, utilizando operadores.
En C:
• (int)x
• (float)y
![Page 11: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/11.jpg)
11
Ejemplo
float p, q;int s, n;s = 5;n = 2;p = s/n; /* coerción */q = (float)s/n; /* casting */printf(%f %f \n, p, q); p: 2.0
q: 2.5
![Page 12: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/12.jpg)
12
Ejemplo
float x,y,z;int i=5,j=2,k=4;x = i/k;y = i/(float)j;z= (float)i/k;printf(%f %f \n, x,
y,z);
x=5/4 = 1 x=1.0 coercióny=5/2.0 = 5.0/2.0 y=2.5 casting coerción
z=5.0/4 = 5.0/4.0 z=1.25 castingcoerción
![Page 13: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/13.jpg)
13
Comprobación de Tipos
Acción de verificar la consistencia entre: un l-valor y un r-valor.
en cada operación a ejecutarse.
La representación de datos NO incluye información sobre el tipo de dato.
Recepción de: Cantidad apropiada de
parámetros. y del tipo apropiado.
![Page 14: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/14.jpg)
14
Comprobación de Tipos
EstáticaLP fuertemente tipados
DinámicaLP débilmente tipados
Comprobación
![Page 15: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/15.jpg)
15
Comprobación estática
Tiempo de compilación
Generación de la tabla de símbolos
Gran % de comprobación antes de la ejecución.
Ejecución más segura y eficiente.
![Page 16: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/16.jpg)
16
Comprobación dinámica
Tiempo de ejecución
No se requiere declaración ni se asume tipo.
El tipo de dato de un objeto puede variar durante la ejecución.
Su implementación sugiere utilizar una "marca" que indique su tipo. Mayor espacio de almacenamiento.
Programas más flexibles.
Mayor tiempo de ejecución. Comprobar el tipo antes de ejecutar. Código generado por el compilador.
![Page 17: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/17.jpg)
17
Comprobación dinámica
El compilador generará código para: ALMACENAR información del tipo de dato
del objeto
CONSULTAR la información alamcenada sobre los objeto durante la ejecución
COMPROBAR los valores que se van obteniendo durante la ejecución.
![Page 18: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/18.jpg)
18
Comprobación dinámica
Casi NO existen lenguajes de programación en los que TODAS las comprobaciones de tipo se realicen durante la compilación
![Page 19: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/19.jpg)
19
Ejemplo
Type rango = 1..100;Var k, n : rango; ··· n := 2*k + 1;
El valor a asignar sólo se puede comprobar en tiempo de ejecución
![Page 20: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/20.jpg)
20
Ejemplo
x:= F(x) + Z;
El compilador comprobará que:
X sea del tipo de dato del parámetro formal de F
El tipo de dato de F y de Z deben coincidir o ser compatibles
El tipo de dato de la operación coincida o sea compatible con el de X
![Page 21: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/21.jpg)
21
Tipos Estructurados de Datos
Modelos de Definición
![Page 22: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/22.jpg)
22
Producto Cartesiano
El producto cartesiano de n conjuntos C1, C2, C3... Cn, denotado en la forma
C1 x C2 x ... x Cn
es un conjunto cuyos elementos son n-túplas
(c1, c2, ... cn) con ci Ci.
![Page 23: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/23.jpg)
23
Producto Cartesiano
productos cartesianos
registros o estructuras
struct persona
{ char nombre[15];
int edad;
}
![Page 24: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/24.jpg)
24
Ejemplos
Los polígonos regulares se pueden caracterizar por:
Un número entero que representa el numero de lados, y
Un número real que representa la longitud de un lado.
![Page 25: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/25.jpg)
25
Ejemplos
Todo polígono regular así expresado (3,12.5) es un elemento del producto cartesiano
Z x R
Typepol_reg = record
num_lados: integer; longitud: real
end;
![Page 26: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/26.jpg)
26
Aplicación Finita
Es una función de un conjunto de valores pertenecientes a un dominio D sobre un conjunto de valores pertenecientes a una imagen I.
F : D I
![Page 27: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/27.jpg)
27
Aplicación Finita
Aplicación del subrango de enteros 1...5 sobre los números reales.
A[k] k : 1..5
A: array [1..5] of real;
aplicaciones finitas
arreglos
un objeto del conjunto imagen
![Page 28: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/28.jpg)
28
Estrategias de los lenguajes para ligar el dominio de la función a un subconjunto específico de valores: Estática Semidinámica Dinámica
Aplicación Finita
![Page 29: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/29.jpg)
29
El subconjunto se determina en tiempo de compilación.
Pascal :
Lista = array [1..5] of real;
Estrategia estática
C :
typedef float Lista[5];
![Page 30: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/30.jpg)
30
El subconjunto se determina en tiempo de creación del objeto.
En Algol :
[m : n] int A;
declara un arreglo semidinámico cuyo espacio en memoria se asigna de acuerdo a los valores actuales de m y n y permanece mientras A exista en el ambiente en el que fue definido.
Estrategia semidinámica
![Page 31: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/31.jpg)
31
El subconjunto puede cambiar en cualquier instante de la existencia del objeto.
En Algol :
flex [1: 0] int B;
declara un arreglo vacío, de modo que,
B:= (2, 3, 8) cambia sus límites a [1:3]
Estrategia dinámica
![Page 32: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/32.jpg)
32
Unión Discriminada
Extensión del producto cartesiano.
Permite, en cualquier instante de la ejecución del código al que pertenece, la elección de una entre diferentes estructuras alternativas :
Variante : estructura alternativa
Discriminante: Campo selector
![Page 33: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/33.jpg)
33
Unión Discriminada
Parte Variante
Parte Fija
![Page 34: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/34.jpg)
34
Ejemplo
Pascal :type
reg_var = recordCampo1 : integer;case atomo : boolean of
true : info1 : real;
false : info2 : char end;
![Page 35: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/35.jpg)
35
Conjunto Potencia
Permite definir variables cuyo valor puede ser cualquier subconjunto de un conjunto de elementos de un determinado tipo T.
El tipo de las variables, tipo base, es:
El conjunto de todos los subconjuntos de elementos de tipo T
Si T = {a, b, c}
P (T) = {, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}} #(P (T)) = 2#(T) = 23 = 8
![Page 36: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/36.jpg)
36
Modelos de Construcción
Criterios a considerar en la elección de representaciones de almacenamiento :
Selección eficiente de componentes de una estructura de datos.
Gestión global eficiente del almacenamiento para la implementación del lenguaje.
![Page 37: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/37.jpg)
37
Constituyen una técnica de representación interna de objetos de dato.
Formado por un par consistente en : Descriptor (Conjunto de atributos de la
estructura) Objeto (almacenamiento para los componentes)
Modelos de Construcción
![Page 38: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/38.jpg)
38
Tipos Elementales
Enteros
Constituyen una abstracción de una implementación Hw.
No tienen otros atributos, además de su tipo. Su implementación más común, es usar una
representación definida por el Hw, y un conjunto de aritmética de Hw y operaciones primitivas relacionales sobre enteros.
Normalmente, esta representación usa una palabra de memoria (o serie de bytes) completa para guardar un entero.
![Page 39: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/39.jpg)
39
Representación
1. Sin descriptor. (C – FORTRAN)
110111
Entero binario
Bit de signo
Sólo se guarda el valor Representación posible si el lenguaje
provee declaraciones y verificación estática de tipos.
![Page 40: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/40.jpg)
40
2. Descriptor guardado en una palabra independiente. ( Lisp)
Lo guarda en una localidad de memoria separada, con un puntero al valor entero de la “palabra completa”.
Desventaja: puede duplicar el almacenamiento requerido para un objeto de datos entero individual.
Ventaja: el valor se guarda usando la representación dada por el Hw; esto permite usar operaciones aritméticas de Hw.
Representación
![Page 41: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/41.jpg)
41
Gráficamente:
I
Descriptor
Bit de signo
Entero binario
:
Objeto
Representación
![Page 42: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/42.jpg)
42
3. Descriptor guardado en la misma palabra.
Guarda el descriptor y el valor en una localidad de memoria.
Acorta el tamaño del entero para dar espacio para el descriptor.
Se conserva el almacenamiento, pero las operaciones aritméticas del Hw no se pueden usar, sin antes:
despejar el descriptor del objeto de datos entero,
ejecutar la aritmética y reinsertar luego el descriptor.
Representación
![Page 43: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/43.jpg)
43
Gráficamente:Descript
or de tipo
Bit de signo
Entero binario
I
Ejecutar una serie de instrucciones de Hw para una operación aritmética ==> aritmética ineficiente.
Forma práctica sólo para descriptores de tipo implementados por el Hw, no son comunes actualmente.
Representación
![Page 44: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/44.jpg)
44
Representación
Cantidad de direcciones de memoria que requiere un objeto para su almacenamiento.
Word = 4 byte
T=1
Objeto
Word = 2 byte
T=1
Objeto
Objeto
:
Word = 1 byte
T=2
wordladeTamañoTipoTamaño
ObjetoTamaño)(
)(
![Page 45: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/45.jpg)
45
Signo Magnitud
0 15
Posibles representaciones para un entero
Ejemplo: Entero (2 bytes) int a;
Objeto
Descriptor
Dir. Base
enteroTipo
aNombre
Representación
![Page 46: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/46.jpg)
46
Este modelo emula la notación científica: cualquier número se puede expresar como
N = m * 2k; 0 < m < 1; k Z
Tamaño: 4 Byte; norma 754 IEEE
Para reales de doble precisión en punto flotante, se usa una palabra adicional de memoria para guardar una mantisa extendida.
Tipos Elementales
Reales (punto flotante)
![Page 47: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/47.jpg)
47
Signo exponente mantisa
0 1 8 31
Dígitos significativos del
número
S E M
Representación
Gráficamente:
![Page 48: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/48.jpg)
48
Los números se componen de 3 campos :
S un campo de signo de un bit ( 0 es positivo)
E un exponente en notación de exceso. Los valores (8 bits) varían entre 0 y 255, correspondientes a exponentes de 2 que van de –127 a 128.
M una mantisa de 23 bits. Con esto se obtiene un intervalo de 10-38 a 1038.
En formato de 64 bits, el exponente se amplía a 11 bits, para dar un intervalo de –1022 a +1023, lo que da números en el intervalo de 10-308 a 10308.
Representación
![Page 49: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/49.jpg)
49
Bit de signo de exponente Exponente
Bit de signo Mantisa
Punto raíz implícito
000001 110000000 0
Representación del real 1.5 :
Representación
![Page 50: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/50.jpg)
50
Parámetros Valor
E = 255 y M 0
Número no válido.
E = 255 y M = 0
0 < E < 255 2E-127 (1.M)
E = 0 y M 0
2-126.M
E = 0 y M = 0
0
Dados E y M, el valor de representación es :
Representación
![Page 51: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/51.jpg)
51
Ejemplos
+1 = 20 x 1 = 2127-127 x (1).0 (binario) 0 01111111 000000...
+1.5 = 20 x 1.5 = 2127-127 x (1).1 (binario)
0 01111111 100000...
-5 = -22 x 1.25 = 2129-127 x (1).01 (binario)
1 10000001 010000...
32 bits
![Page 52: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/52.jpg)
52
Ejemplo: Real (4 Byte; norma 754 IEEE)
float x;
Objeto
:
DescriptorNombre: x
Tipo RealDir Base
Representación
![Page 53: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/53.jpg)
53
Objeto
:
Word = 4B
T=1
Objeto
:
Word = 2B
T=2
Word = 1B
T=4
:
Objeto
wordladeTamañoTipoTamaño
ObjetoTamaño)(
)(
Representación
Cantidad de direcciones de memoria que requiere un objeto para su almacenamiento.
![Page 54: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/54.jpg)
54
Secuencial. La estructura de datos se guarda en un bloque contiguo de almacenamiento, que incluye el descriptor y los componentes.
Un apuntador del bloque A al bloque B, “vínculo”, se representa guardando la dirección de la primera localidad del bloque B en una localidad reservada para ese fin en el bloque A.
Vinculado. La estructura de datos se guarda en varios bloques no contiguos, con los bloques vinculados entre sí a través de apuntadores.
Tipos Estructurados
![Page 55: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/55.jpg)
55
Componente
Componente
Componente
Componente
Componente
.
.
.
Descriptor
Componente
Componente
Componente
......
Secuencial Vinculada
vínculo
Tipos Estructurados
![Page 56: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/56.jpg)
56
Secuencial:
• Se usan para estructuras de tamaño fijo.
• Ocasionalmente en estructuras homogéneas de tamaño variable.
Ejemplo : registros, vectores, strings, etc.
Ejemplo : listas enlazadas.
Tipos Estructurados
Vinculada:
• Se usan para estructuras de tamaño variable.
![Page 57: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/57.jpg)
57
• Las memorias se estructuran como una serie de bytes.
• Ausencia de operaciones de hardware para acceso a componentes.
Simular a través de software las estructuras de datos y las operaciones que trabajan con estructuras de datos.
• Tipos elementales de datos, representación de almacenamiento y operaciones son manejadas por hardware.
Tipos Estructurados
![Page 58: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/58.jpg)
58
Cantidad de direcciones de memoria que requiere un objeto para su almacenamiento.
El tamaño de un Objeto de Dato dependerá de:
Tipo de dato del objeto
Tamaño de la palabra
wordladeTamañoTipoTamaño
ObjetoTamaño)(
)(
Representación
![Page 59: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/59.jpg)
59
Los modelos de representación deben considerar fórmulas de acceso para alcanzar las componentes de tipos agregados de datos.
referencias lógicasdirecciones
relativasdirecciones absolutas
referencias físicas
Una fórmula de acceso es una función que transforma, a partir de los atributos contenidos en el descriptor:
Representación
![Page 60: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/60.jpg)
60
Tipos Estructurados de Datos
Modelos de Representación
![Page 61: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/61.jpg)
61
Producto Cartesiano
Var reg : record
a : integer; b : real
end;
Modalidad Pascal
![Page 62: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/62.jpg)
62
Producto Cartesiano
Descriptor
Objeto : a
b
Nombre reg
Constructor record
Selector 1 a
Tipo Selector 1 integer
Tamaño Selector 1 t1
Dirección relativa Selector 1 K1 = 0
Selector 2 b
Tipo Selector 2 real
Tamaño Selector 2 t2
Dirección relativa Selector 2 K2
Dirección Base
![Page 63: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/63.jpg)
63
1
1
).(i
kki tSRDir
Fórmula de acceso Dirección absoluta de memoria donde se encuentra el i-ésimo selector del registro R.
donde
es la dirección base de R, resuelta en tiempo de carga, y
tk el tamaño del k-ésimo selector.
:
Objeto
Producto Cartesiano
![Page 64: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/64.jpg)
64
Sin embargo, la expresión
se resuelve en tiempo de traducción. Luego,
con
i - 1
tkk = 1
i - 1
tkk = 1
= y = 0, constantes
Producto Cartesiano
ii kSRDir ).(
ik 1k
![Page 65: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/65.jpg)
65
Ejercicio
a) Defina las declarativas en Pascal y en C.
b) Describa una fómula de acceso a una componente del registro r
c) Determine la dirección absoluta del campo g del registro r, si la dirección base es 1000 y la word =1
int
float
char
int
boolean float
float
puntero
int
a b c d e f g h j
r:
Dada la siguiente estructura:
![Page 66: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/66.jpg)
66
a) Pascal :
type
puntero = ^real;
estructura = recorda, d, j : integer;b, f, g : real; c : char ; e :
boolean ; h :
puntero end;
a) C :
typedef real * puntero;
typedef struct
{ int a, d, j;float b, f, g;char c ;int e ;puntero h;
} estructura ;
Ejercicio
Solución
![Page 67: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/67.jpg)
67
Solución
en que,
tsel_k = techo(tamaño del tipo(sel_k) / tamaño de la palabra)
Con : a k < x
Dir(r.x)= + (tsel_1+ …+tsel_k)
b) Aplicando la fórmula, se tiene :
Dir(r.x)= + tsel_i sel_i =a
x-1
![Page 68: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/68.jpg)
68
Solución
c) Aplicando la fórmula, se tiene :
Dir(r.g) = + ta+tb+tc+td +te +tf
a b c d e f g h j
Dado que el tamaño de la palabra es 1, word=1 se tiene que :
ta= techo(2/1)=2; tb= techo(4/1)=4; tc= techo(1/1)=1;
td= techo(2/1)=2; te= techo(1/1)=1; tf= techo(4/1)=4
Luego,
Dir(r.g) = + 2 + 4 + 1 + 2 + 1 + 4 = + 14;
pero: = 1000,
Dir(r.g) = 1014
![Page 69: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/69.jpg)
69
Ejercicio
Realice implementaciones para :
1) Números complejos (a+bi)
2) Números racionales (a/b)
3) Enumeraciones
4) Booleanos
5) Caracteres
![Page 70: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/70.jpg)
70
Después de una declaración de variable
Var A : array[0 .. 4] of integer;
Los elementos del arreglo A aparecen en localidades consecutivas de memoria:
Aplicación Finita
A[0] A[1] A[2] A[3] A[4]
![Page 71: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/71.jpg)
71
Dada una representación secuencial, en la selección directa de un componente, intervienen el cálculo de :
La dirección base + El desplazamiento
A través de una fórmula de acceso.
Aplicación Finita
Localidad relativa del componente seleccionado dentro del bloque secuencial.
Localidad inicial del bloque completo.
![Page 72: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/72.jpg)
72
La fórmula de acceso, dado el nombre o subíndice del componente deseado, especifica cómo calcular el desplazamiento del componente.
Este desplazamiento se suma a la dirección base para obtener la localidad real del componente seleccionado en la memoria.
Aplicación Finita
![Page 73: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/73.jpg)
73
Observación:
Este cálculo será muy eficiente, si se usan subíndices constantes, ya que el traductor puede calcular la fórmula de acceso durante el tiempo de compilación y generar código para tener acceso directo al componente.
Aplicación Finita
![Page 74: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/74.jpg)
74
Ejemplo : Sea el arreglo en C : char A[10];
Aplicación Finita
• El almacenamiento para A, se dispone en forma secuencial como A[0], A[1], ..., A[9].
• La dirección de A[1] será la dirección base del arreglo A más 1
• En general, para arreglos de char en C, la dirección de A[I] será Dir(A[i]) = l-value(A[0])
+ I
![Page 75: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/75.jpg)
75
Aplicación Finita
Dirección base = localidad de A[0]
Desplazamiento = i * tamaño del componente
= 5 * 1 = 5Dirección base + desplazamiento
= l-valor( A[0] ) + 5
= l-valor( A[5] )
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
A[5]
A[0]
A[1]
A[2]
A[3]
A[4]
A[6]
A[7]
A[8]
A[9]
![Page 76: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/76.jpg)
76
Aplicación Finita
Dirección base = localidad de A[0]
Desplazamiento = i * tamaño del componente
= 5 * 1 = 5Dirección base + desplazamiento
= l-valor( A[0] ) + 5
= l-valor( A[5] )
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
A[5]
A[0]
A[1]
A[2]
A[3]
A[4]
A[6]
A[7]
A[8]
A[9]
![Page 77: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/77.jpg)
77
Acceso a los componentes de una estructura homogénea:
Aplicación Finita
2. Para avanzar a la próxima componente: A[i+1]
• Sumar el tamaño de la componente actual a la localidad (dirección) del mismo.
1. Para seleccionar la primera componente de la serie: A[i]
• Usar el cálculo de dirección base más el desplazamiento.
![Page 78: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/78.jpg)
78
Aplicación Finita
Dirección base
Descriptor (vector de arreglos)
LI
Representación de almacenamiento para componentes
Tipo de datos
Límite Inferior de subíndicesLímite Superior de subíndicesTipo de Datos Componentes
Tamaño del componenteA[LI]
A[LI] + 1
A[LS]
Vector
Entero
E
LS
![Page 79: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/79.jpg)
79
Aplicación Finita
Vectores : Pascal type vector = array [1..10] of real;Var V : vector;
: V[1]V[2]V[3]
V[10]
ObjetoDescriptor
Nombre VConstructor ArrayTipo Elemento RealTamaño Elem TDimensiones 1Tipo índice IntegerLímite inf (li) 1Límite sup (ls) 10Dir Base
![Page 80: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/80.jpg)
80
Fórmula de acceso El acceso al i-ésimo elemento de V, durante ejecución:
Aplicación Finita
Dir(V[i]) = + ( i – li ) * T
donde: li y T se determinan en tiempo de
traducción.
,la dirección base, en tiempo de carga
![Page 81: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/81.jpg)
81
Ejercicio
a) Declarativas en Pascal
b) Fómula de acceso a una componente i del vector V
-2 -1 0 1 2 3 4 5 6 7 8
V:
Real
c) Dirección absoluta de la componente 4 del vector V, si la dirección base es 1000 y la word =2
![Page 82: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/82.jpg)
82
Solución
a) Type vector = array[-2..8] of real;
Var V : vector;
b) Dir(V[i]) = + ( i – -2 ) * T
Dir(V[i]) = + ( i +2 ) * T
T=4/word
c) Dir(V[4]) = + ( 4 +2 ) * 2
= 1000 + 6 * 2
= 1012
T=4/2=2
![Page 83: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/83.jpg)
83
Aplicación Finita
Matrices Modalidad PascalVar
A : array [1..10,1..5] of real;A:
1 2 3 4 5 1
2
3
4
5
6
7
8
9
10
Linealizar!!
1,1 2,1 3,1 4,1 10,1 1,2 2,2 3,2 .. 10,5 ...
Por columnas:
...1,1 1,2 1,3 1,4 1,5 2,1 2,2 10,5
Por filas:
![Page 84: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/84.jpg)
84
Aplicación Finita
Matrices Modalidad Pascal Var
A : array [1..10,1..5] of real;
A[1,1]A[1,2]A[1,3]
A[10,5]
:
Objeto
A[1,4]A[1,5]A[2,1]A[2,2]A[2,3] :
Nombre AConstructor ArrayTipo Elemento RealTamaño Elem TDimensiones 2Tipo índice IntegerLímite inf . fila (if) 1Límite sup. fila (sf) 10Límite inf. col (ic) 1Límite sup. col (sc) 5Dir Base
Descriptor
![Page 85: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/85.jpg)
85
se determinan en tiempo de traducción
El acceso al elemento A[i, j], durante ejecución, se expresa mediante la fórmula:
Aplicación Finita
Dir( A[i,j] ) = + ( i – if ) * TF + ( j – ic ) * T
la dirección base, en tiempo de carga
Tamaño de la fila
(sc-ic+1)*T
Tamaño de la componente
Límite inferior de
la fila
Límite inferior de la columna
Límite superior de la
columna
Límite inferior de la columna
![Page 86: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/86.jpg)
86
Ejercicio
Para el arreglo :
A:
1 2 3 4 5 1
2
3
4
5
6
7
8
9
10
a) Realizar la declarativa en Pascal y en C. Asuma como tipo de las componentes los reales.
b) Determinar la dirección del elemento A[4,3].
![Page 87: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/87.jpg)
87
Solución
Pascal :Type
matriz = array[1 .. 5,1..10] of float;Var
A : matriz;
C :typedef float matriz[5][10];
Matriz A;
![Page 88: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/88.jpg)
88
El acceso al elemento A[i, j], durante ejecución, se expresa mediante la fórmula:
Fórmula de acceso
Dir(A[i,j]) = + ( i – if ) * TF + (j – ic) * T
Para el ejemplo anterior, se tiene :
Dir(A[4,3] )= F + (3 – 1) * T
Dir(A[4,3] )= +34
F = (sc-ic+1)*T
T = 4 / 2 2; word = 2 byte
F = (5 – 1 + 1) * 2 10
Dir(A[4,3] )= F + (3 – 1) * T
+ (3 – 1) * 2
+ 2 * 2
Tamaño de la fila
Tamaño de los elementos
![Page 89: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/89.jpg)
89
Cubo:
Fórmula de acceso
Var A : array [1..4,1..10,1..5] of real;
41
1
10
1 5
i
j
kC[k,i,j]
... Vector de matrices
Linealizar!!
![Page 90: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/90.jpg)
90
Fórmula de acceso
Por planos
1 5
j
1
10
i
k
Por filas
i
41k
1 5
j
Por columnas
1
10
i
41k
j
Var A : array [1..4,1..10,1..5] of Real;
k i j
Formas posibles de linealizar :
![Page 91: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/91.jpg)
91
Fórmula de acceso
donde: TP Tamaño del plano (sf-if+1)*(sc-ic+1)*T
TF Tamaño de la fila (sc-ic+1)*T
if, ic, T, TF y TP se determinan en tiempo de traducción.
,la dirección base, en tiempo de carga
Var A : array [1..4,1..10,1..5] of Real;
T*ic)(jT*if)(iT*ip)(kαj])i,Dir(C[k, Fp
![Page 92: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/92.jpg)
92
Ejemplo
Se tiene una estructura de datos que consiste en un arreglo, cuyos componentes son registros.
1) Realizar las declarativas correspondientes en C y Pascal.
2) Representarlos gráficamente.
3) Determinar la fórmula de acceso para una componente cualquiera.
![Page 93: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/93.jpg)
93
Unión Discriminada
Si los objetos de un conjunto A pueden ser clasificados en subconjuntos disjuntos B1, B2, ..., Bk, con k > 1
Tales objetos pueden representarse por medio de un registro variante, con la información común almacenada en campos fijos y la información de cada objeto en partes variantes opcionales.
![Page 94: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/94.jpg)
94
Unión Discriminada
Ejemplos :
a) Todos los aviones tienen un fabricante y un precio; sin embargo, una avioneta tiene un motor y algunos aviones tienen 4 motores.
b) Sea el siguiente árbol de expresión :and
not
x 0 p
Todos los nodos tienen un tipo; sin embargo, pueden tener un número diferente de hijos.
Estos nodos pueden clasificarse en nodos para variables, constantes, operadores binarios y unarioos, con 0, 2 o 1 hijo respectivamente.
![Page 95: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/95.jpg)
95
Unión Discriminada
Se representa el árbol anterior :
Type
clase = (unario, binario);
nodo = record
c1 :T1;
c2 : T2;
case k : clase of
unario : (hijo : T3);
binario : (hijoizq, hijoder : T4);
end
end;
Parte variant
e
Campo discriminante
![Page 96: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/96.jpg)
96
Unión Discriminada
Localización en memoria:
hijoder
c1 c2 k hijo
c1 c2 k hijoizq
Parte fija
Campo
marcador
Parte variant
e
hijoder
![Page 97: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/97.jpg)
97
Var
Z : recorda : integer;case b : boolean of
True: (c : integer); False: (d : integer; e : real);
end;
Unión Discriminada
Consta de:
Un descriptor y
Del espacio necesario para sus componentes, considerando el tamaño de la mayor variante definida.
Variante 1:
a b c
T
Variante 2:
a b d eF
![Page 98: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/98.jpg)
98
Unión Discriminada
True False
Tabla de selección de variantes
Descriptor
Selector 3 cTipo S3 IntegerTamaño S3 T3Dir relativa S3 K3
Selector 3 dTipo S3 IntegerTamaño S3 T3Dir relativa S3 K3Selector 4 eTipo S4 IntegerTamaño S4 T4Dir relativa S4 K4
Nombre ZConstructor Unión
Selector 1 aTipo S1 IntegerTamaño S1 T1Dir relativa S1 K1=0Selector 2 bTipo S2 IntegerTamaño S2 T2Dir relativa S2 K2Dir tabla de selección
Dir Base
Objeto
![Page 99: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/99.jpg)
99
Fórmula de accesoEl acceso al i-ésimo selector, durante la ejecución, se expresa mediante la fórmula:
donde Sj es el selector discriminante (tag
field)
1i
1kki T entonces j)(i Si)Dir(Z.S
1-i
1jkkj
j
1kk TTrue)(Z.S SiT no Si
1-i
1jkkT no Si
![Page 100: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/100.jpg)
100
Fórmula de accesoO bien :
1i
1kki Tj)Ord(i)Dir(Z.S
1-i
1jkkj
j
1kk T*True)Ord(Z.ST *j)Ord(i
1-i
1jkkj T*False)Ord(Z.S
Ord(false) = 0
Ord(true) = 1
selector discriminante
![Page 101: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/101.jpg)
101
Ejercicio
Sea la siguiente multilista:
1) Realizar las declarativas correspondientes en Pascal y C.
2) Representar gráficamente.
3) Definir descriptor y objeto correspondiente.
4) Determinar la dirección real del selector 3.
L
1 4
32
átomo next
link
info
![Page 102: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/102.jpg)
102
Solución
Type base = integer;Enlace=^Nodo;Nodo = Record
link :Enlace;case atomo : boolean of
true : (info : base;)false : (next : Enlace;)
end;Var L : Enlace;
![Page 103: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/103.jpg)
103
Solución
typedef int base;
typedef struct Nodo
{ Nodo *link;
int atomo;
union
{base info;
Nodo *next;
}X;
} *Enlace;
Enlace L;
Selector 1
Selector2
Selector 3
link atomo X
![Page 104: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/104.jpg)
104
Solución
Gráficamente, se tiene un arreglo de nodos :
No ocupado
![Page 105: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/105.jpg)
105
Solución
DescriptorNombre L
Constructor Union
Selector 1 link
Tamaño 1 T1
Dirección relativa 1 K1 = 0
Selector 2 atomo
Tamaño 2 T2
Dirección relativa 2 K2
Dir.Tabla de selección
Dirección Base
Tabla de selección
ObjetoTrue False
infoSelector 3
T2Tamaño 3
K2Dirección relativa 3
Selector 3 next
Tamaño 3 T3
Dirección relativa 3
K3
![Page 106: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/106.jpg)
106
Solución
Fórmula de Acceso al campo X.info: Selector ( Si ) = 3
Discriminante ( Sj ) = 2
i = 3; j = 2Dir(Z.x) = + Ord( 3 2 )* ti
+ Ord( 3 > 2)* (T1 + T2 )
+ Ord(Z.S2 = true) * (T3 )
+ Ord(Z.S2 = false) * (T3 )
Dir(Z.S3) = + Ord( true)* (T1 + T2) + Ord( true)* (T3 )
= + 1* (T1 + T2) + 1* T3
![Page 107: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/107.jpg)
107
Conjunto Potencia
La representación interna de un conjunto potencia está restringida a los conjuntos definidos por extensión.Se sustenta en la estructura conocida como:
string de bits
![Page 108: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/108.jpg)
108
Conjunto Potencia
donde:
Los n bits en cero
presencia del i-ésimo valor del tipo T en C,
el i-ésimo bit en 1
C =
C es una variable de tipo conjunto potencia#(T) = n,
Si:
un string de n bits
C se representa
![Page 109: 1 4. TIPOS DE DATOS. 2 Conceptos Básicos Un tipo de dato es: un conjunto de objetos una colección de operaciones con Tipo elemental. Valores constantes.](https://reader035.fdocuments.mx/reader035/viewer/2022062315/5665b49d1a28abb57c92ae09/html5/thumbnails/109.jpg)
109
Un string de bits coincide conceptualmente con la estructura
Conjunto Potencia
packed array of boolean
Ejemplo: Sea T = {a, b, c}
y las variables:
P = {a, c}
Q = {b, c}
R = PQ = {c}
0 1 1
0 0 1
1 0 1
Representación