Tipos de Datos Tipos de Datos Simples Estándar

Anuncio
Departamento de Informática
Universidad Técnica Federico Santa María
Tipos de Datos
Programación de Computadores
Profesor: Teddy Alfaro
Tipos de Datos Simples
Estándar
• char
– es un carácter (alfanumérico), ocupa 1 byte.
• int
– es un numero entero, ocupa 2 bytes.
– [-32 768 , 32 767]
• float
– son números con decimales y/o exponentes, ocupa 4 bytes.
– [3.4e-38 , 3.4e38]
• double
– son números con decimales y/o exponentes, ocupa 8 bytes.
– [1.7e-308 , 1.7e308]
• void
– no posee valor, ocupa 0 bytes.
1
Modificadores de tipo
• Se utiliza para alterar el significado del tipo
base para que se ajuste más precisamente a
las necesidades de cada momento.
• Predecede al tipo simple.
• Modificadores:
signed
unsigned
long
short
Modificadores
• Ejemplos de modificadores de tipo
•
•
•
•
•
•
long int x;
unsigned long int x;
short int x;
signed short int x;
long long x
unsigned long long x;
• El modificaro de acceso const establece que cierta
variable no puede ser modificada
– Ejemplo
• const int dia=13;
2
Tipo definido por el usuario
• Tipo enumerado, principalmene utilizado para
crear conjuntos
• Formato
enum nuevo_tipo {elemento0,elemento1,...,elementoN};
nuevo_tipo indentificador;
• Ejemplo
enum habil{lunes,martes,miercoles,jueves,viernes};
habil dia;
enum moneda{peso, dolar, euro, libra} m;
Operadores y Expresiones
3
Operadores
• Los operadores son operaciones que se aplican a los
operandos (variables, valores, constantes). Estos pueden
ser unarios, binarios o n-arios. Para C existen los
operadores: aritméticos, lógicos y relacionales.
• Un conjunto de operadores y operandos conforman una
expresión, la cual puede ser reducida a un valor.
• Cuando en una expresión se utilizan mas de un operador,
éstos se deben evaluar conforme a una prioridad
establecida llamada orden de precedencia y de acuerdo
a la compatibilidad con el tipo de dato.
Operadores Aritméticos
Operador
+
*
/
%
++
--
Acción
Adición
Substracción
Multiplicación
División
Resto de división
entera
Incremento
Decremento
4
Operadores Relacionales
Operador Acción
>
>=
<
<=
==
!=
Mayor que
Mayor que o igual
Menor que
Menor que o igual
Igual
No igual
Operadores Lógicos
Operador
Acción
&&
Y
||
O
!
NO
&&
Y
5
Tabla de Precedencia
Operador de más alta prioridad
( ), !, ++, - - , *p, &p
*, /, %
Operadores unarios
Mulitiplicación, división, resto
+, -
Adición y sustracción
<<, >>
Corrimientos binario
<, <=, >, >=
==, !=
Operadores relacionales mayor-menor
Operador de igualdad y desigualdad
&
And binario
^
Or exclusivo binario
|
Or binario
&&
Op. Relacional Y
||
Op. Relacional O
?:
Shorthand sin-sino con asignación
=, +=, -=, *=, /=, %=
prioridad
shorthand
Reglas de precedencia
• Al reducir una expresión se debe seguir el
orden de precendia de la tabla de
precedencia.
• El operador con más precedencia es el
reducido primero
• Si existen operadores con el mismo nivel de
precedencia, la evaluación será de izquierda
a derecha
6
Shorthand
Shorthand
Equivalente
i++ o ++i
i=i+1
i-- o --i
i=i-1
i+=10
i=i+10
i*=10
i=i*10
i/=10
i=i/10
i%=10
i=i%10
Asignaciones
• Es importante tener en cuanta que el signo
‘=‘ es utilizado para asignar un valor a la
variable y ‘==‘ es utilizado para comparar
dos variables.
• Modo de uso:
Variable_destino=var_1 operador var_2 operador var_3 …..
7
Shorthand si-sino-asignación
• Formato de utilización
(condición)? Accion_verdadera: Accion_falso;
• Ejemplo
x=8;
y=5;
(x-y>0)? x=x-y, escribe(“verdadero”): x=y-x, escribe(“falso”);
Conversión de tipo
• En una expresión es posible que se
convinen constantes y variables de diferente
tipo. ¿el resultado de qué tipo será?
• La regla es: el resultado es convertido a la
variable de mayor tamaño.
8
Ejemplo de conversion
char c;
int i;
float f;
double d;
no_se = (c*i) - (f*i) + (f*d);
int
float
double
float
double
Forzar conversión
• Se puede forzar a la conversión de un tipo
• Forma general
(tipo)expresion
• Ejemplo
x = (int)3.5;
/* convierte a entero el 3.5 */
x = (float) i/3; /* convierte a flotante a i*/
x = (int)’a’;
/* convierte a ASCII el caracter*/
9
Ejemplo de conversion
int x, i=10;
float f;
3
x= (int)3.5;
x=(int) ‘a’;
f= (float) (i/4);
f= (float) i/4;
f= i/4.0
97
2.000
2.500
2.500
Entrada/Salida
• Para utilizar la entrada y salida de datos por teclado y
pantalla respectivamente se debe incorporar la librería:
#include <stdio.h>
• Las instrucciones utilizadas para la salida de datos por
pantalla es:
printf()
• Las instrucciones utilizadas para la entrada de datos por
el teclado es:
scanf()
10
printf( )
• Uso:
printf(const char *cadena, {lista de_variables};
Tipo
%c
%do%i
Signigicado
Ejemplo
Un carácter
A
Un número entero
392
%e
Notación científica usando e
3.9265e2
%E
Notación científica usando E
3.9265E2
%f
Un número decimal (float o duble)
392.65
%g
Utiliza el más corto de %e o %f
392.65
%G
Utiliza el más corto de %E o %f
392.65
%o
Número en base octal
610
%s
Conjunto de caracteres
Hola
%u
Para un entero sin signo
7235
%x
Notación hexadecimal sin signo
7fa
%X
Igual a x pero con mayúsculas
7FA
%p
Dirección de un puntero
B800:0000
%n
Imprime nada
printf( )
Código
\b
\f
\n
\r
\t
\"
\'
\0
\\
\v
\a
\o
\x
Significado
Espacio atrás
Salto de página
Salto de línea
Retorno de carro
Tabulación horizontal
Comillas dobles
Comilla simple
Nulo
Barra invertida
Tabulación vertical
Alerta
Constante octal
Constante hexadecimal
11
Ejemplos de printf
printf ("Caracteres: %c %c \n", 'a', 65);
printf ("Decimales: %d %ld\n", 1977, 650000);
printf ("Precedido de espacios: %10d \n", 1977);
printf ("Precedido de ceros: %010d \n", 1977);
printf (“distinas bases: %d %x %o %#x %#o \n", 100, 100,
100, 100, 100);
printf (“floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
printf (“Truco de espacios: %*d \n", 5, 10);
Caracteres: a A
Decimales: 1977 650000
printf ("%s \n", "A string");
Precedido de espacios:
1977
Precedido de ceros: 0000001977
distintas bases: 100 64 144 0x64 0144
floats: 3.14 +3e+000 3.141600E+000
Truco de espacios: 10
A string
scanf( )
• Uso:
scanf(const char *cadena, {&lista de_variables};
Tipo
%c
%do%i
Signigicado
Ejemplo
Un carácter
A
Un número entero
392
%e
Notación científica usando e
3.9265e2
%E
Notación científica usando E
3.9265E2
%f
Un número decimal (float o duble)
392.65
%g
Utiliza el más corto de %e o %f
392.65
%G
Utiliza el más corto de %E o %f
392.65
%o
Número en base octal
610
%s
Conjunto de caracteres
Hola
%u
Para un entero sin signo
7235
%x
Notación hexadecimal sin signo
7fa
%X
Igual a x pero con mayúsculas
7FA
%p
Dirección de un puntero
B800:0000
%n
Imprime nada
12
Ejemplo I/O
int x,y=1;
float a,b=8.0;
char letra='Z';
scanf("%d",&x);
scanf("%f",&a);
x+=y;
a=b*a;
printf("x=%d a=%f\n",x,a);
printf("%d %d %d %d\n",x,y,x*y,x/y);
Aclaración: función resto
• En C la función resto es %. Es un operador
binario y trabaja con opernando enteros.
• Su forma a % b obtenemos resto
donde resto = a – (a/b)*b
• Ejemplo
11 % 3 = 2
3 % 11 = 3
11-(11/3)*3= 11-3*3=2
3-(3/11)*11= 3-0*11=3
13
Aclaración: valores lógicos y
negación lógica
• Para C, formalmente los valores verdadero y falso son
1 y 0 respectivamente. En la práctica para C un 0 o un
0.0 representan falso, y cualquier otro número es
entendido como verdadero.
• La negación lógica es ! , distinto de la negatividad
aritmética - .
• Ejemplos: int x;
x= !0;
x=!5.56;
x=!(3*7);
x= -(3*7);
// resultado es 1, entendido como verdadero
// resultado es 0, entendido como falso
// resultado es 0, entendido como falso
// resultado es –21 ( también podría ser verdadero)
14
Descargar