04a-Tipos de datos

Anuncio
Tipos de datos básicos
Tema 4a
Tipos de datos simples
• Las variables y constantes deben definir un tipo.
• Una vez definido el tipo, no se puede cambiar de
opinión.
• El tipo define el comportamiento de los
operadores.
• Tres grandes grupos
– Numéricos
– Alfabéticos
– Enumerados
IWI-131 - Tema 4
Tipo de dato nulo
• void
– Indica “nada”
– Es un variable sin tipo definido
– Cuando una función o programa no retorna
ningún resultado final se dice que devuelve el
tipo void.
Tipos de datos numéricos
• Por defecto los números se utilizan en base
decimal.
• Internamente se trabaja con números en base
binaria.
• Dos grandes diferencias
– Enteros
– Reales
• Es importante definir el espacio necesario para
almacenar un número.
IWI-131 - Tema 4
IWI-131 - Tema 4
Tipos de datos numéricos
Modificadores
• Para modificar el tamaño de
almacenamiento se utilizan tipos de datos
modificados
• Modificadores
• Entero
– int
• Real
– float
• Real con doble precisión
– double
IWI-131 - Tema 4
–
–
–
–
signed: reserva un bit para el signo
unsigned: define solo valores positivos
long: utiliza el mayor tamaño disponible
short: utiliza el menor tamaño disponible
IWI-131 - Tema 4
1
Tipos de datos numéricos
• int
Tipos de datos numéricos
• float
– Tipo de dato entero
– Valores positivos y negativos
– Se almacena en 2 o 4 bytes
–
–
–
–
• short int (16 bits): -32.768 a 32.768
• long int (32 bits): -2.147.483.648 a 2.147.483.648
• unsigned int (32 bits): 0 a 4.294.967.296
• 37 dígitos para parte entera
• 6 dígitos para parte decimal
– Se puede abreviar como “unsigned”
– No acepta modificadores
IWI-131 - Tema 4
IWI-131 - Tema 4
Tipos de datos numéricos
Tipos de datos numéricos
• double
–
–
–
–
Tipo de dato real
Precisión simple
Valores positivos y negativos
Se almacena en 4 bytes
Tipo de dato real
Precisión doble
Valores positivos y negativos
Se almacena en 8 bytes
void main(){
int a = -10;
unsigned int b = 10;
float c = 10.1;
double d = 0.000000001;
}
• 37 dígitos para parte entera
• 10 dígitos para parte decimal
– long double (10 bytes)
IWI-131 - Tema 4
IWI-131 - Tema 4
Tipos de datos alfabéticos
Tipos de datos alfabéticos
• Cualquier símbolo escrito se puede considerar
alfabético
• En rigor
– a..z
– A..Z
– !”.,$%&/)(^*{} etc.
• Alfanuméricos
– Se agregan los dígitos como símbolos, no como
números.
IWI-131 - Tema 4
• char
– Almacena cualquier carácter “normal”
– Ocupa un byte
• Permite diferenciar 256 caracteres.
• signed char: -127 a 127
• unsigned char: 0 a 256
– El valor almacenado es el código ASCII que
representa el carácter
• Ej: @ = 64 , \ = 92 , A = 65
IWI-131 - Tema 4
2
Tipos de datos alfabéticos
void main(){
char c1 = 'a';
a 8
char c2 = '8';
@
char c3 = '\n';
48 49 50
char c4 = 64;
char c5 = '0';
char c6 = '1';
char c7 = '2';
printf("%c %c %c %c \n",c1,c2,c3,c4);
printf("%i %i %i \n",c5,c6,c7);
}
• Al mezclar distintos tipos, hay que buscar
un común denominador
– Un tipo donde todo el resto pueda ser
representado
• Para esto, hay que convertir los valores
involucrados al mayor tipo presente
• Esto se denomina promoción de tipo
IWI-131 - Tema 4
IWI-131 - Tema 4
Conversiones de tipo
Cast (molde)
• Rangos de tipos
–
–
–
–
–
–
Conversiones de tipo
• Se puede forzar al compilador para hacer
una conversión de tipos.
• Se vera su utilidad al estudiar los
operadores.
long double
louble
float
unsigned long
long
unsigned int
void main(){
double d1=4.7, d2=2.4;
int i = ((int)d1)/((int)d2);
printf("%d\n", i);
IWI-131 - Tema 4
Tipos de datos enumerados
• A diferencia de números y caracteres no existe
necesariamente una relación de orden.
• Ej:
–
–
–
–
Chileno
Argentino
Peruano
Boliviano
}
IWI-131 - Tema 4
Tipos de datos enumerados
El nombre de la enumeracion
enum nombre {tipo1,tipo2 ,…,tipoN};
Elementos de la enumeración
• En C, las enumeraciones se almacenan como
enteros.
• Se pueden definir sus valores numéricos.
IWI-131 - Tema 4
Palabra reservada
IWI-131 - Tema 4
3
Tipos de datos enumerados
Tipos de datos enumerados
enum nacionalidad {argentino=25, chileno, peruano , boliviano};
Valor numérico del elemento
void main(){
enum nacionalidad persona1;
enum nacionalidad persona2;
int chiliviano ;
enum nombre {tipo1,tipo2=100,tipo3,…};
persona1 =
persona2 =
chiliviano
printf("%d
Aumenta de uno en uno
chileno ;
boliviano;
= persona1+persona2;
+ % d\n = %d", persona1, persona2, chiliviano);
}
Tipo1=0
Tipo2=100
Tipo3=101
…
IWI-131 - Tema 4
26 + 28 = 54
IWI-131 - Tema 4
Fin tema 4a
Tipos de datos simples
4
Descargar