Com relação à informática aplicada à estatística, julgue o i...

Próximas questões
Com base no mesmo assunto
Q3257794 Algoritmos e Estrutura de Dados

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.

Alternativas

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

  1. A expressão a ser avaliada é: (f1() and f2()) or f3()
  2. O computador começa pela parte dentro dos parênteses: f1() and f2().
  3. Ele executa f1(), que retorna False.
  4. 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.
  5. Agora, a expressão foi simplificada para: False or f3()
  6. O computador precisa resolver essa expressão OR. Ele olha para o primeiro valor, que é False.
  7. 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