Variables - Tipos de Datos - Operadores

Anuncio
Variables - Tipos de Datos Operadores - Precedencia
Alejandro Furfaro
Mayo 2011
Alejandro Furfaro ()
Variables - Tipos de Datos -Operadores - Precedencia
Mayo 2011
1 / 12
Agenda
1
2
Alejandro Furfaro ()
Tipos de Datos
Macros para declarar valores
constantes
Variables en memoria
Operadores
Asignación
Precedencia
Variables - Tipos de Datos -Operadores - Precedencia
Mayo 2011
2 / 12
Tipos de Datos
Pocos y Simples
Bit
char
int
float
double
Descripción
Es un byte capaz de albergar un valor correspondiente al set
de caracteres que se utiliza (ASCII por ejemplo).
Refleja el tamaño de los números enteros en la máquina en
la que se trabaja. En máquinas con procesadores Intel su
tamaño es de 32 bits. En otras plataformas puede tener 16
bits de tamaño.
Aloja un número en punto flotante simple densidad.
Aloja un número en punto flotante doble densidad.
Alejandro Furfaro ()
Variables - Tipos de Datos -Operadores - Precedencia
Mayo 2011
3 / 12
Tipos de Datos
Calificadores
Bit
short
long
signed
unsigned
Alejandro Furfaro ()
Descripción
Aplica naturalmente a enteros. En tal caso podemos omitir
“int”. Ej. short var1,
Aplica naturalmente a enteros. En tal caso podemos omitir
“int”. Ej. long var2, etc. En el caso de las variables double,
el modificador long permite en algunas plataformas definir
variables en el formato punto flotante de 96 o 128 bits según
como se compile.
Aplica a variables char e int para definir variables enteras sin
signo (solo valores 0 o superiores).
Aplica a variables char e int para definir variables enteras
con signo.
Variables - Tipos de Datos -Operadores - Precedencia
Mayo 2011
4 / 12
Tipos de Datos
Macros para declarar valores constantes
La directiva #define al Pre procesador
/ ∗ c o n s t a n t e asumida como e n t e r o ∗ /
# define e n t e r o 1234;
/ ∗ c o n s t a n t e asumida como l o n g ( terminada en L ) ∗ /
# define e n t e r o l a r g o 1234L ;
/ ∗ c o n s t a n t e asumida como unsigned l o n g ( terminada en UL ) ∗ /
# define 1234UL ;
/ ∗ c o n s t a n t e asumida como e n t e r o expresada en hexadecimal ∗ /
# define e n t e r o e n h e x a 0x1234 ;
/ ∗ c o n s t a n t e con e l ASCII de l a e q u i s ∗ /
# define e q u i s ’ x ’ ;
/ ∗ Constante con una cadena ASCII ∗ /
# define cadena
Hola
Mundo ! !
;
Alejandro Furfaro ()
Variables - Tipos de Datos -Operadores - Precedencia
Mayo 2011
5 / 12
Tipos de Datos
Macros para declarar valores constantes
Macros implı́citas de Caracteres Particulares
Ciertos caracteres especiales se representan precedidos por el
carácter de escape ’\’. Ej: \n.
A simple vista parece tratarse de dos caracteres pero se
interpretan como uno.
\a
alerta (beep)
\\
backslash
\b
backspace
\?
Signo de pregunta
\f
Nueva Hoja
\’
Comilla Simple
\n
Nueva Lı́nea
\“
Comilla doble
\r
Retorno de carro (formfeed)
\ooo
Número octal
\t
Tab horizontal
\xhh
Número Hexadecimal
\v
Tab Vertical
Alejandro Furfaro ()
Variables - Tipos de Datos -Operadores - Precedencia
Mayo 2011
6 / 12
Tipos de Datos
Macros para declarar valores constantes
Constantes de enumeración
Se puede declarar una secuencia de valores enteros.
enum boolean {NO, SI } / / NO=0 , SI =1.
enum meses {Enero =1 , Febrero , Marzo ,
A b r i l , Mayo , Junio , J u l i o ,
Agosto , Setiembre , Octubre ,
Noviembre , Diciembre } / / Febrero =2 , Marzo= 3 , . . .
Ventajas. El compilador asigna valores secuencialmente a partir
del primero.
Alejandro Furfaro ()
Variables - Tipos de Datos -Operadores - Precedencia
Mayo 2011
7 / 12
Tipos de Datos
Variables en memoria
Variables y Tipos de datos
Se pueden definir una por lı́nea de programa:
/∗ t r e s enteros ∗/
i n t lower ;
i n t upper ;
i n t step ;
O bien en una lı́nea:
/∗ t r e s enteros ∗/
i n t lower , upper , s t e p ;
Un solo caracter.... o un vector de caracteres (mil en este caso)
char c ;
char v [ 1 0 0 0 ] ;
Y constantes en memoria (a diferencia de las macros estas ocupan
una dirección)
const double e = 2.71828182845905;
const char msg [ ] = ” warning : ” ;
Alejandro Furfaro ()
Variables - Tipos de Datos -Operadores - Precedencia
Mayo 2011
8 / 12
Operadores
Asignación
Setean un valor en una variable
Aritméticos:
+ , - , * , / , % , Suma, resta, producto, cociente, y resto
i = j + i; /* asigna a i la suma entre j e i */
i += j; /* Esta sentencia es equivalente... ¡Bienvenidos al C!*/
k=9*p;
z = x % y ; /* z se carga con el resto del cociente entre x e y*/
Lógicos:
&
bitwise AND
h &= mask;
|
bitwise OR
reg = reg |0x40;
ˆ
bitwise OR exclusiva
a ˆ= b;
<<
Desplazamiento a la izquierda
x << 2;
>>
Desplazamiento a la derecha
y >> p;
Complemento a 1
a = ˜700;
˜
Incremento / Decremento:
++ , –
Supongamos una variable n definida e inicializada como:
int n=3;
p = n++; /* Luego de esta sentencia, p queda inicializado en 3 y n en 4*/
p = ++n; /* Luego de esta sentencia, p queda inicializado en 4 y n en 4 */
Alejandro Furfaro ()
Variables - Tipos de Datos -Operadores - Precedencia
Mayo 2011
9 / 12
Operadores
Asignación
Relacionales
>, >=, <, <=, ==, ! =
Se utilizan para evaluar condiciones en sentencias que debe
tomar una decisión en función del resultado.
Su resultado es un operador booleano (Verdadero / Falso, 0 / 1,
etc)
Alejandro Furfaro ()
Variables - Tipos de Datos -Operadores - Precedencia
Mayo 2011
10 / 12
Operadores
Precedencia
Como se evalúan las expresiones
Alejandro Furfaro ()
Variables - Tipos de Datos -Operadores - Precedencia
Mayo 2011
11 / 12
Operadores
Precedencia
Ejemplos de precedencias
if((x & MASK)==0)
Si quitamos los paréntesis (), ¿Se altera el resultado?.
Respuesta: SI
¿Porqué?: Porque & tiene menos precedencia que ==. Entonces
aunque recorra de izquierda a derecha la expresión, el compilador
primero resolverá la comparación y luego la operación lógica del
resultado de la misma con x.
If ((a < b)&& (c <= b))
¿Son redundantes los paréntesis ()?. Rta: SI. ¿Porque?....
Alejandro Furfaro ()
Variables - Tipos de Datos -Operadores - Precedencia
Mayo 2011
12 / 12
Descargar