Alternativa A
A questão solicita um algoritmo em Portugol Studio que leia números até encontrar zero, indicando se são pares ou ímpares, utilizando especificamente uma estrutura de repetição de pré-teste.
Análise Detalhada
Para resolver este problema, precisamos entender três pontos fundamentais: a estrutura de controle solicitada, a lógica de parada e a sintaxe do Portugol.
- Pré-teste vs Pós-teste:
- Pré-teste: O teste da condição é feito antes de executar o bloco de comandos. Se a condição for falsa imediatamente, o bloco nunca é executado. No Portugol, isso é feito com o comando
enquanto (...) { ... }. - Pós-teste: O teste é feito depois de executar o bloco pelo menos uma vez. No Portugol, usa-se
faca { ... } enquanto (...).
- Lógica de Parada:
- O enunciado diz que a lista é "terminada em zero". Isso significa que o programa deve continuar lendo e processando números desde que o valor lido não seja igual a zero.
- Em termos de condição de continuidade, usamos
num != 0 (diferente de zero).
- Análise das Alternativas:
| Alternativa | Estrutura de Repetição | Lógica de Condição | Veredito |
|---|
| A | enquanto (Pré-teste) | num != 0 (Correto) | Correta |
| B | faca ... enquanto (Pós-teste) | num != 0 (Correto) | Incorreta (tipo errado) |
| C | enquanto (Pré-teste) | num == 0 (Incorreto) | Incorreta (lógica invertida) |
- Por que a Alternativa A está certa? Ela inicia com
leia(num), verificando a entrada. O comando enquanto (num!=0) garante que o bloco só rode se o número não for zero (pré-teste). Dentro do bloco, verifica-se par/impar e logo após, leia (num) atualiza a variável para a próxima iteração. - Por que a B está errada? Embora a lógica de parada esteja certa, ela usa
faca...enquanto, que é um laço de pós-teste, contrariando a exigência do enunciado. - Por que a C está errada? A condição
enquanto (num==0) faria o programa parar imediatamente se o primeiro número fosse diferente de zero, pois a condição seria falsa. O ideal é que o loop rode enquanto o número for diferente de zero.
Em resumo, a estrutura enquanto atende ao requisito de pré-teste e a condição num!=0 garante que o loop continue recebendo dados válidos até que o sentinel (zero) seja encontrado.