Pesquisar este blog

sexta-feira, 16 de agosto de 2013

Conceito de Variável em C#

Conceito de variável

Em programação variável é um objeto ou um espaço na memória onde podemos armazenar um valor. Uma variável só existe em tempo de execução, ou seja, quando o programa está sendo executado, elas são associadas a nomes. Ao nomear uma variável devemos sempre ser o mais descritivos possível.
As variáveis são definidas por tipos, existem os tipos textuais, os tipos inteiros, os tipos de ponto flutuante que serão descritos na tabela abaixo:

Tipo C#

Valores possíveis

Tamanho na memória

Valor padrão

bool true (verdadeiro) ou false (falso) 1 bit false
byte 0 a 255 1 byte false
sbyte -128 a 127 1 byte false
char um caractere 2 bytes '\0'
decimal Valores decimais com 128 bits de precisão, 28~29 digitos significantes (-7,9 x 1028 a 7,9 x 1028) / 100 to 28 0.0M
double Valores decimais com 64 bits de precisão (+/-)5,0 x 10-324 a (+/-)1,7 x 10308 0.0D
float Valores decimais com 32 bits -3,4 x 1038 a + 3,4 x 1038 0.0F
int Inteiro com 32 bits -2.147.483.648 a 2.147.483.647 0
long Inteiro com 64 bits -923.372.036.854.775.808 a 9.223.372.036.854.775.807 0L
sbyte Inteiro de 8 bits -128 a 127 0
short Inteiro de 16 bits -32.768 a 32.767 0
uint Inteiro positivo de 32 bits 0 a 4.294.967.295 0
ulong Inteiro positivo 64 bits 0 a 18.446.744.073.709.551.615 0
ushort Inteiro positivo 16 bits 0 a 65.535 0
string Conjunto de caracteres, sendo 16 bits por caractere texto tamanho ilimitado ""

Quando criamos, ou declaramos, uma variável estamos reservando um espaço na memória para armazenar aquele valor. Por exemplo ao declarar uma variável do tipo long, estamos reservando 64 bits de memoria para esta variável.
Cada tipo de variável possui um determinado tamanho e a capacidade de armazenar uma certa quantidade de dados, conforme mostrado na tabela acima.
Um ponto importante e explicar qual e a diferenca entre o decimal, o double e o float. O double e o float são números binários de ponto flutuante, ou seja, eles representam um número desta forma:
100101,10101100
Já o decimal é um número decimal de ponto flutuante, ou seja eles representam um número desta forma:
1234,56
O importante de tudo isso é que nós estamos acostumados a representar números decimais da mesma forma que o decimal faz, e nós sempre esperamos ter o resultado exato deste número. Quando isso é feito por uma representação binária, por exemplo o 0,1 usando uma representação binária, nós teremos um valor aproximado de 0,1.
Portanto ao usar double e float nós temos uma aproximação do valor, já com decimal este valor sempre será exato.
Quando usar um e quando usar outro? Bom o exemplo mais comum que temos de uso do decimal são valores monetários, ao depositar 10,20 na sua conta do banco, você espera sempre ter este valor exatamente assim depositado em sua conta, sem arredondamentos.
Já o float e o decimal podem ser usados para cálculos de média, dados científicos, etc.

Operadores matemáticos:

Tipo do Operador

Como usar

Descrição

Multiplicador e divisão x * y
x / y
x % y
* define a multiplicação,
/ define a divisão
e % define o resto da divisão
Soma e subtração x + y
x - y
+ define a adição
- define a subtração
Shift x << y
x >> y
<< define um deslocamento binario a esquerda
>> define um deslocamento binário a direita

Todos os operadores mostrados na tabela acima estão em ordem de execução, portando o * é o operador que tem a máxima prioridade, se tivermos a seguinte expressão:

int valor = 1+ 2 * 3 
O resultado desta operação seria 7, já que * tem precedência ao + a operação que será realizada seria:
int valor = 1 + (2 * 3)
valor = 1 + 6
valor = 7
A precedencia dos operadores define quem é executado primeiro, e esta ordem se dá de cima para baixo na tabela mostrada acima.
Tirando os operadores matemáticos básicos, o que temos de novo aqui são os operadores de shift, que deslocam um bit pra esquerda ou pra direita. Na operação de deslocamento pra esquerda acontece uma multiplicação do valor da esquerda por 2 elevado a n, onde n é o valor que está a direita:
1 << 1   = 1 * 2 ^1 -> 1 * 2 = 2
res0: Int = 2
1 << 2  = 1 * 2 ^2 -> 1 * 4 = 4
res1: Int = 4
1 << 3 = 1 * 2 ^3 -> 1 * 8 = 8
res2: Int = 8
2 << 1 = 2 * 2 ^1 -> 2 * 2 = 4
res3: Int = 4
2 << 2 = 2 * 2 ^2 -> 2 * 4 = 8
res4: Int = 8
2 << 3 = 2 * 2 ^3 -> 2 * 8 = 16
res5: Int = 16
2 << 4 = 2 * 2 ^1 -> 2 * 2 = 4
res6: Int = 32
Já na operação de deslocamento pra direita acontece uma divisão do valor da esquerda por 2 elevado a n, onde n é o valor que está a direita:
scala> 16 >> 2 = 16 / 2 ^2 -> 16 / 4 =4
res22: Int = 4
scala> 16 >> 1  = 16 / 2 ^1 -> 16 / 2 =8
res23: Int = 8

Referências:

Apresentação 

Nenhum comentário:

Postar um comentário