SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
Datos escalares y compuestos




         Sección 5.1-5.3




                               1
Objeto de datos

Objetos de datos escalares:   Tipos de datos
• Numérico (Integers, Real)   abstractos:
• Boléanos                    •Clases
• Caracteres                  Objetos activos:
• Enumeraciones               •Tareas (Tasks)
Objetos compuestos:           •Procesos (Processes)
• Cadenas (String)
• Puntero (Pointer)
Objetos estructurados:
• Arreglos (Arrays)
• Registros (Records)
• Listas (Lists)
• Conjuntos (Sets)




                                                      2
Unión de objetos de datos


Un compilador crea dos clases de objetos:
• Posiciones de memoria
• Valores numéricos
Una variable es la unión (binding) de un nombre con una
   posición de memoria:
• Contenido de la posición puede cambiar




                                                      3
Tipos de datos

Cada objeto de datos tiene un tipo:
Valores: para objetos de ese tipo
Operaciones: para objetos de ese tipo
Implementación: (Representación 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




                                                      4
L-value y R-value

Posición de un objeto es
su L-value. Contenidos de
esa posición es su R-value.

¿Porque los nombres L-value y R-value?
   Considere ejecutar: A = B + C;
       1. Coja el contenido de posición B
       2. Sume el contenido de posición C
       3. Almacene el resultado en la dirección A.
   Para cada objeto nombrado, su posición en el lado
   derecho del operador de asignación (=) es un acceso al
   contenido de , y su posición en el lado izquierdo del
   operador de asignación es el acceso a la dirección de.
       • dirección de entonces es un L-value
       • Contenido de entonces es un R-value
       • Valor, por si solo, generalmente significa R-
         value

                                                       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.

Conversión entre tipos:
   ¿Dado dos variables A y B, cuando es A:=B legal?

Explicito: Todas las conversiones entre diferentes
   tipos debe ser especificado
Implícito: Algunas conversiones entre diferentes tipos
   están implícitas en la definición del lenguaje.




                                                         6
Ejemplos de coerción

Ejemplos en Pascal:
   var A: real;
   B: integer;
A := B - Implícito, denominado una coerción – una
   conversión automática de un tipo a otro tipo
A := B es llamada ampliación (widening) por cuanto el
   tipo A tiene más valores que B.
B := A (si fuera permitido) sería llamado contracción
   (narrowing) ya que B tiene menos valores que A.
   Información se pierde en este caso.
En la mayoría de los lenguajes se permite coerción de
   ampliación;
Coerciones de contracción deben ser explicitas:
   B := round(A); El entero más cercano a A
   B := trunc(A); Borrar la parte fraccional de A



                                                        7
Datos númericos enteros



Enteros:
Representación binaria
en aritmética de
complemento a 2

Para palabras de 32-bits:
Valor máximo:
   231-1
Valor mínimo:
   -231
                      Valores positivos Valores Negativos




                                                      8
Datos numéricos reales
Float (real): representación 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.

Números consisten de tres campos:

S: campo de bit de signo. 0 es positivo.
E: exponente en notación 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 número normalizado es 1, puede ser
   omitido e insertado automáticamente por el hardware,
   dando un 24avo bit adicional de precisión.




                                                      10
Decodificación del formato

Dado E, y M, el valor de la representación es:



Parámetros                      Valor
E=255 y M    0                Un número invalido
E=255 y M = 0
0<E<255                       2{E-127}(1.M)
E=0 y M   0                   2 {-126}.M
E=0 y M=0                     0




                                                   11
Ejemplo de número 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 números en
  el rango de 10-308 a 10308.




                                                         12
Otros datos numéricos

Entero corto (C) - 16 bit, 8 bit

Entero largo (C) - 64 bit

Booleano o lógico - 1 bit con valor verdadero o falso

Byte - 8 bits

Carácter – Un byte - 256 caracteres
• ASCII es un código de 7 bits 128 caracteres

En C, una variable tipo char es simplemente un dato
   numérico entero de 8 bits




                                                        13
Enumeraciones

typedef enum cosas {A, B, C, D } NuevoTipo;
• Implementado como enteros pequeños 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   X=A?
• Facilidad de lectura
• Detección de error

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 = número de dígitos decimales
       q = número de dígitos en la fracción

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 operación 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 números de 4 dígitos puede dar
  un resultado de 5 dígitos y se necesitan 3 lugares para la
  parte fraccional.

p=8 y q=3 es conocido antes de la suma
• Conocido durante la compilación - No se requiere pruebas
   en ejecución.



                                                          16
Implementando datos decimales
Algoritmo:
1. Almacene cada número 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 más 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 tamaño, dinámico
   F = `ABCDEFG0' - C – cualquier tamaño, definido por
   el programador




                                                        18
Implementación de cadenas




                            19
Operaciones en cadenas

En C, arreglos y cadenas de caracteres son lo mismo.
Implementación:
   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
Asignación con punteros




                          22

Más contenido relacionado

La actualidad más candente

escuela superiror politecnica de chimborazo
escuela superiror politecnica de chimborazoescuela superiror politecnica de chimborazo
escuela superiror politecnica de chimborazoJhon Vega
 
Formato actividades semana 1 (1)
Formato actividades semana 1 (1)Formato actividades semana 1 (1)
Formato actividades semana 1 (1)Luis Hernandez
 
eduardo hernandez investigacion 1
eduardo hernandez investigacion 1eduardo hernandez investigacion 1
eduardo hernandez investigacion 1guest79d55c9
 
Arreglos en pseudocodigo 01
Arreglos en pseudocodigo 01Arreglos en pseudocodigo 01
Arreglos en pseudocodigo 01Emerson Garay
 
Sistema binario i algebra de boole
Sistema binario i algebra de booleSistema binario i algebra de boole
Sistema binario i algebra de booleCarlos Cardelo
 
Clase 9- programacion
Clase 9- programacionClase 9- programacion
Clase 9- programaciondiego MC
 
Ejercicios de matrices y vectores en c++
Ejercicios de matrices y vectores en c++Ejercicios de matrices y vectores en c++
Ejercicios de matrices y vectores en c++Diego Maxdj Chicaiza
 
Tema 8 www.fresymetal.com
Tema 8 www.fresymetal.comTema 8 www.fresymetal.com
Tema 8 www.fresymetal.comFresyMetal
 
Arreglos
ArreglosArreglos
Arregloslichic
 
Aplicación de arreglos bidimensionales
Aplicación de arreglos bidimensionalesAplicación de arreglos bidimensionales
Aplicación de arreglos bidimensionalesmarigelcontreras
 
Resolución de problemas con java
Resolución de problemas con javaResolución de problemas con java
Resolución de problemas con javadiegocastro1234
 
Utpl(programacion t4..)
Utpl(programacion t4..)Utpl(programacion t4..)
Utpl(programacion t4..)Drez Rodriguez
 

La actualidad más candente (20)

escuela superiror politecnica de chimborazo
escuela superiror politecnica de chimborazoescuela superiror politecnica de chimborazo
escuela superiror politecnica de chimborazo
 
7.arreglos y vectores en c++
7.arreglos y vectores en c++7.arreglos y vectores en c++
7.arreglos y vectores en c++
 
Formato actividades semana 1 (1)
Formato actividades semana 1 (1)Formato actividades semana 1 (1)
Formato actividades semana 1 (1)
 
eduardo hernandez investigacion 1
eduardo hernandez investigacion 1eduardo hernandez investigacion 1
eduardo hernandez investigacion 1
 
Arreglos en C
Arreglos en CArreglos en C
Arreglos en C
 
12 Arreglos
12 Arreglos12 Arreglos
12 Arreglos
 
Arreglos en pseudocodigo 01
Arreglos en pseudocodigo 01Arreglos en pseudocodigo 01
Arreglos en pseudocodigo 01
 
Arreglos C#
Arreglos C#Arreglos C#
Arreglos C#
 
Sistema binario i algebra de boole
Sistema binario i algebra de booleSistema binario i algebra de boole
Sistema binario i algebra de boole
 
Arreglos C++
Arreglos C++Arreglos C++
Arreglos C++
 
Clase 9- programacion
Clase 9- programacionClase 9- programacion
Clase 9- programacion
 
Ejercicios de matrices y vectores en c++
Ejercicios de matrices y vectores en c++Ejercicios de matrices y vectores en c++
Ejercicios de matrices y vectores en c++
 
Tema 8 www.fresymetal.com
Tema 8 www.fresymetal.comTema 8 www.fresymetal.com
Tema 8 www.fresymetal.com
 
Arreglos
ArreglosArreglos
Arreglos
 
Aplicación de arreglos bidimensionales
Aplicación de arreglos bidimensionalesAplicación de arreglos bidimensionales
Aplicación de arreglos bidimensionales
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
Resolución de problemas con java
Resolución de problemas con javaResolución de problemas con java
Resolución de problemas con java
 
Utpl(programacion t4..)
Utpl(programacion t4..)Utpl(programacion t4..)
Utpl(programacion t4..)
 
Omega Up
Omega UpOmega Up
Omega Up
 
Arreglos
ArreglosArreglos
Arreglos
 

Similar a Datos Escalares

Diapositivas curso programación orientada a objetos en Java
Diapositivas curso programación orientada a objetos en JavaDiapositivas curso programación orientada a objetos en Java
Diapositivas curso programación orientada a objetos en JavaJose Perez
 
Introduccion al lenguaje c_EderHenriquez
Introduccion al lenguaje c_EderHenriquezIntroduccion al lenguaje c_EderHenriquez
Introduccion al lenguaje c_EderHenriquezederhenriquez
 
Representación digital de datos
Representación digital de datosRepresentación digital de datos
Representación digital de datosADRIAN CASTAÑEDA
 
C++ unidad1 semana1
C++ unidad1 semana1C++ unidad1 semana1
C++ unidad1 semana1winnijbn
 
Fpr Tema6 www.fresymetal.com
Fpr Tema6 www.fresymetal.comFpr Tema6 www.fresymetal.com
Fpr Tema6 www.fresymetal.comFresyMetal
 
Fundamentos de programación en scilab
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilabGabriel Romero
 
Sistema de representación de la informacion
Sistema de representación de la informacionSistema de representación de la informacion
Sistema de representación de la informacionDaniel Remondegui
 
Sistemas Numericos
Sistemas NumericosSistemas Numericos
Sistemas Numericosbramas
 
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, Mejoramiento (2018 1er Término)
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, Mejoramiento (2018 1er Término)⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, Mejoramiento (2018 1er Término)
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, Mejoramiento (2018 1er Término)Victor Asanza
 
Tipos de datos usados en lenguaje C
Tipos de datos usados en lenguaje CTipos de datos usados en lenguaje C
Tipos de datos usados en lenguaje Cefrenpedro92
 
Tipos de datos usados en c
Tipos de datos usados en cTipos de datos usados en c
Tipos de datos usados en clagq
 

Similar a Datos Escalares (20)

1. vers. cap-3_tipos_dedatos
1. vers. cap-3_tipos_dedatos1. vers. cap-3_tipos_dedatos
1. vers. cap-3_tipos_dedatos
 
Electrónica digital
Electrónica digitalElectrónica digital
Electrónica digital
 
Material iii parcial
Material iii parcialMaterial iii parcial
Material iii parcial
 
Diapositivas curso programación orientada a objetos en Java
Diapositivas curso programación orientada a objetos en JavaDiapositivas curso programación orientada a objetos en Java
Diapositivas curso programación orientada a objetos en Java
 
Fund Java
Fund JavaFund Java
Fund Java
 
Punteros_v2.ppt
Punteros_v2.pptPunteros_v2.ppt
Punteros_v2.ppt
 
Introduccion al lenguaje c_EderHenriquez
Introduccion al lenguaje c_EderHenriquezIntroduccion al lenguaje c_EderHenriquez
Introduccion al lenguaje c_EderHenriquez
 
Programas
Programas Programas
Programas
 
Representación digital de datos
Representación digital de datosRepresentación digital de datos
Representación digital de datos
 
C++ unidad1 semana1
C++ unidad1 semana1C++ unidad1 semana1
C++ unidad1 semana1
 
Fpr Tema6 www.fresymetal.com
Fpr Tema6 www.fresymetal.comFpr Tema6 www.fresymetal.com
Fpr Tema6 www.fresymetal.com
 
Fundamentos de programación en scilab
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilab
 
Codigos..
Codigos..Codigos..
Codigos..
 
Sistema de representación de la informacion
Sistema de representación de la informacionSistema de representación de la informacion
Sistema de representación de la informacion
 
Sistemas Numericos
Sistemas NumericosSistemas Numericos
Sistemas Numericos
 
Vhdl2
Vhdl2Vhdl2
Vhdl2
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, Mejoramiento (2018 1er Término)
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, Mejoramiento (2018 1er Término)⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, Mejoramiento (2018 1er Término)
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, Mejoramiento (2018 1er Término)
 
Tipos de datos usados en lenguaje C
Tipos de datos usados en lenguaje CTipos de datos usados en lenguaje C
Tipos de datos usados en lenguaje C
 
Tipos de datos usados en c
Tipos de datos usados en cTipos de datos usados en c
Tipos de datos usados en c
 

Más de johanna20

Digitales examen 1
Digitales examen 1Digitales examen 1
Digitales examen 1johanna20
 
Digitales examen 2
Digitales examen 2Digitales examen 2
Digitales examen 2johanna20
 
Digitales examen 1
Digitales examen 1Digitales examen 1
Digitales examen 1johanna20
 
examen fisica c
examen fisica cexamen fisica c
examen fisica cjohanna20
 
Examen Fisica
Examen FisicaExamen Fisica
Examen Fisicajohanna20
 
EXamen Fisica Parcial Termino2004
EXamen Fisica Parcial Termino2004EXamen Fisica Parcial Termino2004
EXamen Fisica Parcial Termino2004johanna20
 
Gramaticas Regulares
Gramaticas RegularesGramaticas Regulares
Gramaticas Regularesjohanna20
 
Ciclo Contable De Una Empresa Comercial
Ciclo Contable De Una Empresa  ComercialCiclo Contable De Una Empresa  Comercial
Ciclo Contable De Una Empresa Comercialjohanna20
 
Ajustes y Actualizaciones
Ajustes y ActualizacionesAjustes y Actualizaciones
Ajustes y Actualizacionesjohanna20
 
Ciclo Contable De Una Empresa Comercial Parte Ii.Ppt(3parte)
Ciclo Contable De Una Empresa Comercial Parte Ii.Ppt(3parte)Ciclo Contable De Una Empresa Comercial Parte Ii.Ppt(3parte)
Ciclo Contable De Una Empresa Comercial Parte Ii.Ppt(3parte)johanna20
 
Ciclo Contable De Una Empresa Comercial Parte I
Ciclo Contable De Una Empresa  Comercial Parte ICiclo Contable De Una Empresa  Comercial Parte I
Ciclo Contable De Una Empresa Comercial Parte Ijohanna20
 
Ciclo Contable
Ciclo ContableCiclo Contable
Ciclo Contablejohanna20
 
Conceptos Basicos
Conceptos BasicosConceptos Basicos
Conceptos Basicosjohanna20
 
Introduccion A Sistemas De Informacion
Introduccion A Sistemas De InformacionIntroduccion A Sistemas De Informacion
Introduccion A Sistemas De Informacionjohanna20
 

Más de johanna20 (20)

Digitales examen 1
Digitales examen 1Digitales examen 1
Digitales examen 1
 
Digitales examen 2
Digitales examen 2Digitales examen 2
Digitales examen 2
 
Digitales examen 1
Digitales examen 1Digitales examen 1
Digitales examen 1
 
Adt
AdtAdt
Adt
 
examen fisica c
examen fisica cexamen fisica c
examen fisica c
 
Examen Fisica
Examen FisicaExamen Fisica
Examen Fisica
 
EXamen Fisica Parcial Termino2004
EXamen Fisica Parcial Termino2004EXamen Fisica Parcial Termino2004
EXamen Fisica Parcial Termino2004
 
Gramaticas Regulares
Gramaticas RegularesGramaticas Regulares
Gramaticas Regulares
 
Ciclo Contable De Una Empresa Comercial
Ciclo Contable De Una Empresa  ComercialCiclo Contable De Una Empresa  Comercial
Ciclo Contable De Una Empresa Comercial
 
Ajustes y Actualizaciones
Ajustes y ActualizacionesAjustes y Actualizaciones
Ajustes y Actualizaciones
 
Ciclo Contable De Una Empresa Comercial Parte Ii.Ppt(3parte)
Ciclo Contable De Una Empresa Comercial Parte Ii.Ppt(3parte)Ciclo Contable De Una Empresa Comercial Parte Ii.Ppt(3parte)
Ciclo Contable De Una Empresa Comercial Parte Ii.Ppt(3parte)
 
Ciclo Contable De Una Empresa Comercial Parte I
Ciclo Contable De Una Empresa  Comercial Parte ICiclo Contable De Una Empresa  Comercial Parte I
Ciclo Contable De Una Empresa Comercial Parte I
 
Ciclo Contable
Ciclo ContableCiclo Contable
Ciclo Contable
 
Conceptos Basicos
Conceptos BasicosConceptos Basicos
Conceptos Basicos
 
Introduccion A Sistemas De Informacion
Introduccion A Sistemas De InformacionIntroduccion A Sistemas De Informacion
Introduccion A Sistemas De Informacion
 
Color
ColorColor
Color
 
Clipping
ClippingClipping
Clipping
 
Iluminacion
IluminacionIluminacion
Iluminacion
 
Hilos
HilosHilos
Hilos
 
Internet
InternetInternet
Internet
 

Datos Escalares

  • 1. Datos escalares y compuestos Sección 5.1-5.3 1
  • 2. Objeto de datos Objetos de datos escalares: Tipos de datos • Numérico (Integers, Real) abstractos: • Boléanos •Clases • Caracteres Objetos activos: • Enumeraciones •Tareas (Tasks) Objetos compuestos: •Procesos (Processes) • Cadenas (String) • Puntero (Pointer) Objetos estructurados: • Arreglos (Arrays) • Registros (Records) • Listas (Lists) • Conjuntos (Sets) 2
  • 3. Unión de objetos de datos Un compilador crea dos clases de objetos: • Posiciones de memoria • Valores numéricos Una variable es la unión (binding) de un nombre con una posición de memoria: • Contenido de la posición puede cambiar 3
  • 4. Tipos de datos Cada objeto de datos tiene un tipo: Valores: para objetos de ese tipo Operaciones: para objetos de ese tipo Implementación: (Representación 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 4
  • 5. L-value y R-value Posición de un objeto es su L-value. Contenidos de esa posición es su R-value. ¿Porque los nombres L-value y R-value? Considere ejecutar: A = B + C; 1. Coja el contenido de posición B 2. Sume el contenido de posición C 3. Almacene el resultado en la dirección A. Para cada objeto nombrado, su posición en el lado derecho del operador de asignación (=) es un acceso al contenido de , y su posición en el lado izquierdo del operador de asignación es el acceso a la dirección de. • dirección de entonces es un L-value • Contenido de entonces es un R-value • Valor, por si solo, generalmente significa R- value 5
  • 6. 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. Conversión entre tipos: ¿Dado dos variables A y B, cuando es A:=B legal? Explicito: Todas las conversiones entre diferentes tipos debe ser especificado Implícito: Algunas conversiones entre diferentes tipos están implícitas en la definición del lenguaje. 6
  • 7. Ejemplos de coerción Ejemplos en Pascal: var A: real; B: integer; A := B - Implícito, denominado una coerción – una conversión automática de un tipo a otro tipo A := B es llamada ampliación (widening) por cuanto el tipo A tiene más valores que B. B := A (si fuera permitido) sería llamado contracción (narrowing) ya que B tiene menos valores que A. Información se pierde en este caso. En la mayoría de los lenguajes se permite coerción de ampliación; Coerciones de contracción deben ser explicitas: B := round(A); El entero más cercano a A B := trunc(A); Borrar la parte fraccional de A 7
  • 8. Datos númericos enteros Enteros: Representación binaria en aritmética de complemento a 2 Para palabras de 32-bits: Valor máximo: 231-1 Valor mínimo: -231 Valores positivos Valores Negativos 8
  • 9. Datos numéricos reales Float (real): representación 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
  • 10. Formato de punto flotante IEEE IEEE standard 754 especifica 32- y 64-bit standard. Números consisten de tres campos: S: campo de bit de signo. 0 es positivo. E: exponente en notación 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 número normalizado es 1, puede ser omitido e insertado automáticamente por el hardware, dando un 24avo bit adicional de precisión. 10
  • 11. Decodificación del formato Dado E, y M, el valor de la representación es: Parámetros Valor E=255 y M 0 Un número invalido E=255 y M = 0 0<E<255 2{E-127}(1.M) E=0 y M 0 2 {-126}.M E=0 y M=0 0 11
  • 12. Ejemplo de número 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 números en el rango de 10-308 a 10308. 12
  • 13. Otros datos numéricos Entero corto (C) - 16 bit, 8 bit Entero largo (C) - 64 bit Booleano o lógico - 1 bit con valor verdadero o falso Byte - 8 bits Carácter – Un byte - 256 caracteres • ASCII es un código de 7 bits 128 caracteres En C, una variable tipo char es simplemente un dato numérico entero de 8 bits 13
  • 14. Enumeraciones typedef enum cosas {A, B, C, D } NuevoTipo; • Implementado como enteros pequeños 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 X=A? • Facilidad de lectura • Detección de error Ejemplo: enum { electrica, mecanica, maritima, geologia} ClaseFacultad; enum { viejo,nuevo } CalidadPan; CalidadPan = fresco; Un error que puede ser detectado 14
  • 15. Declarando datos decimales Decimal fijo en PL/I y COBOL (Para aplicaciones financieras) DECLARE X FIXED DECIMAL(p,q); p = número de dígitos decimales q = número de dígitos en la fracción 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
  • 16. Usando datos decimales ¿Que es Z=X+Y?: Realizando la operación 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 números de 4 dígitos puede dar un resultado de 5 dígitos y se necesitan 3 lugares para la parte fraccional. p=8 y q=3 es conocido antes de la suma • Conocido durante la compilación - No se requiere pruebas en ejecución. 16
  • 17. Implementando datos decimales Algoritmo: 1. Almacene cada número 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
  • 18. Datos compuestos Cadena de caracteres: Objeto primitivo hecho de datos de caracteres más 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 tamaño, dinámico F = `ABCDEFG0' - C – cualquier tamaño, definido por el programador 18
  • 20. Operaciones en cadenas En C, arreglos y cadenas de caracteres son lo mismo. Implementación: L-value(A[I]) = L-value(A[0]) + I 20
  • 21. 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