Exercício – Executar operações matemáticas

Concluído

Agora que você compreende as noções básicas da adição e, mais importante, da conversão implícita entre tipos de dados numéricos e de cadeia de caracteres, é hora de examinar várias outras operações matemáticas comuns em dados numéricos.

Executar operações matemáticas básicas

Escrever o código para realizar a adição, subtração, multiplicação e divisão com inteiros

  1. Selecione todo o código que você escreveu anteriormente no Editor de Código do C# e pressione Delete ou Backspace para excluí-lo.

  2. Insira o seguinte código no Editor de Código em C#:

    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);
    
  3. Execute o código. Você deve ver o seguinte resultado:

    Sum: 12
    Difference: 2
    Product: 35
    Quotient: 1
    

Como você 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ê esperava. Os valores após a casa decimal são truncados em quotient, pois ele está definido como um int e um int não pode conter valores após a casa decimal.

Adicionar o código para realizar uma divisão usando dados decimais literais

Para que a divisão funcione corretamente, use um tipo de dados que dê suporte a dígitos fracionários após o ponto decimal, como decimal.

  1. Exclua o código das etapas anteriores e insira o seguinte código no Editor de Código do C#:

    decimal decimalQuotient = 7.0m / 5;
    Console.WriteLine($"Decimal quotient: {decimalQuotient}");
    
    
  2. Execute o código. Você deve ver o seguinte resultado:

    Decimal quotient: 1.4
    

Para que isso funcione, o quociente (à esquerda do operador de atribuição) deve ser do tipo decimale pelo menos um dos números que estão sendo divididos também deve ser do tipo decimal (ambos também podem ser do tipo decimal).

Aqui temos dois exemplos adicionais que funcionam tão bem quanto o anterior:

decimal decimalQuotient = 7 / 5.0m;
decimal decimalQuotient = 7.0m / 5.0m;

No entanto, as seguintes linhas de código não funcionam (ou fornecem resultados imprecisos):

int decimalQuotientA = 7 / 5.0m;
int decimalQuotientB = 7.0m / 5;
int decimalQuotientC = 7.0m / 5.0m;
decimal decimalQuotientD = 7 / 5;

Adicionar o código para converter os resultados da divisão de números inteiros

E se você não estiver trabalhando com valores literais? Em outras palavras, e se você precisar dividir duas variáveis do tipo int, mas não quiser que o resultado seja truncado? Nesse caso, você precisa executar uma conversão de tipo de dados de int em decimal. A conversão é um tipo de conversão de dados que instrui o compilador a tratar temporariamente um valor como se ele fosse um tipo de dados diferente.

Para converter int em decimal, você adiciona o operador de conversão antes do valor. É possível usar o nome do tipo de dados entre parênteses na frente do valor para convertê-lo. Nesse caso, adicione (decimal) antes das variáveis first e second.

  1. Exclua o código das etapas anteriores e insira o seguinte código no Editor de Código do C#:

    int first = 7;
    int second = 5;
    decimal quotient = (decimal)first / (decimal)second;
    Console.WriteLine(quotient);
    
  2. Execute o código. Você deve ver o seguinte resultado:

    1.4
    

Observação

Você aprendeu três usos para o operador de parênteses: invocação de método, ordem de operações e coerção.

Escrever o código para determinar o resto após a divisão de inteiros

O operador de módulo % informa o resto da divisão de int. O que você realmente aprende com isso é se um número é divisível por outro. Isso pode ser útil durante operações de processamento longo ao percorrer em loop centenas ou milhares de registros de dados quando deseja fornecer comentários para o usuário final após cada 100 registros de dados terem sido processados.

  1. Exclua o código das etapas anteriores e insira o seguinte código no Editor de Código do C#:

    Console.WriteLine($"Modulus of 200 / 5 : {200 % 5}");
    Console.WriteLine($"Modulus of 7 / 5 : {7 % 5}");
    
    
  2. Execute o código. Você deve ver o seguinte resultado:

    Modulus of 200 / 5 : 0
    Modulus of 7 / 5 : 2
    

Quando o módulo é 0, isso significa que o dividendo é divisível pelo divisor.

Ordem de operações

Conforme você aprendeu no exercício anterior, é possível usar os símbolos () como os operadores de ordem das operações. No entanto, esta não é a única forma da ordem das operações ser determinada.

Em matemática, PEMDAS é um acrônimo que ajuda os alunos a se lembrar da ordem das operações. A ordem é:

  1. Parêntese (o que estiver dentro do parêntese é executado primeiro)
  2. Exponentes
  3. Multiplicação e Divisão (da esquerda para a direita)
  4. Adição e Subtração (da esquerda para a direita)

C# segue a mesma ordem que o acrônimo PEMDAS, exceto pelos exponentes. Embora não haja um operador de expoente em C#, é possível usar o método System.Math.Pow. O módulo "Chamar métodos da Biblioteca de Classes .NET usando C#" apresentará esse e outros métodos.

Escrever o código para exercitar a ordem de operações em C#

  1. Exclua o código das etapas anteriores e insira o seguinte código no Editor de Código do C#:

    int value1 = 3 + 4 * 5;
    int value2 = (3 + 4) * 5;
    Console.WriteLine(value1);
    Console.WriteLine(value2);
    

    Aqui, é possível ver a diferença ao executar as mesmas operações em uma ordem diferente.

  2. Execute o código. Você deve ver o seguinte resultado:

    23
    35
    

Recapitulação

Veja o que você aprendeu até agora sobre operações matemáticas em C#:

  • Use operadores como +, -, * e / para executar operações matemáticas básicas.
  • A divisão de dois valores int resultará no truncamento dos valores após o ponto decimal. Para manter os valores após o ponto decimal, primeiro você precisará converter o divisor ou o dividendo (ou ambos) de int em um número de ponto flutuante como decimal, em seguida, o quociente deverá ser do mesmo tipo de ponto flutuante para evitar o truncamento.
  • Execute uma operação de conversão para tratar um valor temporariamente como se ele fosse um tipo de dados diferente.
  • Use o operador % para capturar o resto após a divisão.
  • A ordem das operações seguirá as regras do acrônimo PEMDAS.