DESAFIO 7

Faça um Programa que leia três números e mostre-os em ordem decrescente.

Uma estratégia:

"compara o segundo e terceiro, se segundo for menor que terceiro troca.
"compara o primeiro com o segundo, se o primeiro for menor que o segundo troca.
{ }^{-}finalmente compara novamente o segundo com terceiro, se segundo for menor que terceiro, troca.
"exiba os números.

Passo 1

O enunciado pede que façamos um programa que leia três números e mostre-os em ordem decrescente.
Informações fornecidas (o que temos):
1. Três números de entrada — vou chamar esses números de a, b e c.
2. Uma estratégia sugerida (sequência de comparações e trocas):
\\ \ (i) comparar b e c e trocar se b<c;
\\ \ (ii) comparar a e b e trocar se a<b;
\\ \ (iii) comparar b e c novamente e trocar se b<c;
3. Saída esperada: os três números exibidos em ordem decrescente (do maior para o menor).
Observação importante: aqui eu apenas identifiquei o que o problema pede e quais dados temos. Não comecei a resolver ainda.

Passo 2

Definição das operações básicas que vamos usar (explicação didática).
Troca (swap): quando digo "trocar x e y" quero dizer que eu guardo o valor de x numa variável temporária t, coloco em x o valor de y e depois coloco em y o valor de t. Em fórmulas:
t \leftarrow x,\quad x \leftarrow y,\quad y \leftarrow t.
Isso garante que os valores de x e y sejam trocados sem perda de informação. É uma operação padrão em algoritmos simples.

Passo 3

Explicando a comparação “se x<y troca”:
Quando escrevo "se x<y então troca x e y" isso força que, depois dessa operação condicional, passe a valer x\ge y. Ou seja, a posição de x passa a guardar o maior entre os dois. Esse é o bloco elementar do algoritmo de ordenação.

Passo 4

Aplicando a primeira comparação sugerida: comparar b e c e trocar se b<c.
  • Caso b\ge c: nada muda; continuamos com a,b,c.
  • Caso b<c: trocamos b e c usando o procedimento do Passo 2, então após a troca teremos b\ge c.
    Objetivo desse passo: garantir que entre as posições 2 e 3, a posição 2 contenha o maior dos dois.

Passo 5

Aplicando a segunda comparação sugerida: comparar a e b e trocar se a<b.
  • Se a\ge b: nada muda; a primeira posição já tem um valor maior ou igual que a segunda.
  • Se a<b: trocamos a e b; depois da troca teremos a\ge b.
    Após este passo, garantimos que a posição 1 contém um valor maior ou igual à posição 2.

Passo 6

Aplicando a terceira comparação sugerida: comparar b e c novamente e trocar se b<c.
Por que precisamos repetir essa comparação? Porque a troca entre a e b do Passo 5 pode ter movido para a posição 2 um valor menor que c. Repetindo a comparação entre b e c garantimos que a posição 2 volte a conter o maior entre os dois, ou seja b\ge c.
Depois deste terceiro passo teremos as duas desigualdades essenciais: a\ge b e b\ge c. Daí decorre a\ge b\ge c, que é exatamente a ordem decrescente.

Passo 7

Prova rápida de correção (casos e intuição):
Considere todas as ordens possíveis iniciais dos três números; a sequência de comparações e trocas acima reordena os valores em no máximo três trocas. Intuitivamente:
  • O primeiro passo garante que a maior entre b e c vá para a posição 2.
  • O segundo passo garante que a maior entre a e o que está em posição 2 vá para a posição 1. Então a maior de todos estará em a.
  • O terceiro passo ajusta a posição 2 contra a 3 para que a segunda maior fique em b.
    Matematicamente, após esses três passos fica certo que a contém o máximo dos três, e b e c estão ordenados entre si, logo a\ge b\ge c.

Passo 8

Pseudocódigo simples e direto (para implementar no programa). Vou escrever linha a linha; use a leitura e impressão que sua linguagem preferir:
Leia a, b, c\n
Se b<c então\n
\\ \\ t \leftarrow b\n
\\ \\ b \leftarrow c\n
\\ \\ c \leftarrow t\n
FimSe\n
Se a<b então\n
\\ \\ t \leftarrow a\n
\\ \\ a \leftarrow b\n
\\ \\ b \leftarrow t\n
FimSe\n
Se b<c então\n
\\ \\ t \leftarrow b\n
\\ \\ b \leftarrow c\n
\\ \\ c \leftarrow t\n
FimSe\n
Escreva a, b, c (em ordem decrescente)

Passo 9

Exemplo numérico passo a passo (para fixar): suponha que lemos a=3, b=1, c=2.
Aplicando as etapas:
  1. Comparar b e c: aqui 1<2, então trocamos e ficamos com a=3, b=2, c=1.
  2. Comparar a e b: 3<2 é falso, então nada muda: a=3, b=2, c=1.
  3. Comparar b e c: 2<1 é falso, nada muda. Resultado final exibido: 3,2,1. Perfeito — está em ordem decrescente.

Passo 10

Casos especiais e dicas para a prova:
  • Se houver números iguais (ex.: a=5,b=5,c=3), o algoritmo mantém a ordem não estrita 5\ge5\ge3 sem problemas.
  • Funciona para números negativos e para números com casas decimais do mesmo jeito.
  • Em prova: escreva claramente as condições e a troca com uma variável temporária t. Não esqueça de repetir a comparação b vs c no final — é o truque que garante a ordenação dos três com poucas comparações.
  • Complexidade (intuitiva): no máximo 3 comparações e 3 trocas, muito eficiente para apenas três elementos.

Resposta

Leia a, b, c\n
Se b<c então\n
\\ \\ t \leftarrow b\n
\\ \\ b \leftarrow c\n
\\ \\ c \leftarrow t\n
FimSe\n
Se a<b então\n
\\ \\ t \leftarrow a\n
\\ \\ a \leftarrow b\n
\\ \\ b \leftarrow t\n
FimSe\n
Se b<c então\n
\\ \\ t \leftarrow b\n
\\ \\ b \leftarrow c\n
\\ \\ c \leftarrow t\n
FimSe\n
Escreva a, b, c

Exercícios relacionados