Questão de Algoritmos e Estrutura de Dados — Algoritmos — CESPE / CEBRASPE 2023
Algoritmos e Estrutura de Dados›Algoritmos
Código
ce151513
Banca
CESPE / CEBRASPE
Órgão
AGER - Mato Grosso
Ano
2023
Nível
Superior
Cargo
Analista Regulador - Ciências da Computação e ou Sistemas de Informação
leia(x)y = 0.0m = 1.0enquanto x > 1 façaescreva(y, x, m)y = y + (x % 2) * mx = x / 2m = m * 10fim enquantoescreva(y)Assinale a opção que apresenta o valor de x para que o resultado do código precedente seja igual a 131.
A3
B5
C9
D6
E7
Revelar gabarito e comentário▾
GabaritoB — 5
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 – interpretação de laço e operações com ponto flutuante
Gabarito: letra B (x = 5). O algoritmo acumula em y as parcelas (x % 2) * m, onde x é um número real, % é o operador módulo sobre reais (resto da divisão), e m é multiplicado por 10 a cada iteração. O laço executa enquanto x > 1. Testando x = 5, obtém-se y = 131, conforme simulação detalhada abaixo.
A banca testa a capacidade de rastrear variáveis reais com divisão e módulo não inteiros. O ponto central é que x % 2, para x real, retorna o resto da divisão por 2 (parte fracionária não inteira), e x / 2 é a divisão real.
Simulação passo a passo para x = 5
Iteração
Antes do laço
y (antes)
x (antes)
m (antes)
Condição x>1?
y = y + (x%2)*m
x = x/2
m = m*10
1
leitura
0.0
5.0
1.0
sim
0+(1)*1 =1.0
2.5
10.0
2
1.0
2.5
10.0
sim
1+(0.5)*10=6.0
1.25
100.0
3
6.0
1.25
100.0
sim
6+(1.25)*100=131.0
0.625
1000.0
fim
131.0
0.625
1000.0
não (x≤1)
Após o laço, escreva(y) imprime 131. Assim, x = 5 produz o resultado solicitado.
1y=0, x=5, m=1
2y=1, x=2.5, m=10
3y=6, x=1.25, m=100
4y=131, x=0.625, m=1000
LEVEL · soulevel.com.br
Alternativas
Alternativa A — ❌ Incorreta (x = 3)
Simulando: primeira iteração: y=1, x=1.5, m=10; segunda iteração: y=1+(1.5%2=1.5)*10=16, x=0.75, fim. y=16 ≠ 131.
A banca explora a diferença entre divisão inteira e real e o operador módulo em ponto flutuante. O candidato pode, por hábito, considerar x como inteiro e x/2 como divisão inteira, obtendo resultados diferentes (por exemplo, para x=5 chegaria a y=1). A chave é notar que o pseudo‑código usa números reais (variáveis float) e o operador % em reais retorna o resto da divisão (ex.: 2.5 % 2 = 0.5). Simular com a primeira iteração já revela valores fracionários.