DESAFIO 16
O que faz o programa abaixo? Explique. Por que foi necessário usar a variável aux?
n1 = int(input("Digite primeiro número: '))
n2 = int(input('Digite segundo número: "))
print('Inicialmente primeiro = ',n1,' e segundo = ',n2)
aux = n1
n1 = n2
n2 = aux
print('Após o processamento primeiro = ',n1,' e segundo = ',n2)
n1 = int(input("Digite primeiro número: '))
n2 = int(input('Digite segundo número: "))
print('Inicialmente primeiro = ',n1,' e segundo = ',n2)
aux = n1
n1 = n2
n2 = aux
print('Após o processamento primeiro = ',n1,' e segundo = ',n2)Passo 1
O enunciado pergunta duas coisas: (1) “O que faz o programa abaixo? Explique.” e (2) “Por que foi necessário usar a variável aux?”. O enunciado fornece o trecho de programa (em Python) que lê dois números, imprime os valores, faz atribuições envolvendo uma variável chamada
e imprime novamente. As informações relevantes que temos são: os identificadores
,
e
; as operações de leitura com
; duas impressões com
; e as atribuições
,
,
.
Passo 2
Vou explicar linha a linha (corrigindo um detalhe de sintaxe óbvio): os delimitadores de string devem casar (aspas iguais no início e no fim). Interpretando o código da forma correta e linha a linha, temos:
- A instrução
pede ao usuário que digite um número, lê a entrada como texto, converte para inteiro com e guarda o resultado na variável . - Explicação curta sobre
: converte uma string que representa um número inteiro para o tipo inteiro; se a entrada não for um número inteiro válido, dá erro.
- Explicação curta sobre
- A instrução
faz o mesmo para a variável . - A instrução
mostra na tela os valores atuais de e . - A instrução
copia o valor atual de para a variável temporária . - A instrução
atribui a o valor que estava em . - A instrução
atribui a o valor que estava guardado em (ou seja, o valor inicial de ). - A instrução
mostra os novos valores de e .
Passo 3
Vou mostrar um rastreamento (trace) do programa com números concretos para você ver claramente o que acontece. Escolhemos, por exemplo,
e
.
- Depois das leituras:
, . - Ao executar
: (agora guarda o valor original de ). - Ao executar
: (agora recebeu o valor que estava em ). - Ao executar
: (agora recebeu o valor guardado em , que era o original). - Resultado final:
, . Ou seja, os valores foram trocados entre as duas variáveis.
Passo 4
Agora explico didaticamente por que a variável
é necessária. O problema ao trocar valores entre duas variáveis é que uma atribuição sobrescreve um valor que pode ser necessário depois. Se tentarmos fazer só:
-
-
com a mesma ordem, ocorre perda de informação. Usando o mesmo exemplo inicial (, ): - Após
teríamos e — o valor original foi perdido. - Depois
só copiará novamente, resultando em , . Ou seja, não houve troca correta.
A função deé guardar temporariamente o valor de antes de sobrescrevê-lo, permitindo que depois atribuamos esse valor a . Em palavras simples: salva o valor que iríamos perder.
Passo 5
Alternativas ao uso de
(úteis para prova ou prática):
- Em Python existe uma forma direta e mais compacta:
-
que faz a troca em uma única linha sem variável auxiliar explícita (através de empacotamento/desempacotamento de tupla).
-
- Método aritmético (quando as variáveis são numéricas e há cuidado com overflow):
-
-
-
Isso também troca os valores sem variável extra, mas exige que as operações sejam seguras (por exemplo, evitar estouro de inteiro).
-
- Em prova: se o enunciado ou a linguagem não permite atribuição múltipla ou truques aritméticos, use sempre a variável auxiliar — é simples, claro e correto.
Passo 6
Dicas finais para você na prova (pra te animar):
- Quando pedir “o que faz”, descreva a ação em palavras claras: "troca os valores de
e " e explique que primeiro salva-se o valor de em para não perdê-lo. - Se tiver tempo e souber Python, mencione a alternativa
como solução idiomática. - Respira fundo: entender o porquê do
é a parte conceitual importante — o resto é só seguir as atribuições com calma.
Resposta
Troca os valores de
e
(lê dois inteiros, mostra os valores iniciais, inverte-os e mostra o resultado).
A variável é necessária para guardar temporariamente o valor original de
antes de sobrescrevê‑lo, evitando a perda desse valor durante a troca.
A variável