Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tutorial ensina sobre os tipos numéricos em C#. Você escreve pequenas quantidades de código e, em seguida, compila e executa esse código. O tutorial contém uma série de lições que exploram números e operações matemáticas em C#. Estas lições ensinam os fundamentos da linguagem C#.
Neste tutorial, você:
- Lançar um Codespace no GitHub com um ambiente de desenvolvimento C#.
- Explora a matemática inteira.
- Aprende a ordem das operações.
- Aprende limites inteiros e precisão.
- Aprende tipos de ponto flutuante.
- Aprende sobre o tipo decimal.
Pré-requisitos
Deve ter um dos seguintes:
- Uma conta GitHub para usar Codespaces GitHub. Se ainda não tiver uma, pode criar uma conta gratuita no GitHub.com.
- Um computador com as seguintes ferramentas instaladas:
Explore a matemática dos números inteiros
Para iniciar um GitHub Codespace com o ambiente de tutorial, abra uma janela do navegador para o repositório tutorial codespace. Selecione o botão verde de Código e o separador Codespaces . Depois seleciona o + sinal para criar um novo Codespace usando este ambiente. Se completaste o tutorial hello world , podes abrir esse codespace em vez de criares um novo.
Quando o seu espaço de código carregar, crie um novo ficheiro na pasta tutoriais chamado numbers.cs.
Abra o seu novo ficheiro.
Digite ou copie o seguinte código para numbers.cs:
int a = 18; int b = 6; int c = a + b; Console.WriteLine(c);Execute este código digitando os seguintes comandos no terminal integrado:
cd ./tutorials dotnet numbers.csViste uma das operações matemáticas fundamentais com inteiros. O
inttipo representa um número inteiro, zero, positivo ou negativo. Utiliza-se o símbolo+para adição. Outras operações matemáticas comuns para inteiros incluem:-
-para subtração -
*para multiplicação -
/para divisão
-
Comece por explorar essas diferentes operações. Adicione estas linhas após a linha que escreve o valor de
c:// subtraction c = a - b; Console.WriteLine(c); // multiplication c = a * b; Console.WriteLine(c); // division c = a / b; Console.WriteLine(c);Execute este código escrevendo
dotnet numbers.csna janela do terminal.
Você também pode experimentar escrevendo várias operações matemáticas na mesma linha, se desejar. Experimente c = a + b - 12 * 17; , por exemplo. É permitido misturar variáveis e números constantes.
Dica
À medida que exploras C# (ou qualquer linguagem de programação), podes cometer erros ao escrever código. O compilador encontra esses erros e reporta-os. Quando a saída contiver mensagens de erro, olhe atentamente para o código de exemplo e para o código na sua janela para ver o que corrigir. Também podes pedir ao Copilot para encontrar diferenças ou identificar erros. Esse exercício ajuda você a aprender a estrutura do código C#.
Terminaste o primeiro passo. Antes de começares a próxima secção, vamos mover o código atual para um método separado. Um método é uma série de afirmações agrupadas e com um nome. Chama um método escrevendo o nome do método seguido de (). Organizar o seu código em métodos facilita começar a trabalhar com um novo exemplo. Quando terminares, o teu código deverá ficar assim:
WorkWithIntegers();
void WorkWithIntegers()
{
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
// subtraction
c = a - b;
Console.WriteLine(c);
// multiplication
c = a * b;
Console.WriteLine(c);
// division
c = a / b;
Console.WriteLine(c);
}
Explore a ordem de operações
Comente a chamada para
WorkingWithIntegers(). Isto torna a saída menos desordenada enquanto trabalhas nesta parte://WorkWithIntegers();Em C#, o
//inicia um comentário. Comentários são qualquer texto que queiras manter no teu código-fonte, mas não executar como código. O compilador não gera qualquer código executável a partir dos comentários. ComoWorkWithIntegers()é um método, só precisas de comentar uma linha.A linguagem C# define a precedência de diferentes operações matemáticas com regras consistentes com as regras que você aprendeu em matemática. A multiplicação e a divisão têm precedência sobre a adição e a subtração. Explore isso adicionando o seguinte código após a chamada a
WorkWithIntegers(), e escrevendodotnet numbers.csna janela do terminal:int a = 5; int b = 4; int c = 2; int d = a + b * c; Console.WriteLine(d);A saída demonstra que a multiplicação é realizada antes da adição.
Você pode forçar uma ordem diferente de operação adicionando parênteses em torno da operação ou operações que deseja executar primeiro. Adicione as seguintes linhas e execute novamente:
d = (a + b) * c; Console.WriteLine(d);Explore mais combinando muitas operações diferentes. Adicione algo como as seguintes linhas. Tente
dotnet numbersnovamente na janela do terminal.d = (a + b) - 6 * c + (12 * 4) / 3 + 12; Console.WriteLine(d);Você pode notar um comportamento interessante para números inteiros. A divisão inteira sempre produz um resultado inteiro, mesmo quando você esperaria que o resultado incluísse uma parte decimal ou fracionária.
Se não viu este comportamento, experimente o seguinte código:
int e = 7; int f = 4; int g = 3; int h = (e + f) / g; Console.WriteLine(h);Escreve
dotnet numbers.csnovamente na janela do terminal para ver os resultados.
Antes de continuar, vamos pegar em todo o código que escreveste nesta secção e colocá-lo num novo método. Chame esse novo método OrderPrecedence. Seu código deve ter esta aparência:
// WorkWithIntegers();
OrderPrecedence();
void WorkWithIntegers()
{
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
// subtraction
c = a - b;
Console.WriteLine(c);
// multiplication
c = a * b;
Console.WriteLine(c);
// division
c = a / b;
Console.WriteLine(c);
}
void OrderPrecedence()
{
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
d = (a + b) * c;
Console.WriteLine(d);
d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Console.WriteLine(d);
int e = 7;
int f = 4;
int g = 3;
int h = (e + f) / g;
Console.WriteLine(h);
}
Explore a precisão e os limites de números inteiros
A amostra anterior mostrou que a divisão inteira trunca o resultado. Podes obter o resto usando o operador resto, o % carácter.
Experimente o seguinte código após a chamada ao método para
OrderPrecedence():int a = 7; int b = 4; int c = 3; int d = (a + b) / c; int e = (a + b) % c; Console.WriteLine($"quotient: {d}"); Console.WriteLine($"remainder: {e}");O tipo inteiro C# difere dos inteiros matemáticos de uma outra maneira: o tipo
inttem limites mínimos e máximos. Tente o seguinte código para ver esses limites:int max = int.MaxValue; int min = int.MinValue; Console.WriteLine($"The range of integers is {min} to {max}");Se um cálculo produzir um valor que exceda esses limites, terá uma condição de subfluxo ou de estouro. A resposta parece fluir de um limite para o outro. Para ver um exemplo, adicione estas duas linhas ao seu código:
int what = max + 3; Console.WriteLine($"An example of overflow: {what}");
Observe que a resposta está muito próxima do número inteiro mínimo (negativo). É o mesmo que min + 2. A operação de adição transbordou os valores permitidos para inteiros. A resposta é um grande número negativo porque um overflow "salta" do maior valor inteiro possível para o menor.
Existem outros tipos numéricos com limites e precisão diferentes que podes usar quando o int tipo não corresponde às tuas necessidades. Vamos explorar esses tipos de números a seguir.
Trabalhar com o tipo duplo
O tipo numérico double representa um número de ponto flutuante de precisão dupla. Esses termos podem ser novos para você. Um número de ponto flutuante é útil para representar números não inteiros que podem ser muito grandes ou pequenos em magnitude.
Precisão dupla é um termo relativo que descreve o número de dígitos binários usados para armazenar o valor. Os números de precisão dupla têm o dobro do número de dígitos binários que os números de precisão única. Nos computadores modernos, é mais comum usar-se a dupla precisão do que números de precisão simples.
Os números de precisão simples são declarados usando a float palavra-chave. Vamos explorar.
Adicione o seguinte código e veja o resultado:
double a = 5; double b = 4; double c = 2; double d = (a + b) / c; Console.WriteLine(d);Observe que a resposta inclui a parte decimal do quociente.
Tente uma expressão um pouco mais complicada com números do tipo double. Você pode usar os seguintes valores ou substituir outros números:
double a = 19; double b = 23; double c = 8; double d = (a + b) / c; Console.WriteLine(d);O intervalo de um valor duplo é muito maior do que o de valores inteiros. Experimente adicionar o código seguinte ao que escreveu até agora:
double max = double.MaxValue; double min = double.MinValue; Console.WriteLine($"The range of double is {min} to {max}");Estes valores são impressos em notação científica. O número à esquerda do
Eé o significante. O número à direita é o expoente, como uma potência de 10.Assim como os números decimais em matemática, os duplos em C# podem ter erros de arredondamento. Experimente este código:
double third = 1.0 / 3.0; Console.WriteLine(third);Você sabe que
0.3é3/10e não exatamente o mesmo que1/3. Da mesma forma,0.33é33/100. Esse valor está mais próximo de1/3, mas ainda não é exato. Não importa quantas casas decimais você adicionar, um erro de arredondamento permanece.
Desafio
Experimente outros cálculos com números grandes, pequenos, multiplicação e divisão usando o double tipo. Tente cálculos mais complicados. Depois de passares algum tempo com o desafio, pega no código que escreveste e coloca-o num novo método. Nomeia esse novo método WorkWithDoubles.
Trabalhar com tipos decimais
Viste os tipos numéricos básicos em C#: inteiros e duplos. Há outro tipo a aprender: o tipo decimal. O tipo decimal tem um alcance menor, mas maior precisão do que double.
Vejamos:
decimal min = decimal.MinValue; decimal max = decimal.MaxValue; Console.WriteLine($"The range of the decimal type is {min} to {max}");Observe que o intervalo é menor do que o tipo
double.Você pode ver a maior precisão com o tipo decimal tentando o seguinte código:
double a = 1.0; double b = 3.0; Console.WriteLine(a / b); decimal c = 1.0M; decimal d = 3.0M; Console.WriteLine(c / d);Note que a matemática com o tipo decimal tem mais dígitos à direita do ponto decimal.
O sufixo
Mnos números indica que uma constante deve usar odecimaltipo. Caso contrário, o compilador assume o tipodouble.
Observação
A letra M é a mais visualmente distinta entre as palavras-chave double e decimal.
Desafio
Agora que já conheces os diferentes tipos numéricos, escreve código que calcule a área de um círculo cujo raio é de 2,50 centímetros. Lembre-se que a área de um círculo é o raio ao quadrado multiplicado por PI. Uma dica: o .NET contém uma constante para PI, Math.PI que você pode usar para esse valor.
Math.PI, como todas as constantes declaradas no namespace System.Math, é um valor double. Por essa razão, deves usar os valores de double em vez de decimal para este desafio.
Deverá obter uma resposta entre 19 e 20.
Quando experimentares, abre o painel de detalhes para veres como te saíste:
double radius = 2.50;
double area = Math.PI * radius * radius;
Console.WriteLine(area);
Tente outras fórmulas, se desejar.
Você pode saber mais sobre números em C# nos seguintes artigos:
Recursos de limpeza
O GitHub apaga automaticamente o seu Codespace após 30 dias de inatividade. Se planeia explorar mais tutoriais nesta série, pode deixar o seu Codespace provisionado. Se estiver pronto para visitar o site .NET para descarregar o SDK .NET, pode eliminar o seu Codespace. Para eliminar o seu Codespace, abra uma janela do navegador e vá aos seus Codespaces. Deves ver uma lista dos teus codespaces na janela. Selecione os três pontos (...) na entrada para o espaço de código do tutorial de aprendizado e selecione apagar.