Questão nº 57
Questão de Tecnologia da Informação · FGV MPMS 2012 (nº 57)
Considere o seguinte comando condicional escrito em Java e também em Python:
if (p == false) {
return false;
}elseif (q == false) {
return false;
}else {
returntrue;
}
if p == False:
return False
elif q == False:
return False
else:
return True
Este comando pode ser escrito de forma mais simples como (as opções são apresentadas em Java e Python):
- Areturn p && !q;/ return p and (not q)
- Breturn !(p || q); / returnnot(p or q)
- Creturn p || q; / return p or q
- Dreturn q && p; / return q and p (alternativa correta)
- Ereturn !q || !p;/ return (not q) or (not p)
Resposta comentada
Gabarito Alternativa D
O comando original só retorna true quando ambas as condições p e q são verdadeiras. Em qualquer outro caso (p falso ou q falso), retorna false. Isso é exatamente a definição do operador lógico E (&& em Java, and em Python), que só é verdadeiro quando todos os operandos são verdadeiros.
- (A) Incorreta:
p && !qretornatrueapenas quandopé verdadeiro eqé falso, o que não corresponde ao comportamento original (que exige ambos verdadeiros). - (B) Incorreta:
!(p || q)é a negação do "OU", ou seja, só étruequando ambos são falsos — o oposto do que o código original faz. - (C) Incorreta:
p || qretornatruese pelo menos um for verdadeiro, mas o original exige os dois verdadeiros. - (D) Correta:
q && p(ouq and p) é a forma mais simples e direta: retornatruesomente quandopeqsão ambos verdadeiros, exatamente como oif/elseif/elseoriginal. A ordem dos operandos não altera o resultado do "E" lógico. - (E) Incorreta:
!q || !pé a negação do "E" (Lei de De Morgan), retornandotruesempre que pelo menos um for falso — o contrário do que queremos.
Fonte: FGV MPMS 2012 Técnico I - Informática. Reproduzida para fins de estudo.