Curso de C++ (Página 2)

pagina001 Principal pagina003

CAPITULO 2 Tipos de variables I

Los tipos determinan cómo se manipulará la información contenida en una variable. No olvides, si es que ya lo sabías, que la información en el interior de la memoria del ordenador es siempre binaria, al menos a un cierto nivel. El tipo nos dice a nosotros y al compilador como debe interpretarse y manipularse esta información binaria.

De momento sólo veremos los tipos fundamentales, que son: void, char, int, float y double, en C++ se incluye también el tipo bool; junto con los modificadores: short, long, signed y unsigned o combinaciones de ellos.

Tipos fundamentales

Sólo existen cinco tipos fundamentales, y todos los tipos demás son derivados de ellos. Los veremos uno por uno, y veremos como les afectan cada uno de los modificadores.

Tipo "char" o carácter:

[signed|unsigned] char <identificador>

Es el tipo básico alfanumérico, y contiene un único carácter ASCII. El tamaño de memoria es de 1 byte u octeto. Hay que notar que en C un carácter es tratado en todo como un número, de hecho puede ser declarado con y sin signo. Y si no se especifica el modificador de signo, se asume que es con signo. Este tipo de variables es apto para almacenar números pequeños, como los dedos que tiene una persona, o letras, como la inicial de mi nombre de pila.

Tipo "int" o entero:

[signed|unsigned] [short|long] int <identificador>

[signed|unsigned] long [int] <identificador>

[signed|unsigned] short [int] <identificador>

Las variables enteras almacenan números enteros dentro de los límites del tamaño, que dependen de la plataforma del compilador, 16 o 32 bits. Este tipo de variables es útil para almacenar números relativamente grandes, pero sin decimales, por ejemplo el dinero que tienes en el banco, salvo que seas Bill Gates, o el número de lentejas que hay en un kilo de lentejas.

Tipo "float" o coma flotante:

float <identificador>

Las variables de este tipo almacenan números en formato de coma flotante, mantisa y exponente, para entendernos, son números con decimales. Son aptos para variables de tipo real, como por ejemplo el cambio entre € y pesetas. O para números muy grandes, como la producción mundial de trigo, contada en granos. El fuerte de estos números no es la precisión, sino el orden de magnidud. Por ejemplo, la siguiente cadena de operaciones no dará el resultado correcto:

float a = 12335545621232154;
a = a + 1; 
a = a - 12335545621232154; 

Finalmente, a valdrá 0 y no 1, como sería de esperar. Los formatos en coma flotante sacrifican precisión en favor de tamaño. Si embargo el ejemplo si funcionaría con números más pequeños. Esto hace que las variables de tipo float no sean muy adecuadas para los bucles, como veremos más adelante.

Tipo "bool" o Booleana:

bool <identificador>

Las variables de este tipo sólo pueden tomar dos valores "true" o "false". Sirven para evaluar expresiones lógicas. Este tipo de variables se puede usar para almacenar respuestas, por ejemplo: ¿Posees carné de conducir?. O para almacenar informaciones que sólo pueden tomar dos valores, por ejemplo: qué mano usas para escribir. En estos casos debemos acuñar una regla, en este ejemplo, podría ser diestro->"true", zurdo->"false".

Tipo "double" o coma flotante de doble precisión:

[long] double <identificador>

Las variables de este tipo almacenan números en formato de coma flotante, mantisa y exponente, al igual que float, pero usan mayor precisión. Son aptos para variables de tipo real. Usaremos estas variables cuando trabajemos con números grandes, pero también necesitemos gran precisión. Lo siento, pero no se me ocurre ahora ningún ejemplo.

Tipo "void" o sin tipo:

void <identificador>

Es un tipo especial que indica la ausencia de tipo. Se usa en funciones que no devuelven ningún valor, también en funciones que no requieren parámetros, aunque este uso sólo es obligatorio en C, y opcional en C++, y en la declaración de punteros genéricos.

Tipo "enum" o enumerado:

enum [<identificador de tipo>] {<nombre de constante> [= <valor>], ...} [lista de variables];

Este tipo nos permite definir conjuntos de constantes, normalmente de tipo int, llamados datos de tipo enumerado. Las variables declaradas de este tipo sólo podrán tomar valores entre los definidos.

El identificador de tipo es opcional, y nos permitirá declarar más variables del tipo enumerado en otras partes del programa:

[enum] <identificador de tipo> <variables1> [,<variable2>[...]];

La lista de variables también es opcional. Sin embargo, al menos uno de los dos componentes opcionales debe aparecer en la definición del tipo enumerado.

Varios identificadores pueden tomar el mismo valor, pero cada identificador sólo puede usarse en un tipo enumerado. Por ejemplo:

enum tipohoras { una=1, dos, tres, cuatro, cinco, seis, 
  siete, ocho, nueve, diez, once, doce, 
  trece=1, catorce, quince, dieciseis, diecisiete, dieciocho,
  diecinueve, veinte, ventiuna, ventidos, ventitres, venticuatro = 0};

En este caso, una y trece valen 1, dos y catorce valen 2, etc. Y veinticuatro vale 0. Como se ve en el ejemplo, una vez se asigna un valor a un elemento de la lista, los siguientes toman valores correlativos. Si no se asigna ningún valor, el primer elemento tomará el valor 0.

Los nombres de las constantes pueden utilizarse en el programa, pero no pueden ser leídos ni escritos, ni tampoco comparados con constantes alfanuméricas. Deben considerarse como "etiquetas" que sustituyen a enteros, y que hacen más comprensibles los programas. Insisto en que internamente, para el compilador, sólo son enteros, en el rango de valores válidos definidos en cada enum.

Palabras reservadas usadas en este capítulo

char, int, float, double, bool, void, enum, unsigned, signed, long, short, true y false.


pagina001 Principal pagina003