Precisa de um freelancer, códigos-fonte e exemplos completos? Bem-vindo(a) ao meu site. Além de realizar alguns serviços como freelancer eu tenho alguns códigos-fonte e exemplos completos de Java, Delphi, PHP, Python, C/C++, Hibernate, JPA, Spring, JSP, Servlets, Ruby, Ruby On Rails e muitas outras linguagens e frameworks. Veja como falar comigo clicando aqui.
Parte 2 :: Variáveis, Constantes
e Tipos de Dados :: Tipos de dados
numéricos
Agora que você já sabe
como declarar variáveis e constantes, é hora de
saber quais os tipos de dados que você pode usar eu seus
aplicativos. Nos exemplos anteriores vimos que uma variável
é declarada seguinte o modelo:
Tipo_de_dados
nome_da_variável
Em alguns de nossos exemplos aprendemos a declarar variáveis
do tipo inteiro usando a palavra chave int.
int é parte de uma lista de tipos conhecidos
como built-in types, ou seja, tipos de dados
pré-definidos na linguagem.
Os tipos de dados em C# podem ser divididos em quatro categorias:
integrais, números de ponto-flutuante,
decimal e boolean.
Na categoria dos tipos de dados integrais (tipos que não
apresentam partes fracionárias) temos os constantes na
tabela seguinte:
Tipo
Faixa de Valores
Tamanho
sbyte
-128 até 127
8 bits
byte (sem sinal)
0 até 255
8 bits
char (unicode)
U+0000 até U+ffff
16 bits
short
-32.768 até 32.767
16 bits
ushort (sem sinal)
0 até 65.535
16 bits
int
-2.147.483.648 até 2.147.483.647
32 bits
uint (sem sinal)
0 até 4.294.967.295
32 bits
long
-9.223.372.036.854.775.808 até 9.223.372.036.854.775.807
64 bits
ulong (sem sinal)
0 até 18.446.744.073.709.551.615
64 bits
Com certeza o leitor deve estar se perguntando qual é
a real necessidade de se conhecer a faixa de valores possíveis
e a quantidade de bits ocupados por um determinado tipo de dados.
E qual é a diferença entre um tipo sinalizado
(sbyte) de um tipo não sinalizado (byte)?
A razão pela qual este curso apresenta tais informações
ficará clara à medida que você progredir
com seus estudos, não somente da linguagem C#, como também
de outras linguagens e técnicas de programação.
O apêndice A "Sistemas de Numeração"
mostra a você os passos necessários para converter
valores entre os sistemas decimais, binário, octal e
hexadecimal. Fique à vontade para consultar este apêndice
caso a explicação que faremos a seguir se torne
um pouco confusa neste estágio do estudo.
Inicialmente tomemos o valor 100 no sistema de numeração
decimal. Convertendo este valor para o sistema de numeração
binário temos 1100100. Suponha que decidíssemos
armazenar este valor em uma variável do tipo sbyte
(com sinal). Ora, como sabemos que este tipo de dados ocupa
8 bits, ou seja, 1 byte de memória, teríamos o
cenário reproduzido na figura seguinte:
Lembre-se do cálculo: 64 + 32 + 4 = 100. Como podemos
ver na figura, o bit mais significativo (na cor cinza) deste
byte é usado para sinalizar se o valor é positivo
ou negativo. Se o bit mais significativo for 0, valor é
positivo. Se for 1, o valor é negativo. Então,
como este bit tem essa função exclusiva para os
tipos de dados sinalizados, resulta que teremos apenas 7 bits
para armazenar os valores desejados. Assim, se tivermos todos
estes 7 bits com valores 1 e apenas o bit mais significativo
com o valor 0:
0111 1111
chegaremos à conclusão de que o valor máximo
a ser armazenado é realmente 127 (64 + 32 + 16 + 8 +
4 + 2 + 1 = 127). Tomemos agora o tipo de dados byte
(sem sinal). Como este tipo de dados só armazenará
valores positivos, não há a necessidade de se
usar o bit mais significativo como sinalizador. Em vez disso,
ele é considerado parte dos bits de dados e voltamos
novamente a ter 8 bits à nossa disposição.
Assim:
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255
Com este cálculo provamos que o tipo byte
pode realmente armazenar valores que variarão de 0 a
255. O mesmo cálculo pode ser usado para os outros tipos
de dados. Experimente efetuar este processo com os tipos de
dados short (aceita valores positivos e negativos)
e ushort (aceita somente valores positivos).
Voltemos nossa atenção agora para os tipos de
dados capazes de armazenar números de ponto-flutuante,
ou seja, números que contêm partes fracionárias.
C# fornece os tipos float e double.
Veja suas características na tabela seguinte:
Tipo
Faixa de Valores
Precisão
Tamanho
float
1.5x10-45
até 3.4x1038
7 dígitos
32 bits
double
5.0×10-324
até 1.7×10308
15-16 dígitos
64 bits
Para que você realmente entenda as faixas de valores e
precisão dos tipos de dados float e
double, acrescentamos as seguintes observações:
a) 1038 equivale a multiplicar
o valor 10 por ele mesmo 37 vezes. O resultado será o
numero 1 seguido de 38 zeros. 10-45 equivale a dividir
o valor 10 por ele mesmo 44 vezes. O resultado será uma
vírgula seguida pelo numero 1 precedido de 44 zeros.
b) A precisão de um tipo de dados
é a quantidade de dígitos que poderão ser
representados como casas decimais, ou seja, a quantidade de
dígitos significativos após a vírgula.
Se o calculo realizado exceder a quantidade de dígitos
permitidos após a vírgula, haverá arredondamento
para o inteiro mais próximo.
Use o tipo de dados double quando você
estiver realizando cálculos que exigem um pouco mais
de precisão no tocante às casas decimais. O tipo
de dados float é usado quando um possível
arredondamento não trará resultados indesejados
ao resultado final.
Existe, no entanto, uma opção quando o cálculo
exige uma precisão levada ao extremo, por exemplo, em
aplicações financeiras. Para estes cálculos
o C# nos fornece o tipo de dados decimal. Veja
suas características na tabela seguinte:
Todo o conteúdo deste site,
quando não devidamente observado, pertence a seus idealizadores
e não
poderá ser usado para outras finalidades senão estudo e
aprimoramento de técnicas de programação.
Certifique-se de ler asnotas legaisantes de proceder com
o acesso e leitura do
conteúdo disponibilizado nestas páginas.