Pular para o conteúdo principal

Questão de Algoritmos e Estrutura de Dados — Algoritmos — FCC 2015

Algoritmos e Estrutura de DadosAlgoritmos
Código
fc020104
Banca
FCC
Órgão
MANAUSPREV
Ano
2015
Nível
Superior
Cargo
Analista Previdenciário - Tecnologia da Informação
Considere o pseudocódigo abaixo.Algoritmo Lógicavar a, b, c, d: inteiroInício a ← 2 b ← 5 c ← 10 d ← 3 Se (NÃO((a+c*b) < = (d*b/a)) E ((b+c/d) < (c/a*d-b*a))) então imprima ("A") Fim_se Se (((a+c*b) < = (d*b/a)) OU ((b+c/d) < > (c/a*d-b*a)) E NÃO((c-d)=(d+a))) então imprima ("B") Fim_se Se ((((a+c)*b) < = (d*b/a)) E ((b-c*d) < > (c/a*(d-b)*a))) então imprima ("C") Fim_seFimNeste algoritmo será impresso
  1. AA.
  2. BAB.
  3. CB.
  4. DBC.
  5. EC.
Revelar gabarito e comentário

GabaritoC — B.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Algoritmo: avaliação de expressões lógicas e aritméticas

Gabarito: letra C (apenas a letra "B" é impressa). A questão exige o cálculo passo a passo das expressões aritméticas e a correta aplicação dos operadores lógicos, respeitando a precedência e a ordem das operações.

Vamos resolver com os valores fornecidos: (a = 2), (b = 5), (c = 10), (d = 3). Consideraremos a divisão como real (ponto flutuante).

Primeira condição: Se (NÃO((a+c*b) <= (d*b/a)) E ((b+c/d) < (c/a*d-b*a)))

  • (a + c \times b = 2 + 5 \times 10 = 2 + 50 = 52)

  • (d \times b / a = 3 \times 5 / 2 = 15 / 2 = 7.5)

  • ((a+cb) <= (db/a)) → (52 <= 7.5) é FALSO

  • NÃO(FALSO) = VERDADEIRO

  • (b + c / d = 5 + 10/3 = 5 + 3.333... = 8.333...)

  • (c / a \times d - b \times a = (10/2) \times 3 - 5 \times 2 = 5 \times 3 - 10 = 15 - 10 = 5)

  • ((b+c/d) < (c/ad-ba)) → (8.333... < 5) é FALSO

  • VERDADEIRO E FALSO = FALSO — logo, não imprime "A".

Segunda condição: Se (((a+c*b) <= (d*b/a)) OU ((b+c/d) <> (c/a*d-b*a)) E NÃO((c-d)=(d+a)))

A estrutura é: (cond1) OU ( (cond2) E (cond3) ).

  • cond1: ((a+cb) <= (db/a)) → já calculado: (52 <= 7.5) FALSO

  • cond2: ((b+c/d) <> (c/ad-ba)) → (8.333... <> 5) VERDADEIRO

  • cond3: NÃO((c-d)=(d+a)):

    • (c - d = 10 - 3 = 7)

    • (d + a = 3 + 2 = 5)

    • (7 = 5) é FALSO, então NÃO(FALSO) = VERDADEIRO

  • cond2 E cond3 = VERDADEIRO E VERDADEIRO = VERDADEIRO

  • cond1 OU (VERDADEIRO) = FALSO OU VERDADEIRO = VERDADEIRO

Portanto, imprime "B".

Terceira condição: Se ((((a+c)*b) <= (d*b/a)) E ((b-c*d) <> (c/a*(d-b)*a)))

  • ((a+c)\times b = (2+10)\times 5 = 12 \times 5 = 60)

  • (60 <= 7.5) é FALSO

  • Como a primeira parte do E já é falsa, a condição inteira é FALSAnão imprime "C".

Conclusão

Apenas a letra "B" é impressa. O gabarito é a alternativa C.

PEGA ESSA DICA!

Em questões como essa, resolva cada expressão aritmética com cuidado, escreva os valores intermediários e respeite a precedência dos operadores (multiplicação/divisão antes de adição/subtração). Para operadores lógicos, E tem precedência sobre OU, mas parênteses podem alterar — analise a estrutura como um todo.

Link permanente: /questoes/fc020104