Tipos b�sicos de variables.

Los tipos de datos b�sicos definidos por C son caracteres, n�meros enteros y n�meros en coma flotante. Los caracteres son representados por char, los enteros por short, int, long y los n�meros en coma flotante por float y double. Los tipos b�sicos disponibles y su tama�o son:

Tipos de datos b�sicos

Tabla 2.1: Tipos de datos b�sicos
Tipo                                 Rango de valores
char                                  -128 a 127
signed char                           -128 a 127
unsigned char                            0 a 255
short o short int                   -32768 a 32767
signed short                        -32768 a 32767
unsigned short                           0 a 65535
long o long int                -2147483648 a 2147483647
signed long                    -2147483648 a 2147483647
unsigned long                            0 a 4294967295
int (16 bits)                       -32768 a 32767
signed int (16bits)                 -32768 a 32767
unsigned int (16 bits)                   0 a 65535
int (32 bits)                  -2147483648 a 2147483647
signed int (32 bits)           -2147483648 a 2147483647
unsigned int (32 bits)                   0 a 4294967295
float                   -3.402823466E + 38 a 3.402823466E + 38
double          -1.7976931348623158E + 308 a 1.7976931348623158E + 308

La palabra unsigned en realidad es un modificador aplicable a tipos enteros, aunque si no se especifica un tipo se supone int. Un modificador es una palabra clave de C que indica que una variable, o funci�n, no se comporta de la forma normal. Hay tambi�n un modificador signed, pero como los tipos son por defecto con signo, casi no se utiliza.
Tipos de variables

Una variable es un espacio reservado en el ordenador para contener valores que pueden cambiar durante la ejecuci�n de un programa. Los tipos determinan c�mo se manipular� la informaci�n contenida en esas variables. 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 modo en que se interpreta la informaci�n almacenada en la memoria de un ordenador es siempre arbitraria, es decir, el mismo valor puede usarse para codificar una letra, un n�mero, una instrucci�n de programa, etc. El tipo nos dice a nosotros y al compilador c�mo debe interpretarse y manipularse la informaci�n binaria almacenada en la memoria de un ordenador.
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. Tambi�n existen ciertos modificadores, que permiten ajustar ligeramente ciertas propiedades de cada tipo; los modificadores pueden ser: short, long, signed y unsigned o combinaciones de ellos. Tambi�n veremos en este cap�tulo los tipos enumerados, enum.

Tipos fundamentales
En C s�lo existen cinco tipos fundamentales y los tipos enumerados, C++ a�ade un s�ptimo tipo, el bool, y el resto de los tipos son derivados de ellos. Los veremos uno por uno, y veremos c�mo les afectan cada uno de los modificadores.
Las definiciones de sintaxis de C++ se escribir�n usando el color verde. Los valores entre [] son opcionales, los valores separados con | indican que s�lo debe escogerse uno de los valores. Los valores entre <> indican que debe escribirse obligatoriamente un texto que se usar� como el concepto que se escribe en su interior.
[signed|unsigned] char <identificador> significa que se puede usar signed o unsigned, o ninguna de las dos, ya que ambas est�n entre []. Adem�s debe escribirse un texto, que debe ser una �nica palabra que actuar� como identificador o nombre de la variable. Este identificador lo usaremos para referirnos a la variable durante el programa. Ser�n v�lidos estos ejemplos:
signed char Cuenta
unsigned char letras
char caracter
Tipo "char" o car�cter:
[signed|unsigned] char <identificador>
Es el tipo b�sico alfanum�rico, es decir que puede contener un car�cter, un d�gito num�rico o un signo de puntuaci�n. Desde el punto de vista del ordenador, todos esos valores son caracteres. En C y C++ este tipo siempre contiene un �nico car�cter del c�digo 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 de su tama�o, a su vez, ese tama�o depende de la plataforma del compilador, y del n�mero de bits que use por palabra de memoria: 8, 16, 23... No hay reglas fijas para saber el mayor n�mero que podemos almacenar en cada tipo: int, long int o short int; depende en gran medida del compilador y del ordenador. S�lo podemos estar seguros de que ese n�mero en short int es menor o igual que en int, y �ste a su vez es menor o igual que en long int. Veremos c�mo averiguar estos valores cuando estudiemos los operadores.
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 euros 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 magnitud, es decir lo grande o peque�o que es el n�mero que contiene. 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. Sin 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.
Puede que te preguntes (alguien me lo ha preguntado), qu� utilidad tiene algo tan impreciso. La respuesta es: aquella que tu, como programador, le encuentres. Te aseguro que float se usa muy a menudo. Por ejemplo, para trabajar con temperaturas, la precisi�n es suficiente para el margen de temperaturas que normalmente manejamos y para almacenar al menos tres decimales. Pero hay cientos de otras situaciones en que resultan muy �tiles.
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".
bool respuesta;
bool continuar;
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.
Bueno, tambi�n me han preguntado por qu� no usar siempre double o long double y olvidarnos de float. La respuesta es que C siempre ha estado orientado a la econom�a de recursos, tanto en cuanto al uso de memoria como al uso de procesador. Si tu problema no requiere la precisi�n de un double o long double, �por qu� derrochar recursos?. Por ejemplo, en el compilador Dev-C++ float requiere 4 bytes, double 8 y long double 12, por lo tanto, para manejar un n�mero en formato de long double se requiere el triple de memoria y el triple o m�s tiempo de procesador que para manejar un float.
Como programadores estamos en la obligaci�n de no desperdiciar nuestros recursos, y mucho m�s los recursos de nuestros clientes, para los que haremos nuestros programas. C y C++ nos dan un gran control sobre estas caracter�sticas, es nuestra responsabilidad aprender a usarlos como es debido.
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++, tambi�n se usar� en la declaraci�n de punteros gen�ricos, lo veremos m�s adelante.
Las funciones que no devuelven valores parecen una contradicci�n. En lenguajes como Pascal, estas funciones se llaman procedimientos. Simplemente hacen su trabajo, y no revuelven valores. Por ejemplo, funciones como borrar la pantalla, no tienen nada que devolver, hacen su trabajo y regresan. Lo mismo se aplica a funciones sin par�metros de entrada, el mismo ejemplo de la funci�n para borrar la pantalla, no requiere ninguna entrada para poder hacer su cometido.
Tipo "enum" o enumerado:
enum [<identificador de tipo>] {<nombre de constante> [= <valor>], ...} [lista de variables];
Se trata de una sintaxis muy elaborada, pero no te asustes, cuando te acostumbres a ver este tipo de cosas las comprender�s mejor.
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> <variable1> [,<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. Por ejemplo, si el programa en un momento determinado nos pregunta la hora, no podremos responder doce y esperar que se almacene su valor correspondiente. Del mismo modo, si tenemos una variable enumerada con el valor doce y la mostramos por pantalla, se mostrar� 12, no doce. 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.
Hosted by www.Geocities.ws

1