Alternativa A - if(x>0) x++; if(x<0) x--;
Introdução à Lógica Condicional
O enunciado solicita a tradução de regras condicionais para código, utilizando exclusivamente a estrutura if simples. Isso significa que não podemos usar else ou else if, pois cada condição deve ser verificada independentemente.
As regras estabelecidas são:
- Se x > 0: execute incremento (x recebe x + 1).
- Se x < 0: execute decremento (x recebe x - 1).
- Se x = 0: nenhuma ação é realizada (mantém-se o valor).
Análise Detalhada
Para resolver a questão, precisamos verificar qual código atende simultaneamente às três condições acima sem conflitos.
- Regra 1 (x > 0): O comando deve ser
if(x > 0) x++;. O operador ++ incrementa a variável em 1 unidade. - Regra 2 (x < 0): O comando deve ser
if(x < 0) x--;. O operador -- decrementa a variável em 1 unidade. - Regra 3 (x = 0): Como não há instrução para este caso, basta garantir que as condições anteriores sejam falsas quando x for zero.
Na Alternativa A, temos duas instruções if sequenciais:
if(x>0) x++;: Se x for positivo, soma 1. Se x for zero ou negativo, ignora.if(x<0) x--;: Se x for negativo, subtrai 1. Se x for zero ou positivo, ignora.
Se x for inicialmente 0:
- A primeira condição ($0 > 0$) é falsa.
- A segunda condição ($0 < 0$) é falsa.
- Resultado: x permanece inalterado. Correto.
Verificação das Outras Alternativas
| Alternativa | Erro Cometido |
|---|
| B | Inverte a lógica: soma quando deveria subtrair e vice-versa. |
| C | Incrementa tanto para positivos quanto para negativos. |
| D | Decrementa tanto para positivos quanto para negativos. |
| E | Usa \ge e \le. Se x=0, a primeira condição seria verdadeira, alterando o valor (violando a regra de manter o zero). |
Conclusão
A alternativa A é a única que traduz fielmente a lógica solicitada: verifica a condição de maior separadamente da condição de menor, garantindo que o valor zero não dispare nenhuma das ações de modificação.