Pular para o conteúdo principal

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

Algoritmos e Estrutura de DadosAlgoritmos
Código
fc068622
Banca
FCC
Órgão
Copergás - PE
Ano
2023
Nível
Superior
Cargo
Analista Sistemas
Considere o seguinte algoritmo.var renda: realinício leia(renda) se (renda <= 1000) então exiba("Categoria 1") senão se (renda>1000 E renda<=2000) então exiba ("Categoria 2") senão exiba ("Categoria 3") fim_se fim_sefimUma alteração que pode ser feita para otimizar ou melhorar o algoritmo, sem alterar sua lógica, é
  1. Atrocar E por OU na segunda estrutura de seleção.
  2. Btrocar o segundo senão por senão se (renda<=2000).
  3. Cretirar o senão exiba ("Categoria 3").
  4. Dretirar o trecho E renda<=2000 da segunda estrutura de seleção.
  5. Eretirar o trecho renda>1000 E da segunda estrutura de seleção.
Revelar gabarito e comentário

GabaritoE — retirar o trecho renda>1000 E da segunda estrutura de seleção.

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”.

Algoritmos: Otimização de Estruturas Condicionais

Gabarito: letra E. A condição renda>1000 E na segunda estrutura de seleção é redundante, pois ao chegar nesse ponto já se sabe que renda > 1000 (a primeira condição renda <= 1000 foi falsa). Retirar essa subexpressão mantém a lógica inalterada e simplifica o código, caracterizando uma otimização válida.

A questão testa a capacidade de identificar redundâncias em condicionais encadeadas. O algoritmo original classifica a renda em três categorias:

  • Categoria 1: renda ≤ 1000

  • Categoria 2: 1000 < renda ≤ 2000

  • Categoria 3: renda > 2000

A chave está em perceber que, no segundo se (senão se), a condição renda>1000 já está implícita, pois só se chega ali se o primeiro se for falso. Portanto, basta testar renda<=2000.

PEGA ESSA DICA!

Em sequências de se-senão se, a condição de cada senão se pode ser simplificada removendo as partes já garantidas pelas condições anteriores. Isso reduz comparações e torna o código mais claro.

Alternativa

Descrição da alteração

Efeito na lógica

Correta?

A

Trocar E por OU na segunda condição

Toda entrada exibe "Categoria 2" (altera lógica)

B

Trocar segundo senão por senão se (renda<=2000)

Renda >2000 não exibe nada (altera lógica)

C

Retirar senão exiba ("Categoria 3")

Renda >2000 não exibe nada (altera lógica)

D

Retirar E renda<=2000 da segunda condição

Toda renda >1000 vira "Categoria 2" (altera lógica)

E

Retirar renda>1000 E da segunda condição

Mantém lógica inalterada (redundância removida)

Alternativa A — ❌ Incorreta

Trocar E por OU na segunda condição produziria renda>1000 OU renda<=2000, que é sempre verdadeira para qualquer número real (todo número é >1000 ou ≤2000). Isso faria com que toda entrada exibisse "Categoria 2", alterando completamente a lógica do algoritmo.

Alternativa B — ❌ Incorreta

Trocar o segundo senão (que leva a "Categoria 3") por senão se (renda<=2000) quebra a estrutura. Se essa nova condição for falsa (o que ocorre para renda >2000), não há ação definida — o programa não exibirá nada. Além disso, a redundância permanece, não sendo uma otimização adequada.

Alternativa C — ❌ Incorreta

Remover o senão exiba ("Categoria 3") faz com que, para renda >2000, nada seja exibido. O algoritmo deixa de cobrir essa faixa, alterando a lógica.

Alternativa D — ❌ Incorreta

Retirar E renda<=2000 da segunda condição deixa apenas renda>1000. Isso faria com que toda renda > 1000 (inclusive acima de 2000) fosse classificada como "Categoria 2", eliminando a Categoria 3.

Alternativa E — ✅ Correta ⟵ GABARITO

Retirar renda>1000 E torna a condição simplesmente renda<=2000. Como já se sabe que renda > 1000 (pela falha do primeiro se), essa condição é equivalente à original e mais eficiente. A lógica permanece exatamente a mesma.

Gabarito: letra E.

Link permanente: /questoes/fc068622