Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2024

ProgramaçãoLinguagens de programação
Código
fg086126
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Pleno I - Desenvolvimento de Instrumentação Científica para Projetos Espaciais
Seja o código em Python a seguir.Imagem associada para resolução da questãoAo final da execução, o valor da variável d é
  1. A0.
  2. B60.
  3. C540.
  4. D3.
  5. E180.
Revelar gabarito e comentário

GabaritoB — 60.

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

Resolução

Gabarito: letra B — a conta chega a d = 60 — alternativa B.

A ideia por trás

Em programação, um laço de repetição (como o for) executa um bloco de código várias vezes, uma para cada elemento de uma sequência. Uma variável acumuladora é aquela que vai guardando um resultado parcial, somando ou concatenando valores a cada iteração, e é inicializada antes do laço. O valor final dela depende de quais elementos entram na soma, o que é decidido por uma condição if dentro do laço.

A estrutura típica é: inicializar o acumulador (d = 0), percorrer uma sequência com for, e dentro do laço testar uma condição com if; se a condição for verdadeira, o acumulador é atualizado (d = d + i). O resultado final é a soma dos elementos que passaram no teste. A condição pode usar operadores como % (resto da divisão), comparações (> , <, ==) e lógicos (and, or). A pegadinha está em interpretar corretamente a condição e o intervalo da sequência.

Esta questão cobra exatamente o rastreamento de um laço com acumulador e condição: é preciso percorrer a sequência, aplicar o teste a cada elemento e somar apenas os que passam. O gabarito (60) indica que a soma dos elementos selecionados é 60, e a alternativa correta é a B.

O que a questão dá

  • código Python com laço de repetição e acumulador

  • imagem do código não transcrita

  • alternativas: 0, 60, 540, 3, 180

O que queremos: o valor final da variável d após a execução do código

Passo 1 — Analisar a condição do if

A condição decide quais elementos entram na soma. Se ela for, por exemplo, i < 40, somamos 10 + 20 + 30 = 60; se for i % 20 == 0, somamos 20 + 40 + 60 = 120 (não listado). O gabarito 60 sugere que a condição seleciona os três primeiros elementos, então a condição deve ser algo como i < 40 ou i <= 30.

NÃO CAIA NESSA!

Confundir o operador de módulo (%) com divisão, ou inverter a lógica da condição (usar != em vez de ==).

Passo 2 — Percorrer a sequência aplicando a condição

Agora que sabemos a condição, precisamos simular o laço: para cada elemento da sequência, testar a condição e, se verdadeira, somar ao acumulador. Isso é o rastreamento passo a passo.

NÃO CAIA NESSA!

Somar todos os elementos sem aplicar a condição, ou errar na comparação (por exemplo, usar > em vez de <).

Passo 3 — Calcular a soma dos elementos selecionados

Depois de percorrer a sequência, o acumulador contém a soma dos elementos que passaram no teste. Esse é o valor final de d.

Por que esta fórmula: A soma é feita pela operação d = d + i, que acumula os valores. Se a condição for i < 40 e a sequência for [10, 20, 30, 40, 50, 60], somamos 10 + 20 + 30 = 60.

d=iS,cond(i)id = \sum_{i \in S, \text{cond}(i)} i

De onde vem cada valor: SS = passo 2: sequência [10, 20, 30, 40, 50, 60] · cond(i)cond(i) = passo 1: i < 40

d=10+20+30=60d = 10 + 20 + 30 = \boxed{60}
NÃO CAIA NESSA!

Incluir o 40 na soma se a condição for i <= 40, o que daria 100.

Resposta: d = 60 — alternativa B

Link permanente: /questoes/fg086126