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.

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.

Diagrama da troca de valores em quatro quadros com três copos: no primeiro, o copo A tem laranja e o copo B tem uva; no segundo, o conteúdo de A é despejado no copo auxiliar vazio; no terceiro, o conteúdo de B é despejado em A; no quarto, o conteúdo do auxiliar é despejado em B, completando a troca.
O terceiro copo salva a troca: auxiliar <- a, depois a <- b, depois b <- auxiliar.

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
// 10

A 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.