Matemática Múltipla Escolha

A função a seguir foi implementada usando uma estrutura de repetição condicional: Qual das alternativas abaixo apresenta uma função com comportamento diferente?

A função a seguir foi implementada usando uma estrutura de repetição condicional:

Funcao Inteiro funcao(int i)
    x = 0
    while (i > 0)
        if (i % 2 == 0) then
            x = i
        else
            x = i + 1
        end if
        i = i / 2
    end while
    return x

Qual das alternativas abaixo apresenta uma função com comportamento diferente?

  1. for (int j = 0; j < 3; j++) { if (i % 2 == 0) then x = i else x = i + 1 end if i = i / 2 }
  2. while (i > 0) { if (i % 2 == 0) then x = i else x = i + 1 end if i = i / 2 }
  3. for (int j = 0; j < 10; j++) { if (i % 2 == 0) then x = i else x = i + 1 end if i = i / 2 }
  4. while (i > 0) { if (i % 2 == 0) then x = i else x = i + 1 end if i = i / 2 }
  5. for (int j = 0; j < 5; j++) { if (i % 2 == 0) then x = i else x = i + 1 end if i = i / 2 }

Resolução completa

Explicação passo a passo

A
Alternativa A

Alternativa A

Resumo da Resposta:
A alternativa A apresenta uma estrutura de repetição com contador fixo (for com limite 3), o que altera fundamentalmente a lógica de terminação do algoritmo original, que depende do valor da variável i (while i > 0).

Análise Detalhada

1. O Algoritmo Original

O código apresentado no enunciado utiliza uma estrutura de repetição condicional:

Funcao Inteiro funcao(int i)
    x = 0
    while (i > 0)
        if (i % 2 == 0) then
            x = i
        else
            x = i + 1
        end if
        i = i / 2
    end while
    return x

Comportamento:

  • O loop continua executando enquanto i for maior que zero.
  • A cada iteração, i é dividido pela metade (i = i / 2).
  • Isso garante que o número de iterações seja proporcional aos dígitos binários de i (logaritmo de i). É uma lógica eficiente e dinâmica.

2. A Alternativa A (Correta)

A primeira opção modifica a estrutura de controle:

for (int j = 0; j < 3; j++)
    // ... corpo do código ...

Por que o comportamento é diferente?

  • Contador Fixo: Esta estrutura força o programa a executar o bloco de código exatamente 3 vezes, independentemente do valor inicial de i.
  • Perda de Dinamismo: Se i for um número grande (ex: 100), o original continuaria dividindo até chegar a 0. A alternativa A pararia após a 3ª iteração, deixando i ainda positivo e potencialmente alterando o valor final retornado em x.
  • Erro Lógico: Substituir uma condição de término (i > 0) por um limite arbitrário (j < 3) torna a função incapaz de processar corretamente entradas fora de um intervalo muito específico.

3. Outras Alternativas (Comparativo)

  • Alternativa D: Utiliza do { ... } while (i > 0). Embora mude a ordem de verificação (garante 1 execução), a lógica de parada (i > 0) é preservada. Para i > 0, o comportamento é essencialmente o mesmo.
  • Alternativas B e C: Apresentam condições de loop complexas (i <= x + 10) que também alteram a lógica, mas a mudança de while para for fixo na opção A é a alteração estrutural mais clássica e direta em questões de lógica de programação para testar compreensão de loops.

Conclusão

A questão solicita identificar a função com comportamento diferente. A opção A é a que introduz uma restrição artificial (limite de 3 iterações) que contradiz a natureza dinâmica do algoritmo original, tornando-a a resposta correta.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Matemática

Ver mais Matemática resolvidas

Tem outra questão de Matemática?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.