Alternativa A
A questão solicita a tradução de um algoritmo lógico escrito em linguagem natural para uma estrutura de decisão condicional (if-else) típica de linguagens como C, Java ou C#.
Vamos analisar o enunciado parte por parte:
- "1 será adicionado a x, se x for maior que 0"
- Isso corresponde ao bloco inicial de verificação.
- Código:
if(x > 0) x++; (ou x = x + 1).
- "1 será subtraído de x, se x for menor que 0"
- Como esta é uma outra condição dependente do resultado anterior (caso o primeiro não seja verdadeiro), usamos
else if. - Código:
else if(x < 0) x--; (ou x = x - 1).
- "o valor de x será mantido, se x for igual a zero"
- Em estruturas condicionais encadeadas, se nenhuma das condições anteriores (
> ou <) for atendida, o fluxo simplesmente ignora o código dentro delas. - Logo, se
x for exatamente 0, nem o if nem o else if entram, e o valor original de x permanece inalterado. Não é necessário escrever um comando explícito para isso.
Análise das Opções
| Alternativa | Lógica Apresentada | Veredito |
|---|
| A | if(x>0) x++; else if(x<0) x--; | Correta. Segue exatamente a lógica descrita. |
| B | if(x>0) x--; ... | Incorreta. Subtrai quando deveria somar. |
| C | ... else if(x<0) x++; | Incorreta. Soma quando deveria subtrair. |
| D | if(x>0) x--; ... | Incorreta. Subtrai em ambas as condições. |
| E | if(x>=0) ... | Incorreta. Inclui o zero na soma, alterando seu valor. |
Portanto, a estrutura correta é aquela que soma 1 para valores positivos, subtrai 1 para negativos e não faz nada para o zero.
Alternativa A.