Curso C++:
Variables y Tipos
Jorge Peña Pastor
[email protected]
June 7, 2011
Jorge Peña Pastor
Variables y Tipos
1/53
Variables
Representan cantidades y/o cualidades.
Antes de usarlas debemos declararlas para que el compilador
(o intérprete) pueda conocer:
• Su nombre
• Su ámbito de vida
• Su visibilidad
• El tipo de datos asociado
Jorge Peña Pastor
Variables y Tipos
2/53
Declaración de Variables
• Simple:
int
i ;
• Múltiple:
int i ,
j , k;
• Con asignación de valor inicial:
int
i = 5;
Jorge Peña Pastor
Variables y Tipos
3/53
Declaración de Variables
• Simple:
int
i ;
• Múltiple:
int i ,
j , k;
• Con asignación de valor inicial:
int
int
i = 5;
i = −133,
j = i , k;
Jorge Peña Pastor
Variables y Tipos
3/53
Nombres de Variables
Deben reflejar los términos abstractos del problema.
No deben ser ambiguos.
El lenguaje puede restringir el nombrado:
• Identificadores correctos: {a-zA-Z_}[a-zA-Z_0-9]*
• No estan permitidas variables cuyo nombre coincida con
palabras reservadas del lenguaje.
• No se admiten símbolos especiales: ; " ’ ñ , ? ! ^ ~ …
• Otras restricciones (ej. longitud).
Jorge Peña Pastor
Variables y Tipos
4/53
Palabras Reservadas en C++
asm, auto, bool, break, case, catch, char, class, const,
const_cast, continue, default, delete, do, double,
dynamic_cast, else, enum, explicit, export, extern, false,
float, for, friend, goto, if, inline, int, long, mutable,
namespace, new, operator, private, protected, public,
register, reinterpret_cast, return, short, signed, sizeof,
static, static_cast, struct, switch, template, this, throw,
true, try, typedef, typeid, typename, union, unsigned,
using, virtual, void, volatile, wchar_t, while
Jorge Peña Pastor
Variables y Tipos
5/53
Ámbito de Vida
Determina durante cuánto tiempo existe una variable.
• Variable global a módulo o programa:
• Existen durante todo el tiempo de ejecución.
• Toman valor inicial 0 (todos sus bits a 0).
• Variable local o parámetro formal de una función:
• Existen sólo durante cada llamada.
• Toman valor inicial indeterminado (basura).
Jorge Peña Pastor
Variables y Tipos
6/53
Visibilidad
Determina desde dónde podemos usar una variable.
• Variable global al programa:
• Desde cualquier punto del programa.
• Variable global a un módulo:
• Sólo desde dicho módulo.
• Variable local o parámetro formal de función:
• Sólo desde dicha función.
• Una variable local oculta a una global con el mismo
nombre.
Jorge Peña Pastor
Variables y Tipos
7/53
Ejemplos de Ámbito y Visibilidad
/∗ Globales ∗/
int a,b;
void funcion(void)
{
/∗ Las variables a y b son variables enteras ∗/
/∗ La variable c no existe ∗/
}
int main(void)
{
float a,c;
/∗ Las variables a y c son reales ∗/
/∗ La variable b es entera ∗/
}
/∗ Locales ∗/
Jorge Peña Pastor
Variables y Tipos
8/53
Modificadores de Variables
const
• Su valor no debe, y no puede, ser alterado.
static
• Su valor se mantiene dentro de su ámbito.
• Si global, sólo global al módulo.
• Si local, conserva valor entre invocaciones.
• Valor inicial 0.
register
• Indica nuestra intención de ubicar la variable en un registro.
• Es una pista para el compilador (no está garantizado).
volatile
• El contenido de la variable podría cambiar de valor
espontáneamente por efecto de algo "externo" al
programa.
• Evita optimizaciones por parte del compilador en cuanto a
acceso de memoria de la variable.
Jorge Peña Pastor
Variables y Tipos
9/53
Tipos de Datos
Cada variable tiene que tener asociado un tipo que indique qué
es lo que contiene la variable.
Determina qué opereaciones se pueden hacer sobre la
variable.
Permite al compilador:
• Detectar errores
• Optimizar la ejecución
Podrá ser uno de los tipos básicos proporcionados por el
lenguaje o bien un tipo derivado creado por un programador.
Jorge Peña Pastor
Variables y Tipos
10/53
Tipos de Datos
Se escoge según el conjunto de valores que queramos que la
variable pueda tomar.
• En algunos casos por las limitaciones del sistema.
Los tipos numéricos básicos deteminan el rango de posibles
valores
• Una variable de tipo Entero no podrá valer 3.75 (decimal).
• Una variable de tipo Positivo (sin-signo) no podrá valer -1.
Jorge Peña Pastor
Variables y Tipos
11/53
Tipos Básicos
Posibles contenidos de variables según el tipo con el que
fueron declaradas:
Boleano: true, false
Carácter: a, A, z, Z, 1, 9, ...
Entero: −1, 33
Real: 3.14, −5x10−15
Enumerado: lunes, martes ...
Vectores: {4, 5, 9}, {H, o, l, a}
Puntero: NULL
Jorge Peña Pastor
Variables y Tipos
12/53
Entero
• Para contar o enumerar
int saldo_bancario = 1000;
• Diferentes bases de representación:
Hexadecimal(base 16): 0x0 -0x1 0xFFF
Octal(base 8):
Decimal(base 10):
0xFea0
07777 0177240
65184
4095
00
0
-01
-1
Jorge Peña Pastor
Variables y Tipos
13/53
Modificadores de Enteros
De Signo:
• signed: Valores positivos y negativos.
signed int var ; 32 bits :
/∗−2147483648 a 2147483648∗/
• unsigned: Sólo valores positivos.
unsigned int var ;
/∗32 bits : 0 a 4294967295∗/
Jorge Peña Pastor
Variables y Tipos
14/53
Modificadores de Enteros
De Signo:
• signed: Valores positivos y negativos.
signed int var ; 32 bits :
/∗−2147483648 a 2147483648∗/
• unsigned: Sólo valores positivos.
unsigned int var ;
/∗32 bits : 0 a 4294967295∗/
Si no se indica nada es signed
int var ; 32 bits :
/∗−2147483648 a 2147483648∗/
Jorge Peña Pastor
Variables y Tipos
14/53
Modificadores de Enteros
De tamaño:
• short
short int dia ;
/∗ 16 bits (aprox) ∗/
• sin modificador (por defecto)
/∗ 32 bits ∗/
int horas;
• long
long segundos;
/∗ 32 bits (aprox) ∗/
• long long
long long micro_segundos;
/∗ 64 bits (GNU C)∗/
Jorge Peña Pastor
Variables y Tipos
15/53
Modificadores de Enteros
Pueden combinarse para adaptarse a las necesidades de
nuestro problema:
signed long int variable ;
unsigned short int variable ;
Puede omitirse el int
unsigned variable ;
El tamaño en memoria depende del compilador y de la
arquitectura.
Normalmente se usa simplemente int.
Jorge Peña Pastor
Variables y Tipos
16/53
Booleano
Representa los valores lógicos cierto y falso.
bool hace_sol = true ;
bool tengo_coche = false ;
Jorge Peña Pastor
Variables y Tipos
17/53
Booleano
Representa los valores lógicos cierto y falso.
bool hace_sol = true ;
bool tengo_coche = false ;
Se utiliza para representar el resultado de operaciones lógicas
(según el álgebra de Bool) y de comparación:
bool vamos_excursion = hace_sol && tengo_coche
bool resultado = a > b;
Jorge Peña Pastor
Variables y Tipos
17/53
Carácter
Son valores numéricos de tamaño 1 byte (128 tipos).
Representan caracteres según una convención dada (código
ASCII o Latin1).
• Constante entre comillas simples (apóstrofe ’)
char letra = ’a ’ ;
• Secuencias de escape:
char retorno
= ’ \n ’ ;
char tabulador = ’ \ t ’ ;
• Valor numérico:
char arroba = ’\100 ’ ;
/∗ Codigo ASCII de @ en octal∗/
Jorge Peña Pastor
Variables y Tipos
18/53
Real
Números positivos o negativos con o sin decimales.
También llamdos de “coma flotante”.
Representación interna distinta a la del entero.
Notación decimal o científica
Jorge Peña Pastor
Variables y Tipos
19/53
Tipos de Reales
Tres tamaños:
• float (precisión simple).
float medida = 2.3 f ;
float distancia = 42E−11;
• double (doble precisión).
double valor = 4.22;
• long double (precisión extendida).
long double PI=3.14159265358979323846;
El valor exacto depende de cada implementación pero
normalmente float 32 bits, double 64 y long double 128 bits.
Jorge Peña Pastor
Variables y Tipos
20/53
Conversión de Tipos
¿Qué pasa cuando combinamos tipos diferentes?
• int y float
• int y bool
• float y double
Existen 2 mecanismos:
• Conversión automática
• Conversión explícita
Jorge Peña Pastor
Variables y Tipos
21/53
Conversión Automática
La hace automáticamente el compilador
Es segura siempre que sepamos que la conversión que va a
hacer el compilador es la que nos interesa.
Promoción
• De un “tipo” menor a un tipo “mayor”
float valor = 2;
/ / 2 se convierte en 2.0
Degradación
int valor = 2.2;
/ / 2.2 se convierte en 2
Jorge Peña Pastor
Variables y Tipos
22/53
Conversión Explícita de Tipo
Casting: mecanismo para explicitar el cambio de tipo de
una expresión o variable.
Le indicamos al compilador que asumimos la responsabilidad
Existen 2 formas:
• Castings de C:
• (tipo)variable
• tipo(variable)
• Castings de C++:
• static_cast
• dynamic_cast
• const_cast
• reinterpret_cast
Jorge Peña Pastor
Variables y Tipos
23/53
Ejemplos de Conversión de Tipos
f = 65.2;
/ / g vale 65.0
float
float g = ( int ) 65.2;
float h = 3/2;
float
float k = static_cast<int >(65.2);
i = ( float )3/( float)2 / /
/ / h vale 1.0
i vale 1.5
/ / k = 65.0
Jorge Peña Pastor
Variables y Tipos
24/53
Conversión de Bool
Las expresiones condicionales o booleanas, se convierten
automáticamente utilizando las siguiente normas:
• Si la expresión vale 0, entonces es falso, si no, es cierto.
• Los valores booleanos true y false se convierten en 1 y 0
cuando se hace el casting a int
• Para pasar de int a bool se sigue la misma norma que para
las expresiones: 0 es false y el resto de enteros true
Jorge Peña Pastor
Variables y Tipos
25/53
Operadores Aritméticos
+ Suma
- Resta
* Multiplicación
/ División
% Módulo (resto)
++ Auto-incremento (pre ó post)
– Auto-decremento (pre ó post)
Jorge Peña Pastor
Variables y Tipos
26/53
Ejemplo Operadores Aritméticos
int b;
float
f ;
int a = 5 − (2 ∗ 2);
/∗ a = a + 1 ∗/
a++;
/∗ a=4 b=3 ∗/
a=3; b=a++;
/∗ a=4 b=4 ∗/
a=3; b=++a;
a=3; b=a−−; /∗ a=2 b=3 ∗/
f =4/3;
b=4%3; /∗ b == 1 == (4 − (4/3)∗3) ∗/
real ∗/
f =4.0/3;
f =(float )4/3;
for ( int
i =0;
/∗ f == 1.333 Div .
i <10;
/∗ f == 1 Div . entera ∗/
/∗ f == 1.333 Div .
real ∗/
i ++) / / Realiza 10 veces el bucle
Jorge Peña Pastor
Variables y Tipos
27/53
Operadores de Asignación
Provienen de la combinación de ope
Comentarios de: Curso C++: Variables y Tipos (0)
No hay comentarios