Descripción: Clase 13 de Programación, Prof. Gonzalo Müller
Programación
Clase 13. Tipos de Datos Prof. Gonzalo Müller
[email protected]
Facultad de Ingeniería Universidad Central de Venezuela
Clase Anterior
Computador: Procesador, Memoria, Disco Duro, Diskettes, Monitor, Teclado, Ratón.
Sistema Computador: Unidad Central de Proceso, Memoria Principal, Unidades de Entrada, Unidades de Salida, Unidades de Almacenamiento Secundario.
Memoria ROM y RAM Localidades Tamaño: bit, byte, Dirección.
Sistemas de Numeración: Binario y Hexadecimal Programación – Prof. Gonzalo Müller – Clase 13 – GM - 2
El Programador
Un programador es aquel: Tiene la capacidad para describir la solución a un problema a través de un secuencia de pasos. Es capaz de transformar esa secuencia de pasos a un lenguaje que la computadora puede efectuar. Conoce las características, el funcionamiento de la computadora y las tecnología asociadas. Establece los tipos de datos y diseña las estructuras de datos requeridas a utilizar en la resolución de un problema. Programación – Prof. Gonzalo Müller – Clase 13 – GM - 3
El Programador
Un programador es aquel: Tiene la capacidad para describir la solución a un problema a través de un secuencia de pasos. Es capaz de transformar esa secuencia de pasos a un lenguaje que la computadora puede efectuar. Conoce las características, el funcionamiento de la computadora y las tecnología asociadas. Establece los tipos de datos y diseña las estructuras de datos requeridas a utilizar en la resolución de un problema. Programación – Prof. Gonzalo Müller – Clase 13 – GM - 4
El Programador
Un programador es aquel: Tiene la capacidad para describir la solución a un problema a través de un secuencia de pasos. Es capaz de transformar esa secuencia de pasos a un lenguaje que la computadora puede efectuar. Conoce las características, el funcionamiento de la computadora y las tecnología asociadas. Establece los tipos de datos y diseña las estructuras de datos requeridas a utilizar en la resolución de un problema. Programación – Prof. Gonzalo Müller – Clase 13 – GM - 5
El Programador
Un programador es aquel: Tiene la capacidad para describir la solución a un problema a través de un secuencia de pasos. Es capaz de transformar esa secuencia de pasos a un lenguaje que la computadora puede efectuar. Conoce las características, el funcionamiento de la computadora y las tecnología asociadas. Establece los tipos de datos y diseña las estructuras de datos requeridas a utilizar en la resolución de un problema. Programación – Prof. Gonzalo Müller – Clase 13 – GM - 6
Diseño de Datos
Diseño de Datos
Diseño de Algoritmo
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 7
Datos
Se almacenan: Datos. Programas.
CPU
Unidad AritméticoLógica
Unidad de Control
Unidades de Entrada
Memoria Principal Almacenamiento Secundario Programación – Prof. Gonzalo Müller – Clase 13 – GM - 8
Unidades de Salida
Datos
Se almacenan: Datos. Programas.
CPU
Unidad AritméticoLógica
Unidad de Control
Datos Unidades de Entrada
Datos
Memoria Principal Almacenamiento Secundario Programación – Prof. Gonzalo Müller – Clase 13 – GM - 9
Unidades de Salida
Datos
Se almacenan: Datos. Programas.
Se procesan Datos
CPU
Unidad AritméticoLógica
Unidad de Control
Unidades de Entrada
Memoria Principal Almacenamiento Secundario Programación – Prof. Gonzalo Müller – Clase 13 – GM - 10
Unidades de Salida
Datos
Se almacenan: Datos. Programas. Se leen Datos
Datos
Programa
Datos
CPU
Unidad AritméticoLógica
Unidad de Control
Unidades de Entrada
Memoria Principal Almacenamiento Secundario Programación – Prof. Gonzalo Müller – Clase 13 – GM - 11
Unidades de Salida
Datos
Se almacenan: Datos. Programas.
Datos
Programa
Datos
CPU
Unidad AritméticoLógica
Unidad de Control
Unidades de Entrada
Memoria Principal Almacenamiento Secundario Programación – Prof. Gonzalo Müller – Clase 13 – GM - 12
Se muestran Datos Unidades de Salida
Datos
Se almacenan: Datos. Programas.
CPU
Unidad AritméticoLógica
Unidad de Control
Unidades de Entrada
Se transmiten Datos
Memoria Principal Almacenamiento Secundario Programación – Prof. Gonzalo Müller – Clase 13 – GM - 13
Unidades de Salida
Datos
Un dato está formado por un conjunto de bytes: 1 Byte
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 14
Datos
Los datos pueden ser de distinta naturaleza: Texto Números Imágenes Etc.
130Kg y 65Kg Programación – Prof. Gonzalo Müller – Clase 13 – GM - 15
Datos
Los datos pueden ser de distinta naturaleza: Texto Números Imágenes Etc.
Todos almacenados como conjuntos de bytes 130Kg y 65Kg Programación – Prof. Gonzalo Müller – Clase 13 – GM - 16
Datos
Existen tres tipos de datos básicos ó elementales: Numéricos. Carácter. Lógicos.
Los Numéricos se subdividen en:
Enteros.
Reales. JavaScript es un lenguaje donde las variables no estan restringidas a un tipo de dato Programación – Prof. Gonzalo Müller – Clase 13 – GM - 17
Entero Almacenan el valor de un número entero.
123 2567894 976843600287325645 Existen dos tipos de entero: Enteros con signo. Enteros sin signo.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 18
Entero
Enteros sin signo: son capaces de almacenar solo números enteros no negativos.
0, 1, 2, …, 234, …, 679790,… Estos se subdividen según el tamaño que ocupan en memoria:
1 Byte.
2 Byte.
4 Byte.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 19
Entero
Enteros sin signo de 1 byte: 1 byte → 8 bits → 256 situaciones Son capaces de almacenar los primeros 256 enteros no negativos:
0 … 255
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 20
Entero
Enteros sin signo de 2 byte: 2 bytes → 16 bits → 65536 situaciones Son capaces de almacenar los primeros 65536 enteros no negativos:
0 … 65535
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 21
Entero
Enteros sin signo de 4 byte: 4 bytes → 32 bits → 4294967296 situaciones Son capaces de almacenar los primeros 4294967296 enteros no negativos:
0 … 4294967295
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 22
Entero
En general, para Enteros sin signo de n bytes: 0 … 28*n – 1
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 23
Entero
Enteros con signo: son capaces de almacenar número enteros cualesquiera (incluyendo negativos).
…,-34428, …, -567,…,0, …, 234, …, 679790,…
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 24
Entero
Almacenar el signo requiere de un bit: un bit 0 establece que el número es positivo. un bit 1 establece que el número es negativo.
0 … → número ≥ 0 1 … → número < 0 Programación – Prof. Gonzalo Müller – Clase 13 – GM - 25
Entero El bit de signo se le llama bit más significativo (MSB), ya que es el que se encuentra más a la izquierda, por lo tanto tiene una mayor ponderación en el sistema de numeración.
Utilizar un bit para el signo reduce el número de posibles situaciones a representar con un cadena de bits.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 26
Entero
Enteros con signo de 1 byte: 1 byte – 1 bit (de signo) → 7 bits: → 128 negativos. → 128 no negativos. Son capaces de almacenar:
-128 … 127
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 27
Memoria
Entero
01111111
127
01111110
126
…
…
00000001
1
00000000
0
11111111
-1
…
…
10000001
-127
10000000
-128
Entero
Enteros con signo de 2 byte: 2 byte – 1 bit (de signo) → 15 bits: → 32768 negativos. → 32768 no negativos. Son capaces de almacenar:
-32768 … 32767 Programación – Prof. Gonzalo Müller – Clase 13 – GM - 28
Entero
Enteros con signo de 4 byte: 4 byte – 1 bit (de signo) → 31 bits: → 2147483648 negativos. → 2147483648 no negativos. Son capaces de almacenar:
-2147483648 … 2147483647 Programación – Prof. Gonzalo Müller – Clase 13 – GM - 29
Entero
En general, para Enteros con signo de n bytes: – 28*n – 1 … 28*n – 1 – 1
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 30
Entero Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará las cantidad de donas vendidas por un vendedor informal en medio día.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 31
Entero Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará las cantidad de donas vendidas por un vendedor informal en medio día. Debe ser Numérica.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 32
Entero Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará las cantidad de donas vendidas por un vendedor informal en medio día. Debe ser Numérica. Debe ser Entera, ya que se vende las donas enteras.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 33
Entero Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará las cantidad de donas vendidas por un vendedor informal en medio día. Debe ser Numérica. Debe ser Entera, ya que se vende las donas enteras. Debe ser Entera sin signo, ya que el vendedor entrega las donas no las recibe (sin considerar productos devueltos por el comprador o hurtos).
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 34
Entero Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará las cantidad de donas vendidas por un vendedor informal en medio día. Debe ser Numérica. Debe ser Entera, ya que se vende las donas enteras. Debe ser Entera sin signo, ya que el vendedor entrega las donas no las recibe (sin considerar productos devueltos por el comprador o hurtos). Puede ser de 1 byte, ya que es difícil que un vendedor informal venda más de 255 donas en mediodía. Programación – Prof. Gonzalo Müller – Clase 13 – GM - 35
Entero Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará las cantidad de donas vendidas por un vendedor informal en medio día. Debe ser Numérica. Debe ser Entera, ya que se vende las donas enteras Debe ser Entera sin signo, ya que el vendedor entrega las donas no las recibe (sin considerar productos devueltos por el comprador o hurtos). Puede ser de 1 byte, ya que es difícil que un vendedor informal venda más de 255 donas en mediodía.
Entera sin signo de 1 byte Programación – Prof. Gonzalo Müller – Clase 13 – GM - 36
Real Almacena magnitudes formadas por una parte entera y una decimal.
0,00023400890003 786596,40505 -976843,006002873 456721,0 Solo es posible representar un subconjunto finito de los número reales. Programación – Prof. Gonzalo Müller – Clase 13 – GM - 37
Real También se conoce como datos punto flotante. Se rige según la norma IEEE 754. La forma como es almacenado un número real estaba basado en la notación científica:
5.67x1056 5.67 → mantisa 56 → exponente
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 38
Real Mantisa normalizada: 0.1 ≤ Mantisa normalizada < 1
0.567x1057 0.567 → mantisa normalizada 57→ exponente
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 39
Real Solo sería necesario almacenar: 567 57
Existe un ahorro en memoria: 0 . x 10
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 40
Real
En general:
s
Exponente
Mantisa
n bits
m bits
La Mantisa es un número binario. El Exponente es un número entero sin signo. La Base es 2, no 10:
(-1)Signo x 1.Mantisa x 2 Exponente – Bias Programación – Prof. Gonzalo Müller – Clase 13 – GM - 41
Real
Real de 4 bytes: s
Exponente
Mantisa
8 bits
23 bits
En el exponente se puede almacenar: 0 … 255 (1 … 254) 6 cifras significativas. 16777216 puntos en el rango.
(-1)Signo x 1.Mantisa x 2 Exponente – 127 Programación – Prof. Gonzalo Müller – Clase 13 – GM - 42
Real El mayor número que se puede representar:
1.11111111...12 x 2 127 3.4028234663852886 x 10 38 En número más pequeño que se puede representar:
1.17549435 x 10 -38 En epsilon entre un número y otro:
1.1920929 x 10 -7
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 43
Real
Real de 8 bytes:
s
Exponente
Mantisa
11 bits
52 bits
En el exponente se puede almacenar: 0 … 2047(1 … 2046) 15 cifras significativas. 9007199254740992 puntos en el rango.
(-1)Signo x 1.Mantisa x 2 Exponente – 1023 Programación – Prof. Gonzalo Müller – Clase 13 – GM - 44
Real El mayor número que se puede representar:
1.11111111...12 x 2 1023 1.7976931348623158 x 10 308 En número más pequeño que se puede representar:
2.2250738585072014 x 10 -308 En epsilon entre un número y otro:
2.2204460492503131 x 10 -16
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 45
Real Real de 4 Byte 1.1920929 x 10-7
1.17549435 x 10-38
-∞
∞
-3.4028234663852886 x 10 38
0
3.4028234663852886 x 10 38 Dos número consecutivos de subconjunto finito
Real de 8 Byte 2.2204460492503131 x 10-16
2.2250738585072014 x 10-308
-∞
∞
-1.7976931348623158 x 10 308
0
1.7976931348623158 x 10 308 Dos número consecutivos de subconjunto finito
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 46
Real Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará las cantidad de donas vendidas promedio vendidas por un vendedor informal en medio día por una semana.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 47
Real Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará las cantidad de donas vendidas promedio vendidas por un vendedor informal en medio día por una semana. Debe ser Numérica.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 48
Real Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará las cantidad de donas vendidas promedio vendidas por un vendedor informal en medio día por una semana. Debe ser Numérica. Debe ser Real, ya que el promedio es un número no necesariamente entero, es decir, puede contener decimales.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 49
Real Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará las cantidad de donas vendidas promedio vendidas por un vendedor informal en medio día por una semana. Debe ser Numérica. Debe ser Real, ya que el promedio es un número no necesariamente entero, es decir, puede contener decimales. Puede ser de 4 bytes, ya que este tipo ofrece una precisión de 6 cifras significativas y para el vendedor es necesario a lo sumo 1 cifra. Programación – Prof. Gonzalo Müller – Clase 13 – GM - 50
Real Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará las cantidad de donas vendidas promedio vendidas por un vendedor informal en medio día por una semana. Debe ser Numérica. Debe ser Real, ya que el promedio es un número no necesariamente entero, es decir, puede contener decimales. Puede ser de 4 bytes, ya que este tipo ofrece una precisión de 6 cifras significativas y para el vendedor es necesario a lo sumo 1 cifra.
Real de 4 bytes Programación – Prof. Gonzalo Müller – Clase 13 – GM - 51
Real Casos especiales:: Exponente Mantisa Representación Todos 0 != 0 Números subnormales Todos 0
=0
Cero (con signo)
Todos 1
=0
Infinito (con signo)
Todos 1
!= 0
NaN(Not a Number)
Subnormales: (-1)S x 0.Mantisa x 2 Exponente – Bias Not a Number : s
0: Operación No Valida 1: Indeterminado
Los números subnormales llena el vacio formado alrededor del 0 Programación – Prof. Gonzalo Müller – Clase 13 – GM - 52
Lógico Almacena Verdadero o Falso. Normalmente ocupa el menor tamaño posible, es decir, 1 byte. Si bien es cierto en un byte tenemos 256 posibilidades:
00000000 → Falso.
Cualquier otro valor es Verdadero.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 53
Lógico Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará si un vendedor informal vendió donas de chocolate en medio día.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 54
Lógico Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará si un vendedor informal vendió donas de chocolate en medio día. Debe ser Lógica, ya que se necesita almacenar dos situaciones, si vendió o no vendió, verdadero si vendió y falso de lo contrario.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 55
Lógico Ejemplo: Se requiere seleccionar el tipo de dato para una variable que almacenará si un vendedor informal vendió donas de chocolate en medio día. Debe ser Lógica, ya que se necesita almacenar dos situaciones, si vendió o no vendió, verdadero si vendió y falso de lo contrario.
Lógica
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 56
Carácter Contiene una unidad de información de texto o alfanumérica. Caracteres Alfabéticos:
Mayúsculas: ‘A’, ‘B’, …
Minúsculas: ‘a’, ‘b’, …
Caracteres Numéricos: ‘0’, ‘1’, … Caracteres especiales:’#’, ‘,’, ‘>’, ‘{‘, …
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 57
Carácter
Un carácter se almacena en un byte de memoria.
En un byte → 8 bits → 28 = 256 posibilidades:
256 Caracteres Programación – Prof. Gonzalo Müller – Clase 13 – GM - 58
Carácter
Cada carácter almacenado corresponde a un número entero establecido en una tabla de conversión definida por la ANSI (American National Standard Institute) llamada tabla ASCII (American Standard Code for Interchange of Information)
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 59
Carácter
Memoria (Binario) 00100000 00111111 01000111 01100111 10000001 10100100
Representación Entera 32 63 71 103 129 164 Programación – Prof. Gonzalo Müller – Clase 13 – GM - 60
Carácter
? G g ü ñ
Carácter
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 61
Carácter
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 62
Carácter
Los primeros 32 caracteres son caracteres no imprimibles, los cuales son fundamentalmente para ejecutar funciones especiales.
Los restantes si representan caracteres de texto: Entero 48 65 97 129 171
Hexadecimal 30 41 61 81 AB
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 63
Carácter 0 A a ü ½
Tipo de datos
Reflexión: Tipo de dato a seleccionar. Operaciones en diferentes tipos. Errores en truncamiento o redondeo.
Se tiene un subconjunto finito de los número reales.
Igualdades con Reales.
Acumulación redondeo.
de
errores
de
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 64
truncamiento
o
Tipo de datos
Reflexión: Errores en truncamiento o redondeo. Igualdades con Reales. Ejemplo: c = 0.5 – 0.1 – 0.1 - 0.1 – 0.1 – 0.1
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 65
Tipo de datos
Reflexión: Errores en truncamiento o redondeo. Igualdades con Reales. Ejemplo: c = 0.5 – 0.1 – 0.1 - 0.1 – 0.1 – 0.1
Debería ser 0! ? Programación – Prof. Gonzalo Müller – Clase 13 – GM - 66
Variables
Lista de Variables: Una vez desarrollado el algoritmo, se debe establecer los tipos de las variables a utilizar. Es útil para la posterior implementación en el lenguaje construir una lista con todas las variables utilizadas en el algoritmo y sus respectivos tipos. Variable variable1:tipo1 … variableN:tipoN Programación – Prof. Gonzalo Müller – Clase 13 – GM - 67
Variables Ejemplo: Construir un algoritmo para promediar 2 números. Fase 1: Diseño y Análisis: DES, DRE ó DF y LV.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 68
Ejercicio Dados los siguientes problemas, construir el DES y LV (al menos entrada y salida) y justificar: a) Contar cantidad de números pares en un conjunto de 260 números. b) Contar el número de votos. c) Promediar 25 notas enteras de un curso. Presentar en la salida: d) La opción seleccionada entre ‘1’, ‘2’ y ‘3’. e) Si una persona es alta o baja. f) La nacionalidad de una persona. g) El número de hijos de una persona.
Programación – Prof. Gonzalo Müller – Clase 13 – GM - 69
Resumen
Tipos de Datos: Numéricos:
Entero:
Sin Signo: 1, 2, 4 y 8 bytes.
Con Signo: 1, 2, 4 y 8 bytes.
Real:
4 bytes.
8 bytes.
Lógicos. Carácter. Programación – Prof. Gonzalo Müller – Clase 13 – GM - 70