domingo, 7 de junio de 2015

VARIABLES 2: Tipos Básicos (INTEGER,CHAR...)

Podríamos decir que la importancia de las variables es tal, que sin ellas nos sería imposible hacer más que programas del tipo imprime un mensaje o pinta esto... Es decir, podríamos decir que son tan importantes como los ingredientes en una ensalada...

En nuestro caso tenemos ya dos tipos de variables simples que hemos conocido en el primer artículo sobre el tema: numéricas y alfanuméricas, es decir, variables de tipo número y variables de tipo letra, pero vamos a meternos en profundidad en el tema...



Alguien podría pensar que sería útil definir las variables número con el máximo rango posible, es decir, que se pudiera representar cualquier número de cualquier tamaño en cualquier caso... Y ya puestos sería deseable que pudiéramos poner los números con tantos decimales como necesitáramos y porque no, estos números podrían ser positivos o negativos...

Es decir, lo deseable sería que el tipo número fuera de rango infinito, y que fuera infinitamente divisible y que recorriera también los negativos... Es decir, lo deseable sería un número Real para poder hacer todas las operaciones que hacemos con los número reales...

Pero he aquí un problema: para representar cada número en memoria necesitamos una cantidad infinita de memoria, cosa que no tenemos, así que de momento nos olvidamos de infinitos números y de infinitos decimales.

Tenemos otro problema: por un lado cada dígito de un número entero se representa en base 2 en el ordenador, y cada dígito en base 2 se almacena en una posición de memoria y la memoria es limitada.

Cuando los ordenadores tenían hasta 16k, esto era un gran problema, ya que si usabas toda la memoria se producía un Overflow, es decir, un desbordamiento de memoria... Y se acababa el programa.



Con lo cual, teníamos que tener unos tipos de dato, unas variables de tamaño reducido para poder usar el resto de la memoria para programar. Por ello en aquellos ordenadores solo había los tipos número y alfanumérico, y además de tamaño reducido.

Con la mejora del tamaño de la memoria, los tipos se amplían, pero una preocupación fundamental sigue siendo el uso de esa memoria, es decir, si el campo al que va a representar esa variable no usa números muy grandes se usará un tipo de variable que use números pequeños.

En estos momentos, de lo que se trataba era de usar el mínimo de memoria para que nuestro programa fuera eficiente,y siempre intentar no llevarlo al máximo para evitar desbordamientos.

Siendo así llegamos al momento actual en el que podemos ver si queréis los tipos básicos, de un lenguaje al que tengo cariño, el C#:

De -128 a 127
Entero de 8 bits con signo
De 0 a 255
Entero de 8 bits sin signo
U+0000 a U+ffff
Carácter Unicode de 16 bits
De -32.768 a 32.767
Entero de 16 bits con signo
De 0 a 65.535
Entero de 16 bits sin signo
De -2.147.483.648 a 2.147.483.647
Entero de 32 bits con signo
De 0 a 4.294.967.295
Entero de 32 bits sin signo
De -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807
Entero de 64 bits con signo
De 0 a 18,446,744,073,709,551,615
Entero de 64 bits sin signo
(Fuente Microsoft.com)

Cuanto más grande es el número mayor bloque de memoria estamos usando. El signo, va a usar otro byte más por eso los tipos sin signo, uint, ulong, son el doble de grande que el de los tipos con signo int y Long.

De echo, hoy en día sigue siendo importante esto, ya que al usar los dispositivos móviles, es necesario que no llevemos al límite nuestros recursos...

El tipo que se usa como short en c# durante muchos años fue considerado como el tipo numérico por excelencia, usada en el spectrum, el amstrada cpc e incluso en los primeros pc...

Actualmente si usamos otros lenguajes de programación o si usamos c# pero ampliado, podemos manejar números todavía más grandes...

[Continuará]

No hay comentarios:

Publicar un comentario