Questão nº 45
Questão de Tecnologia da Informação · FCC TRT18 2022 (nº 45)
Um Analista está encarregado de ministrar um treinamento e a regra de negócio para aprovação está descrita abaixo.
Serão aprovados alunos com média maior ou igual a 8 e com faltas abaixo de 25% da quantidade de aulas.
Considere o método criado com recursos da plataforma Java, em uma aplicação que utiliza JSP, abaixo.
```java
public String verificarStatus(int qtdAulas, int qtdFaltas, double media){
if(I) {
return "Aprovado";
} else {
return "Reprovado";
}
}
```
Para a correta implementação da regra de negócio, a lacuna I deve ser corretamente preenchida por:
- A`media >= 8 || qtdFaltas < qtdAulas * 25/100`
- B`media <= 8 || qtdFaltas < qtdAulas * 25/100`
- C`media >= 8 AND qtdFaltas <= qtdAulas * 0.25`
- D`media >= 8 && qtdFaltas < qtdAulas * 0.25` (alternativa correta)
- E`media >= 8 & qtdFaltas <= qtdAulas * 25/100`
Resposta comentada
Gabarito Alternativa D
Para traduzir regras de negócio em código, usamos operadores relacionais (como ==, >, <, >=, <=, !=) para comparar valores e operadores lógicos (como && para "E", || para "OU") para combinar essas comparações. É crucial entender que "E" (&&) exige que todas as condições sejam verdadeiras, enquanto "OU" (||) exige que pelo menos uma seja verdadeira. Ao calcular porcentagens, use números decimais (como 0.25) ou garanta que a divisão seja feita com números de ponto flutuante para evitar a divisão inteira, que pode arredondar o resultado para zero.
- (A) Incorreta: O operador
||(OU) está incorreto, pois a regra de negócio exige que ambas as condições sejam atendidas ("e" lógico). Além disso,25/100em Java, se ambos os operandos forem inteiros, resultará em0(divisão inteira), o que tornaria a condição de faltas sempreqtdFaltas < 0, que é quase sempre falsa. Esta é a armadilha mais tentadora, pois o erro do||é sutil se não lermos a regra com atenção, e a divisão inteira é um erro comum de iniciantes. - (B) Incorreta: A condição
media <= 8está incorreta, pois a regra exige que a média seja "maior ou igual a 8". O operador||(OU) também está incorreto, e a divisão25/100sofre do problema de divisão inteira. - (C) Incorreta: A palavra
ANDnão é um operador lógico válido em Java; o correto seria&&. Além disso, a condiçãoqtdFaltas <= qtdAulas * 0.25está incorreta, pois a regra diz "abaixo de 25%", o que significa estritamente menor que (<), não "menor ou igual a" (<=). - (D) Correta: A condição
media >= 8traduz corretamente "média maior ou igual a 8". O operador&&(E lógico) está correto para combinar as duas condições. A condiçãoqtdFaltas < qtdAulas * 0.25traduz corretamente "faltas abaixo de 25% da quantidade de aulas", utilizando0.25para garantir uma multiplicação de ponto flutuante e o operador<para "abaixo de". - (E) Incorreta: O operador
&é um operador bitwise AND, não o operador lógico&&(que é o correto para condições booleanas e faz short-circuiting). A condiçãoqtdFaltas <= qtdAulas * 25/100está incorreta pelo uso de<=(deveria ser<) e pela divisão inteira25/100.
Fonte: FCC TRT18 2022 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.