Escreva um algoritmo que leia 8 números e determine qual é o maior valor digitado.
Passo 1
O que o enunciado pede e o que ele dá:
- Dá: exatamente
números (digitados pelo usuário). - Pede: determinar qual é o maior valor dentre esses
números e mostrar esse maior valor. - Observações importantes (retirei do enunciado e considero para a solução):
- Os números podem ser inteiros ou reais (podem ser negativos).
- Podem haver valores iguais (ex.: dois ou mais números empatar no maior).
- Deve-se ler todos os
valores antes de decidir o maior ou pode-se decidir enquanto lê (método preferido: decidir enquanto lê).
Passo 2
Ideia simples e segura (intuição passo a passo):
- Vamos manter UMA variável que guarda, a todo momento, o maior valor visto até agora. Vou chamar essa variável de
. - Inicialização: leio o primeiro número e atribuo a
. Por que? Porque assim começa com um valor real que veio da entrada — evita problemas com escolher um “sentinela” muito pequeno (por exemplo, ) e funciona mesmo com números negativos. - Para cada novo número lido
, comparo com : - Se
, atualizo . - Caso contrário, mantenho
como está.
- Se
- Depois de ler os
números, a variável contém o maior valor digitado. - Conceitos usados (explicadinho):
- Comparação
: verifica se um número é estritamente maior que outro. - Atribuição
: colocar o valor à direita dentro da variável à esquerda. - Laço/loop: repetir esse processo para os
números restantes (após o primeiro).
- Comparação
Passo 3
Pseudocódigo detalhado linha a linha (para você decorar e usar na prova). Aqui cada passo é claro e explico o que faz:
- Ler o primeiro número e armazenar em
. - Fazer
. - Para
variando de até (ou seja, ler os próximos números), repita: - Ler
. - Se
então . - Senão, continuar.
- Ler
- Ao final, imprimir
.
Escrevendo isso de forma prática (cada linha é executável mentalmente na prova):
- Ler
-
- Ler
- Se
então - Ler
- Se
então - …
- Ler
- Se
então - Imprimir
Explicação das variáveis:
-
: o -ésimo número lido da entrada. -
: guarda o maior número encontrado até o momento.
Passo 4
Exemplo passo a passo com números concretos (para você ver como atualizar
na prática):
- Suponha que os
números lidos sejam, nessa ordem:
. - Execução:
- Ler
. . - Ler
. Comparo: ? Não → continua . - Ler
. Comparo: ? Sim → . - Ler
. Comparo: ? Não (é igual) → continua . - Ler
. Comparo: ? Não → continua . - Ler
. Comparo: ? Sim → . - Ler
. Comparo: ? Não → continua . - Ler
. Comparo: ? Não → continua .
- Ler
- Resultado final:
. Esse é o maior valor digitado.
Passo 5
Implementação prática (Python) — só para você copiar/entender; na prova normalmente pede pseudocódigo ou fluxograma:
# lê 8 números e encontra o maior
maior = float(input("Digite o 1º número: "))
for i in range(2, 9): # i = 2,3,...,8
x = float(input(f"Digite o {i}º número: "))
if x > maior:
maior = x
print("O maior valor é:", maior)
Explicação do código:
- Converte a entrada para float para aceitar reais e negativos.
- O laço roda exatamente
vezes depois do primeiro input. - Complexidade: são necessárias
comparações (em geral, para números precisa-se de comparações).
Passo 6
Casos especiais e dicas para a prova:
- Todos iguais: se todos os
números forem iguais, o algoritmo retorna esse valor (porque nenhuma comparação produz ). - Só negativos: funciona normalmente (inicialização com
evita problemas). - Se quiser o menor em vez do maior, mude a comparação para
e inicialize . - Em termos de contagem de operações: para
números, faz-se comparações; isso é ótimo — é o mínimo possível sem saber todos os números de antemão. - Para provas: escreva o pseudocódigo claro, explique a inicialização com o primeiro valor e justifique que o laço compara e atualiza o máximo.
Resposta
Ler
Para de
até
faça:
\quad Ler
\quad Se então
Imprimir
Para
\quad Ler
\quad Se
Imprimir