Módulo 3 - Variáveis, as caixas da memória
A troca de valores: o desafio dos dois copos
7 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 02/07/2026
O que você vai aprender
- Entender por que a troca direta (a <- b, b <- a) perde um dos valores.
- Usar uma variável auxiliar para guardar o valor que seria destruído.
- Executar a troca em três passos, na ordem exata.
- Reconhecer a troca como o primeiro algoritmo clássico do seu repertório.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: A troca de valores: o desafio dos dois copos.
Os objetivos desta aula. Entender por que a troca direta (a <- b, b <- a) perde um dos valores. Usar uma variável auxiliar para guardar o valor que seria destruído. Executar a troca em três passos, na ordem exata. Reconhecer a troca como o primeiro algoritmo clássico do seu repertório.
Veja o essencial, parte por parte.
O problema: dois copos, dois sucos, mãos atadas. Trocar os valores de duas variáveis NÃO funciona com a <- b seguido de b <- a: a primeira linha destrói o valor de a.
A solução: o terceiro copo vazio. Na pia, a solução é óbvia: pegue um terceiro copo vazio.
A troca entra no seu repertório de clássicos. Trocar sem auxiliar (a <- b, b <- a): o primeiro valor é atropelado e as caixas terminam iguais.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
O problema: dois copos, dois sucos, mãos atadas
Imagine dois copos na pia: o copo A com suco de laranja e o copo B com suco de uva. Sua missão: deixar a laranja no copo B e a uva no copo A. Tentando despejar um no outro diretamente, você mistura tudo; o primeiro despejo arruína a missão. Com variáveis, o desastre é idêntico. Suponha a valendo 10 e b valendo 20. A linha a <- b guarda 20 na caixa a, e o 10, como você aprendeu na aula anterior, é descartado para sempre. A linha seguinte, b <- a, copia o valor ATUAL de a, que agora é 20, de volta para b. Resultado: as duas caixas com 20, e o 10 perdido sem volta.
O erro da troca direta é tão comum que merece nome de batismo: é o atropelo. A primeira atribuição atropela o valor que a segunda ainda ia usar. Repare que o problema não está em nenhuma linha isolada: cada uma, sozinha, é uma atribuição perfeitamente válida. O defeito está na COMBINAÇÃO delas, na ordem que faz uma linha destruir o insumo da outra. É o seu primeiro encontro com uma verdade que acompanha programadores a vida toda: um algoritmo pode estar errado mesmo com todas as linhas certas.
A solução: o terceiro copo vazio
Na pia, a solução é óbvia: pegue um terceiro copo vazio. Despeje a laranja de A no copo vazio, despeje a uva de B em A, despeje a laranja do terceiro copo em B. Missão cumprida, nenhuma gota perdida. Em pseudocódigo, o terceiro copo é a variável auxiliar, e a coreografia tem exatamente três passos: primeiro, salve o valor de a na auxiliar (auxiliar <- a); segundo, mova o valor de b para a (a <- b); terceiro, entregue o valor salvo para b (b <- auxiliar). O passo um existe por um único motivo: proteger o valor de a ANTES que o passo dois o atropele.
a <- 10
b <- 20
auxiliar <- a
a <- b
b <- auxiliar
escreva(a)
escreva(b)
// saída:
// 20
// 10A troca completa: a auxiliar guarda o 10 enquanto o 20 se muda; no fim, cada valor mora na outra caixa.
🎮 Jogo da aula
Monte a troca perfeita
As variáveis a e b precisam trocar de valor. Toque os passos na ordem que completa a troca sem perder nenhum valor.
Teste a sua compreensão invertendo mentalmente dois passos do jogo. Se a <- b viesse antes de auxiliar <- a, a auxiliar salvaria o valor JÁ atropelado (20 em vez de 10), e as duas caixas terminariam iguais. A ordem não é burocracia: é a diferença entre trocar e destruir. Você viu essa lição no módulo 1 com o café na ordem errada; aqui ela reaparece em versão mais sutil, porque o programa não trava nem reclama: apenas produz o resultado errado em silêncio. Erros silenciosos são os que mais exigem o olhar treinado.
A troca entra no seu repertório de clássicos
A troca de valores é o primeiro algoritmo com nome e fama que você domina, e não é troféu de vitrine: ela trabalha. Quando o módulo 11 apresentar as listas, ordenar nomes ou números vai exigir trocas em série: o algoritmo compara vizinhos e troca os que estão fora de ordem, dezenas de vezes, até a lista ficar arrumada. Cada uma dessas trocas é exatamente a coreografia dos três passos de hoje. Sistemas reais fazem o mesmo o tempo todo: inverter origem e destino na busca de passagens, alternar jogadores numa partida, reordenar prioridades numa fila.
Teste rápido
Com a valendo 10 e b valendo 20, o que acontece ao executar apenas “a <- b” e depois “b <- a”?
Perguntas frequentes
- Por que não dá para trocar os valores em uma linha só?
- No pseudocódigo do curso, cada atribuição guarda um valor numa caixa, e a troca envolve dois movimentos que se atropelam sem proteção. Algumas linguagens modernas oferecem atalhos de uma linha para o swap, mas por baixo o mesmo cuidado acontece. Aprender a versão de três passos é aprender o mecanismo de verdade.
- A variável auxiliar precisa se chamar “auxiliar”?
- Não, o nome é escolha sua: temp, guarda, copia_de_a. O que importa é o papel: uma caixa extra que protege um valor durante a manobra. Nomes como auxiliar ou temporaria são populares porque anunciam a função, o tema da próxima aula.
- O que acontece com a auxiliar depois da troca?
- Ela fica na memória com uma cópia do valor antigo, sem atrapalhar nada, até o programa terminar. Boas práticas mandam não reutilizá-la para outra finalidade sem nova atribuição clara, para não confundir quem lê. Pense nela como o copo emprestado: cumpriu a missão, vai para a pia.
- E se eu precisar trocar os valores de TRÊS variáveis em círculo?
- O mesmo truque escala: uma auxiliar guarda o primeiro valor, os outros se movem em cadeia e a auxiliar entrega o valor guardado na última caixa. Para três variáveis, são quatro atribuições no total. Montar essa sequência no papel é um ótimo exercício com o que você já sabe.
- A troca direta dá erro na tela?
- Não, e é isso que a torna perigosa: cada linha é válida, o programa roda até o fim e o resultado sai errado em silêncio (duas caixas iguais). Erros silenciosos só aparecem quando alguém confere o resultado. O teste de mesa do módulo 13 é a ferramenta para caçá-los linha a linha.
- Onde a troca aparece na vida real dos programas?
- Em toda ordenação: listas de preços do menor ao maior, rankings de jogos, nomes em ordem alfabética usam trocas em série por baixo do capô. Também em interfaces que invertem origem e destino de uma viagem e em jogos que alternam a vez dos jogadores. É provavelmente o mini-algoritmo mais executado do mundo.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.