- Estudar via PDF: Apostila JavaScript Progressivo
Operadores de Incremento e Decremento: ++ e --
Os chamados operadores de atribuição composta nada mais são que meios, maneiras ou atalhos, para escrevermos expressões de atribuição. Vamos usar bastante eles a partir de agora, principalmente em nossa seção de laços e loopings em JS.
No tutorial anterior, sobre o laço while em JavaScript, fizemos uso de uma expressão:
count = count + 1
Isso quer dizer o seguinte: o novo valor de count vai ser igual ao anterior somado de 1.
Ou seja, se antes count = 1
Depois de : count = count + 1
O valor de count vai ser 2.
Se count=10
E fazemos: count = count + 1
Temos: count = 11
Ou seja, pegamos o valor anterior e adicionamos um.
Podemos abreviar essa expressão:
count = count + 1
Para simplesmente:
count++
O operador ++ é dito de incremento, ele aumenta o valor da variável em uma unidade.
Existe também o operador de decremento: --
Que é o mesmo que fazer: count = count - 1
Ou seja, o novo valor de count é o valor antiga, subtraído de 1.
O código abaixo, por exemplo, faz uma contagem regressiva, de 10 até 1:
HTML:
<!DOCTYPE html> <html> <head> <title>Apostila JavaScript Progressivo</title> <script type="text/javascript" src="script.js"> </script> </head> <body> <button onclick="contar()">Contar</button><br /> </body> </html>
JS:
function contar(){ count = 10; while (count>0){ document.writeln(count+"<br />"); count--; } }
Operadores de atribuição aritmética: +=, -=, *=, /= e %=
+= e -=
Assim como adicionamos um: count = count + 1
Podemos adicionar outro valor, como 2: count = count + 2
Isso pode ser abreviado para:
count += 1
count += 2
Se quisermos subtrair o valor y de x podemos fazer tanto:
x = x - y
Como: x -= y
O mesmo vale para multiplicação e divisão:
x = x * y
Abreviando: x *= y
Por exemplo, tem um valor em real e quer ter ele em dólar?
Faça: valor = valor / dolar
Ou mais simplificadamente: valor /= dolar
Prontinho, agora o valor está em $.
E nosso tutorial sobre números pares, ímpares e outros múltiplos ?
Usamos o operador % de resto da divisão para saber o resto da divisão por 2.
A abreviação também vale para esse operador.
Se x = 10
E fazemos: x %= 2
Estamos fazendo: x = x%2 = 0
Bem simples, não?
Pode até parecer bobagem e preguiça dos programadores, mas você vai notar que com o tempo isso nos poupa muuuuito tempo, pois usamos demais essas operações matemáticas, mas demais meeeesmo. Além de deixar o código mais clean e menor.
Pré e Pós incremento e decremento
Se fizermos: y++
Você já sabe o que acontece: a variável y se incrementa em uma unidade.
Porém, há uma diferença entre:
x = y++
x = ++y
No primeiro caso, temos um pós-incremento.
Primeiro o valor de y é atribuído a x, só depois a variável y é incrementada.
Vamos supor que inicialmente:
x=10
y=1
Após fazemos: x = y++, temos:
x=1
y=2
No segundo caso, primeiro a variável y é incrementada.
Só depois ela é atribuída a x.
Se inicialmente temos:
x = 10
y = 1
Fazemos: x = ++y
Primeiro y se incrementa e passa a valer 2
Só depois disso x recebe o novo valor.
Obviamente, o mesmo vale para o decremento.
Não tem mistério nem confusão: se vem primeiro o incremento ou decremento, então a atribuição vai ser em relação novo valor, incrementado ou decrementado.
Se vem primeiro a variável, a atribuição é com esse valor antigo, antes de ser incrementado ou decrementado.
Esses tipos de questões são bem comuns em concursos!
Exercício de Operadores de Atribuição
Inicialmente, x=5, produto = 4, divisao=14
Fazemos duas operações:
1. produto *= x++;
2. divisao /= ++x;
Quando vale cada variável após as duas operações, realizadas na sequência?
Resposta e solução comentada: na apostila!
21
ResponderExcluire
20
Eu instalei o node e fiz ambas as contas utilizando o terminal. O retorno foi esse:
Excluir1) 20
e
2) 2
Mas, fazendo a conta de "cabeça" consegui chegar ao mesmo resultado que você chegou.
Rapaz, eu acho que o produto vale 5 e a divisão 20.
ExcluirSe o produto é igual a x++ ele vai receber o valor de x=5. Neste caso o valor de x++ é atribuído ao produto, antes de ser incrementado. No outro caso o incremento ocorre antes da atribuição.