Módulo 3 - Variáveis, as caixas da memória

Atribuição: guardar, substituir e a linha que parece impossível

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 02/07/2026

O que você vai aprender

  • Ler a atribuição sempre como “recebe”: caixa <- valor.
  • Entender que a atribuição substitui: o valor antigo é descartado sem aviso.
  • Prever o valor final de uma variável após várias atribuições em sequência.
  • Decifrar a linha pontos <- pontos + 5: primeiro a conta, depois a guardada.

A seta que guarda: leia sempre como “recebe”

A atribuição tem uma coreografia fixa de dois tempos, sempre na mesma ordem. Tempo um: o computador resolve tudo o que está à DIREITA da seta até sobrar um único valor. Tempo dois: esse valor entra na caixa nomeada à esquerda. Na linha troco <- 50 - 42.50, a máquina primeiro faz a conta (7.50) e só então guarda o resultado na caixa troco. A caixa nunca guarda a conta; guarda o resultado dela. Por isso o lado esquerdo só pode ter UMA coisa: o nome de uma variável. Escrever 50 - 42.50 <- troco é como mandar guardar uma caixa dentro do feijão: a frase nem faz sentido.

preco <- 42.50
valor_pago <- 50
troco <- valor_pago - preco
escreva(troco)
// saída:
// 7.50

O lado direito resolve primeiro (50 - 42.50 = 7.50); o resultado entra na caixa troco.

Repare que a terceira linha do exemplo usa OUTRAS variáveis no lado direito. Isso é o dia a dia da programação: caixas alimentando caixas. Quando a máquina encontra valor_pago - preco, ela abre as duas caixas, pega os valores do momento (50 e 42.50), faz a conta e guarda o resultado. As caixas originais continuam intactas: ler uma variável não a esvazia, assim como conferir o rótulo do pote não gasta o café. Só a atribuição muda o conteúdo de uma caixa; a leitura é sempre inofensiva.

Substituir é jogar fora: a caixa não guarda histórico

Agora, a regra que mais derruba iniciante em prova: quando você atribui um valor novo a uma variável que já tinha conteúdo, o antigo é descartado na hora. A caixa não tem histórico, não tem lixeira, não tem “desfazer”. Pense no quadro de avisos de um prédio: quando o síndico prega um aviso novo por cima, o anterior deixa de existir para quem passa. Se o algoritmo escreve saldo <- 100 e depois saldo <- 30, o saldo é 30 e ponto; o 100 não está “atrás” do 30, não está em lugar nenhum.

Sequência em três quadros: no primeiro, a caixa pontos recebe o valor 10; no segundo, o valor 40 entra na caixa e o 10 cai numa lixeira ao lado; no terceiro, a caixa pontos mostra apenas o 40, com o aviso de que o valor antigo não pode ser recuperado.
A atribuição substitui: o valor novo entra, o antigo vai para o descarte definitivo.

🎮 Jogo da aula

Qual valor sobrevive?

Três atribuições em sequência na mesma caixa. Execute o código de cabeça, linha por linha, e escolha o que aparece na tela.

pontos <- 10
pontos <- pontos + 5
pontos <- 40
escreva(pontos)

A pegadinha do jogo mora na terceira linha: muita gente soma 15 + 40 e responde 55, esperando que a atribuição acumule. Ela não acumula; ela substitui. Acumular é possível, mas precisa ser pedido por extenso, com a variável aparecendo também no lado direito, como na segunda linha. Essa distinção entre trocar e acumular é exatamente o assunto da próxima seção, e vai reaparecer com força no módulo 9, quando os acumuladores viram ferramenta central dos laços.

A linha que parece impossível: pontos <- pontos + 5

Para quem vem da matemática da escola, a linha pontos <- pontos + 5 parece um absurdo: nenhum número é igual a ele mesmo mais cinco. O segredo é lembrar que a seta não é o sinal de igual: é uma ORDEM em dois tempos. Tempo um, lado direito: abra a caixa pontos, pegue o valor atual (digamos, 10), some 5, obtenha 15. Tempo dois, lado esquerdo: guarde 15 na caixa pontos, substituindo o 10. A mesma variável desempenha dois papéis em momentos diferentes: fornecedora do valor antigo no primeiro tempo, destinatária do valor novo no segundo. Nunca ao mesmo tempo.

cofrinho <- 0
cofrinho <- cofrinho + 20
cofrinho <- cofrinho + 35
escreva(cofrinho)
// saída:
// 55

O padrão do cofrinho: cada linha lê o total atual, soma o depósito e guarda o novo total.

Teste rápido

Depois das linhas “saldo <- 80” e “saldo <- saldo - 30”, qual é o conteúdo da caixa saldo?

Perguntas frequentes

Por que o curso usa <- em vez do sinal de igual?
Para deixar a direção do movimento explícita: o valor viaja da direita para a esquerda. Muitas linguagens reais usam = para atribuir, o que confunde iniciantes justamente na linha x = x + 1. Aprendendo com a seta, você grava o conceito; trocar o símbolo depois é detalhe de sintaxe.
Tem como recuperar o valor antigo depois de uma atribuição?
Não. A substituição é definitiva: a caixa só comporta um valor. Se o algoritmo vai precisar do valor antigo, a solução é copiá-lo para OUTRA variável antes de sobrescrever. Esse truque da cópia preventiva é o coração da troca de valores, assunto da próxima aula.
O que acontece primeiro numa atribuição: a conta ou a guardada?
Sempre a conta. O computador resolve o lado direito por completo, até sobrar um único valor, e só então o deposita na variável do lado esquerdo. É por isso que pontos <- pontos + 5 funciona: quando a guardada acontece, a leitura do valor antigo já terminou.
Posso atribuir o valor de uma variável a outra?
Sim, e é comuníssimo: copia <- original lê o valor de original e guarda uma CÓPIA em copia. As duas caixas ficam com o mesmo valor, mas continuam independentes: mudar uma depois não afeta a outra. É uma cópia do conteúdo, não um espelho permanente.
Ler uma variável muitas vezes gasta o valor dela?
Não. A leitura é como conferir o conteúdo da caixa sem tirar nada: escreva(saldo) pode rodar mil vezes e o saldo continua lá, intacto. Só a atribuição altera o conteúdo. Essa assimetria entre ler (inofensivo) e atribuir (substitui) vale para todo o curso.
A linha x <- x + 1 tem nome?
Tem: incremento, o ato de aumentar a variável em uma unidade. A versão que soma valores variados (total <- total + valor) é o acumulador, e a que conta ocorrências (contador <- contador + 1) é o contador. Os três padrões viram protagonistas nos módulos 9 e 10, dentro dos laços de repetição.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.