View on GitHub

aulas-programacao-csharp

Materiais de Aula - Programação de Computadores com C#

Variáveis, constantes e tipos de dados

📽 Veja esta vídeo-aula no Youtube

Podemos armazenar dados na memória principal (RAM) do computador para serem tratados pelo nosso programa. Precisaremos disso para tratar entrada de dados externas ao programa, e para implementar as lógicas que resolverão os problemas que nos são apresentados.

Armazenamos valores na memória utilizando duas estruturas:

Tipos de dados

Toda variável pode armazenar um tipo específico de informação. Esse tipo dirá quais valores são permitidos na variável (textos, números, datas, etc.).

Os tipos que permitem armazenar textos são:

Tipo Classe Descrição
char System.Char Um único caractere em codificação UTF-16, armazenado em 16 bits.
string System.String Uma cadeia (sequência) de caracteres, cada um deles do tipo char

Mais detalhes aqui.

Os tipos numéricos que mais utilizaremos neste curso:

Tipo Classe Descrição
byte System.Byte Número inteiro sem sinal, entre 0 e 255, armazenado em 8 bits
short System.Int16 Número inteiro com sinal, entre -32.768 e 32.767, armazenado em 16 bits
int System.Int32 Número inteiro com sinal, entre -2.147.483.648 e 2.147.483.647, armazenado em 32 bits
long System.Int64 Número inteiro com sinal, entre -9.223.372.036.854.775.808 e 9.223.372.036.854.775.807, armazenado em 64 bits
float System.Single Número real (com casas decimais) em ponto flutuante, entre -3,4 × 1038 e +3,4 × 1038, com precisão de 6 a 9 dígitos, armazenado em 4 bytes.
double System.Double Número real (com casas decimais) em ponto flutuante, entre -1,7 × 10308 e +1,7 × 10308, com precisão de 15 a 17 dígitos, armazenado em 8 bytes.
decimal System.Decimal Número real (com casas decimais) em ponto flutuante de alta precisão, entre ±1,0 x 10-28 e ±7,9228 x 1028, com precisão de 28 a 29 dígitos, armazenado em 16 bytes

Mais detalhes sobre os tipos numéricos aqui e aqui.

Utilizaremos também um tipo lógico:

Tipo Classe Descrição
bool System.Boolean Armazena valores lógicos VERDADEIRO (true) e FALSO (false), armazenado em 32 bits

Mais detalhes aqui.

Declarando variáveis

Uma variável deve ser declarada indicando seu tipo, seu nome e, opcionalmente, um valor inicial.

Exemplos:

Uma variável inteira chamada idade com o valor inicial 17:

int idade = 17;

Uma variável decimal chamada salario sem valor inicial:

decimal salario;

Uma variável string chamada nome com o valor inicial Maria Aparecida dos Santos;

string nome = "Maria Aparecida dos Santos";

Uma variável booleana chamada possuiCnh com o valor inicial true:

bool possuiCnh = true;

Utilizando variáveis

Podemos gravar um valor em uma variável assim:

string mensagem;

mensagem = "Pressione uma tecla para continuar...";

Esse processo é chamado de atribuição.

Podemos utilizar essa variável em outra parte do programa:

Console.WriteLine(mensagem); // Exibe o valor armazenado

Gravando entrada via teclado em variáveis

Podemos utiliza a atribuição para ler o valor digitado pelo usuário em uma variável string:

string valorDigitado = Console.ReadLine()!;

Porém, para receber valores numéricos, precisamos utilizar um método de conversão (Parse) da classe adequada:

int idadeDigitada = Int32.Parse(valorDigitado);

ou então, utilizar a classe System.Convert:

int idadeDigitada = Convert.ToInt32(valorDigitado);

ou ainda, utilizando TryParse, que permite avaliar se a conversão ocorreu com sucesso:

int idadeDigitada;
bool convertidoComSucesso = Int32.TryParse(valorDigitado, out idadeDigitada);

Conversão explícita (typecast)

Podemos forçar a leitura de um valor de um tipo como se fosse de outro. Muitas vezes esse processo pode substituir uma conversão, porém é recomendado somente quando não há possibilidade de erro de conversão.

int x = 1, y = 2;
double quociente;
quociente = x / y;                 // resulta em 0
quociente = (double)x / (double)y; // resulta em 0.5

double a = 2.6, b = 2;
double quocienteInteiro;
quocienteInteiro = a / b;         // resulta em 1.3
quocienteInteiro = (int)(a / b);  // resulta em 1

int codigoAscii = (int)'A';       // resulta em 65
char caractere  = (char)66;       // resulta em 'B'

Constantes

São criadas e acessadas da mesma maneira que as variáveis utilizando a palavra-chave const, porém só podem ter seu valor atribuído na declaração. Depois disso são imutáveis.

const double NumeroPiAproximado = 3.1416;

Convenção de nomenclatura

Variáveis devem ser nomeadas utilizando caracteres alfanuméricos ou _, desde que não iniciando em numeral.

Há uma lista de palavras-chave que são reservadas pela linguagem. Caso seja necessário criar uma variável com o mesmo nome de uma palavra-chave reservada, inicie o nome com @ (por exemplo, int @base = 2; @base++;).

Utilizaremos camelCase para variáveis e PascalCase para constantes.

Mais detalhes aqui e aqui.