Exercício - Executar operações matemáticas
Agora que você entende os conceitos básicos de adição e, mais importante, a conversão de tipo implícita entre tipos de dados numéricos e de cadeia de caracteres, vamos examinar várias outras operações matemáticas comuns em dados numéricos.
Executar operações matemáticas básicas
Escreva código para executar adição, subtração, multiplicação e divisão com inteiros
Selecione todo o código no Editor .NET e pressione Delete ou Backspace para excluí-lo.
Insira o seguinte código no Editor .NET:
int sum = 7 + 5; int difference = 7 - 5; int product = 7 * 5; int quotient = 7 / 5; Console.WriteLine("Sum: " + sum); Console.WriteLine("Difference: " + difference); Console.WriteLine("Product: " + product); Console.WriteLine("Quotient: " + quotient);
Execute o código. Deverá ver o seguinte resultado:
Sum: 12 Difference: 2 Product: 35 Quotient: 1
Como pode ver:
+
é o operador de adição-
é o operador de subtração*
é o operador de multiplicação/
é o operador de divisão
No entanto, o quociente resultante do exemplo de divisão pode não ser o que você poderia esperar. Os valores após o decimal são truncados a partir do quotient
desde que é definido como um int
, e int
não pode conter valores após o decimal.
Adicionar código para executar a divisão usando dados decimais literais
Para ver a divisão funcionando corretamente, você precisa usar um tipo de dados que ofereça suporte a dígitos fracionários após o ponto decimal, como decimal
.
Exclua o código das etapas anteriores e insira o seguinte código no Editor .NET:
decimal decimalQuotient = 7.0m / 5; Console.WriteLine($"Decimal quotient: {decimalQuotient}");
Execute o código. Deverá ver o seguinte resultado:
Decimal quotient: 1.4
Para que isso funcione, o quociente (à esquerda do operador de atribuição) deve ser do tipo decimal
e pelo menos um dos números que estão sendo divididos também deve ser do tipo decimal
(ambos os números também podem ser um decimal
tipo).
Seguem-se mais dois exemplos que funcionam igualmente bem:
decimal decimalQuotient = 7 / 5.0m;
decimal decimalQuotient = 7.0m / 5.0m;
Contudo, as seguintes linhas de código não funcionarão (ou originarão resultados imprecisos):
int decimalQuotient = 7 / 5.0m;
int decimalQuotient = 7.0m / 5;
int decimalQuotient = 7.0m / 5.0m;
decimal decimalQuotient = 7 / 5;
Adicionar código para transmitir resultados da divisão inteira
E se não estiver a trabalhar com valores literais? Por outras palavras, e se tiver de dividir duas variáveis do tipo int
, mas não quiser que o resultado seja truncado? Neste caso, tem de realizar uma conversão de tipo de dados de int
para decimal
. A conversão é um tipo de conversão de dados que ordena ao compilador que trate temporariamente um valor como se fosse um tipo de dados diferente.
Para converter int
em decimal
, tem de adicionar o operador de conversão antes do valor. Use o nome do tipo de dados entre parênteses na frente do valor para convertê-lo. Nesse caso, você adicionaria (decimal)
antes das variáveis first
e second
.
Exclua o código das etapas anteriores e insira o seguinte código no Editor .NET:
int first = 7; int second = 5; decimal quotient = (decimal)first / (decimal)second; Console.WriteLine(quotient);
Execute o código. Deverá ver o seguinte resultado:
1.4
Nota
Você viu três usos para o operador de parênteses: invocação de método, ordem de operações e fundição.
Escreva o código para determinar o restante após a divisão de inteiros
O operador %
de módulo informa o restante da int
divisão. O que aprende realmente com isto é se um número é divisível por outro. Isto pode ser útil se, durante longas operações de processamento em que se exploram centenas ou milhares de registos de dados, quiser dar feedback ao utilizador final a cada 100 registos de dados processados.
Exclua o código das etapas anteriores e insira o seguinte código no Editor .NET:
Console.WriteLine($"Modulus of 200 / 5 : {200 % 5}"); Console.WriteLine($"Modulus of 7 / 5 : {7 % 5}");
Execute o código. Deverá ver o seguinte resultado:
Modulus of 200 / 5 : 0 Modulus of 7 / 5 : 2
Quando o módulo é 0, isto significa que o dividendo é divisível pelo divisor.
Ordem de operações
Como você aprendeu no exercício anterior, você pode usar os ()
símbolos como a ordem dos operadores de operações . No entanto, esta não é a única forma através da qual se determina a ordem das operações.
Em matemática, PEMDAS é um acrônimo que ajuda os alunos a se lembrarem da ordem das operações. A ordem é:
- Parênteses (o que estiver dentro dos parênteses é realizado em primeiro lugar)
- Expoentes
- Multiplicação e Divisão (da esquerda para a direita)
- Adição e Subtração (da esquerda para a direita)
O C# segue a mesma ordem do acrónimo PEMDAS, exceto no que diz respeito aos expoentes. Embora não haja nenhum operador expoente em C#, você pode usar o System.Math.Pow método. O módulo "Chamar métodos da Biblioteca de Classes .NET Framework com C#" incluirá este método e outros.
Escrever código para exercer a ordem de operações do C#
Exclua o código das etapas anteriores e insira o seguinte código no Editor .NET:
int value1 = 3 + 4 * 5; int value2 = (3 + 4) * 5; Console.WriteLine(value1); Console.WriteLine(value2);
Aqui você vê a diferença ao executar as mesmas operações em uma ordem diferente.
Execute o código. Deverá ver o seguinte resultado:
23 35
Recapitulação
Aqui está o que você aprendeu até agora sobre operações matemáticas em C#:
- Utilize operadores como
+
,-
,*
e/
para realizar operações matemáticas básicas. - A divisão de dois valores
int
resultará na truncagem de todos os valores à direita da vírgula. Para reter valores após o ponto decimal, você precisa lançar o divisor ou dividendo (ou ambos) em um número deint
ponto flutuante comodecimal
primeiro, então o quociente deve ser do mesmo tipo de ponto flutuante também, a fim de evitar truncamento. - Realize uma operação de conversão para tratar temporariamente um valor como se fosse de um tipo de dados diferente.
- Utilize o operador
%
para obter o resto depois da divisão. - A ordem das operações seguirá as regras do acrónimo PEMDAS.