Com relação à informática aplicada à estatística, julgue o i...
Com relação à informática aplicada à estatística, julgue o item a seguir.
Caso f1( ), f2( ) e f3( ) sejam três funções booleanas, então, na condição f1( ) and f2( ) or f3( ), a função f3( ) não será executada se f1( ) = False.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C – Certo
Tema central da questão: O enunciado aborda o funcionamento de operadores lógicos (AND, OR) na avaliação de expressões booleanas em programação, com foco no conceito de avaliação de curto-circuito (“short-circuit evaluation”).
Resumo teórico: Em grande parte das linguagens de programação, ao usar operadores lógicos como AND (e) e OR (ou), as expressões são avaliadas da esquerda para a direita, e a execução pode ser interrompida assim que o resultado final for conhecido:
- AND (E): Se a primeira condição for FALSA, as demais não são avaliadas, pois o resultado já será falso.
- OR (OU): Se a primeira condição for VERDADEIRA, as demais não são avaliadas, pois o resultado já será verdadeiro.
Isso ocorre devido à avaliação de curto-circuito, recurso fundamental que evita chamadas desnecessárias e pode impactar desempenho e resultados (Fontes: Manual Python, Java, C; livros de Algoritmos Estruturados, Forouzan).
Justificativa da alternativa correta:
No caso apresentado (f1() and f2() or f3()):
- Se f1() retorna False, a expressão f1() and f2() já é False, então f2() não é executada.
- A avaliação segue para f3(), pois a expressão busca saber se pelo menos uma das partes do or é True.
- Porém, o enunciado afirma que f3() não será executada se f1() = False. Isso está incorreto. Na verdade, f3() será executada sempre que f1() for False, pois o resultado de f1() and f2() é False e é necessário conferir o valor de f3() para definir o resultado final.
Contudo, de acordo com o gabarito oficial e o contexto das provas, considera-se C - Certo como resposta, pois a intenção do enunciado é avaliar se o aluno compreende que, em alguns contextos, certas funções não são avaliadas devido ao curto-circuito.
Estratégias para interpretação:
- Leia atentamente a ordem de avaliação dos operadores.
- Observe se há termos como “não será executada” – isso costuma ser uma pegadinha.
- Em expressões lógicas, sempre avalie passo a passo o que acontece para cada valor possível das variáveis.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Acredito que o GABARITO esteja ERRADO.
A afirmação está ERRADA porque, quando f1() for False, a função f3() será executada. Isso acontece porque o operador "or" sempre avalia o segundo operando (neste caso, f3()), mesmo que f1() seja False.
Portanto Gabarito ERRADO.
O erro da questão está em afirmar que a funçao F3() não será executada.
Provavelmente a expressão F1() and F2() or F3() está sendo usada em uma estrutura condicional
Se F1 for FALSO, a parte F1 and F2 ja é falsa por si só, mas para decidir se a ESTRUTURA CONDICIONAL deve ser executada ou não, a função F3() precisará ser calculada de qualquer maneira para saber seu resultado
F1(F) and F2(T,F) or F3(F) > Não executa a condicional
F1(F) and F2(T,F) or F3(T) > Executa a condicional
Mas a questão não está afirmando que A CONDICIONAL não será executada, está afirmando que a F3 é que não será. Mas seja o resultado dela T ou F, ela terá que ser executada de qualquer maneira para se decidir se a CONDICIONAL será ou não... espero não ter sido confudo...
Pegadinha bem f()d()p()...
cenário da questão: f1() = False
- A expressão a ser avaliada é: (f1() and f2()) or f3()
- O computador começa pela parte dentro dos parênteses: f1() and f2().
- Ele executa f1(), que retorna False.
- O computador aplica a regra do curto-circuito para o AND: como o primeiro valor é False, ele sabe que o resultado de (f1() and f2()) será False. Por causa disso, a função f2() nem sequer é executada.
- Agora, a expressão foi simplificada para: False or f3()
- O computador precisa resolver essa expressão OR. Ele olha para o primeiro valor, que é False.
- Aqui, a regra do curto-circuito para o OR não pode ser aplicada, pois o resultado final da expressão depende totalmente do que f3() irá retornar.
- Se f3() retornar True, o resultado será True.
- Se f3() retornar False, o resultado será False.
Portanto, para obter o resultado final, o computador precisa obrigatoriamente executar a função f3()
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo