Operadores Aritméticos
Produzido por Gustavo BarbosaTeoria
E aí pessoal, aqui é o Juan do Responde Aí, e hoje vamos falar de Operações Aritméticas com C++.
Introdução aos operadores
Você logo vai notar que matemática é uma parte muito importante da programação. Constantemente vamos querer somar e subtrair números, comparar se dois valores são iguais, ou até saber se uma sequência lógica é verdadeira ou falsa.
Pra realizar essas atividades nós utilizamos os operadores!
No C++ temos diversos operadores. A gente já utilizou o operador para inserir textos na função cout, e também usamos o operador = para guardar valores dentro de variáveis.
E agora vamos conhecer os operadores usados para operações matemáticas.
Os operadores aritméticos básicos
Estes são os operadores mais básicos do C++. Representam as operações de soma, subtração, multiplicação, divisão e resto da divisão. (alguns professores chamam o “resto da divisão” de “módulo”)
Estes cinco operadores são usados da mesma forma, é só colocar eles entre dois valores:
- Os valores podem até estar guardado em variáveis, por exemplo:
- Podem ser números escritos literalmente, tipo:
- Ou pode ser um número e uma variável numérica, dessa forma:
O resultado de qualquer operação pode ser guardado em uma variável, ou pode ser impresso diretamente usando cout.
Olha só o exemplo:
Vamos ver mais um exemplo. Qual é o resto da divisão entre por ? É só usar o operador %.
Atualizando variáveis
Imagine agora a situação: Você está desenvolvendo um programa pra contar os pontos do seu time no Brasileirão. Ele começa o campeonato com . Toda semana tem um jogo, e sempre que o time vencer ele ganha três pontos. Assim, se tiver uma vitória , se tiver duas vitórias , e assim por diante.
Como você pode ver, o valor da variável pontos vai mudar sempre que o time vencer. Para fazer isso, podemos usar a variável para guardar o resultado da operação . Saca só:
O que nós fizemos foi atualizar uma variável.
Isso funciona porque o C++ primeiro calcula todas as operações à direita, e só depois guarda o resultado na variável à esquerda:
Os operadores de atribuição
Você logo vai notar que atualizar variáveis é uma tarefa extremamente comum durante a programação.
Pra facilitar esse processo existem os operadores de atribuição:
Em programação, a palavra atribuir geralmente significa “guardar um valor”. Os operadores de atribuição fazem exatamente isso! Guardam um determinado valor em uma variável. O operador = apenas guarda os valores. Os demais operadores de atribuição efetuam operações matemáticas antes de guardar o valor resultante.
Voltando ao nosso exemplo dos pontos do time de futebol, se o time ganhar a segunda rodada, a gente pode usar o operador += pra adicionar à variável Pontos:
Operadores de incremento e decremento
De todas as operações de atualização de variável a mais comum é adicionar ou subtrair “1” da variável. Você pode efetuar essa operação utilizando ou com . Só que essas operações são tão comuns que inventaram um atalho, os operadores de incremento!
Voltando ao exemplo do time de futebol. Se o time empatar um jogo ele ganha um ponto. Então, podemos usar o operador ++ para adicionar mais um ponto ao time.
Sacou? É só colocar o operador ++ ou -- depois de uma variável, e aí a variável vai ser incrementada ou decrementada!
Fun fact alert! O C++ tem o “++” na frente porque ele é uma Linguagem C incrementada. (Piada de programador)
Conversão automática de tipos.
Uma coisa muito importante pra ter cuidado em C++ é com os tipos de dados! Por exemplo. Olha o resultado do seguinte programa:
Notou a diferença?
Na linha 08, a gente dividiu por . O resultado deveria ser , mas como as variáveis e são inteiras, o C++ simplesmente ignorou os números depois da vírgula e retornou o resultado .
Na linha 09, a gente dividiu por (um valor real). O resultado é, e devido a variável ser do tipo float, logo o C++ entendeu que o resultado deve ser do tipo float.
Esse é um comportamento padrão do C++ chamado conversão implícita, que é uma conversão automática dos tipos envolvidos. Basicamente, o C++ observa os tipos de dados envolvidos, e faz com o que o resultado corresponda ao tipo mais alto.
Vamos a outro exemplo. O que acontece se você somar o número inteiro 10 com a letra ‘C’?
O resultado é o inteiro ! Porque isso acontece? Primeiro o compilador olha os tipos envolvidos, e percebe que o tipo int é o mais alto dessa operação, por isso a letra ‘C’ que é do tipo char é automaticamente convertida pra um int. Existe uma tabela padronizada chamada ASCII que relacionada diversos caracteres a um número inteiro específico. O C++ usa essa tabela para converter a letra ‘C’ número equivalente . Então, depois disso, é feita a soma .
Ah, não precisa se preocupar, pois essa tabela ASCII não cai nas provas. Mas é interessante você entender que qualquer caractere em C++ corresponde a um número inteiro.
Eu sei... pareceu um pouco confuso. Mas com a prática você se acostuma, e depois de um tempo começa a usar a conversão automática ao seu favor!
Por exemplo, a gente pode forçar a conversão para um tipo qualquer! Basta a gente criar uma variável com o tipo que queremos, e guardar o resultado de qualquer operação dentro dela. Por exemplo:
No código acima a gente multiplicou dois números reais e , e o resultado é , e guardamos esse valor na variável . Porém a variável é do tipo inteiro. Então os valores depois da vírgula são ignorados, e guarda-se apenas o valor .
Estas conversões automáticas de tipos são ótimas, e nos ajudam a resolver problemas e tornam o nosso código mais prático de desenvolver.
Mas tenha cuidado! É muito comum ocorrer erros aqui, quando a gente acaba convertendo tipos sem perceber no meio das nossas contas. Outro problema comum é deixar o código difícil de entender. Afinal, nem sempre uma conversão implícita é fácil de perceber.
Então, se você tiver equações no seu código e os resultados estiverem estranhos, é sempre bom olhar em busca de variáveis fora do lugar, ou conversões inapropriadas.
Uma boa dica pra evitar erros é fazer cálculos aritméticos apenas com tipos parecidos entre si: números com números (ints, floats e doubles entre si). Fazer cálculos de booleanos com booleanos, e evitar usar caracteres nos seus cálculos. Isso vai te ajudar a evitar erros e tirar um 10 na prova!
Por hoje é isso pessoal! Agora, que tal fazer umas questões de fixação?