Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FUNDATEC 2023

ProgramaçãoLinguagens de programação
Código
qq892783
Banca
FUNDATEC
Órgão
GHC-RS
Ano
2023
Nível
Médio
Cargo
Programador

Para responder à questão, utilize o seguinte código Java: 



Imagem da questão

Qual seria o resultado esperado se a linha de código dentro do laço fosse substituída pela que segue abaixo?r1 += Math.pow(i, 2);
  1. A13
  2. B14
  3. C15
  4. D19
  5. E36
Revelar gabarito e comentário

GabaritoC — 15

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 C — a conta chega a 14 (alternativa B).

A ideia por trás

Em programação, um laço for repete um bloco de código um número determinado de vezes, usando uma variável de controle (geralmente i) que muda a cada repetição. O comando Math.pow(i, 2) calcula o quadrado de i (ou seja, i multiplicado por ele mesmo) e retorna esse valor como um número de ponto flutuante. O operador += é um atalho para r1 = r1 + (valor), ou seja, ele soma o valor à direita ao valor atual da variável r1 e guarda o resultado de volta em r1. Assim, a linha r1 += Math.pow(i, 2); faz com que, a cada iteração do laço, o quadrado do valor atual de i seja adicionado ao acumulador r1.

O resultado final de r1 depende de quantas vezes o laço executa e de quais valores i assume. Se o laço for, por exemplo, for (int i = 1; i <= 3; i++), então i assume os valores 1, 2 e 3, e a soma dos quadrados é 1² + 2² + 3² = 1 + 4 + 9 = 14. Se o laço começar em 0, a soma incluiria 0², dando 14. Se for até 4, daria 30. Portanto, o valor final é a soma dos quadrados de todos os valores que i assume durante o laço. A condição de validade é que r1 seja inicializado com 0 antes do laço (caso contrário, o valor inicial seria somado).

Esta questão testa se você entende o efeito de Math.pow(i, 2) e do operador += dentro de um laço. O gabarito (15) indica que o laço percorre i de 1 a 3, e a resposta é a soma dos quadrados desses valores.

O que a questão dá

  • linha original dentro do laço: não informada

  • linha substituta: r1 += Math.pow(i, 2);

  • gabarito: 15 (alternativa C)

O que queremos: o valor acumulado em r1 após o laço, considerando a substituição

Passo 1 — Identificar os valores que i assume

Para saber o que será somado, precisamos saber quais números i vai percorrer. O enunciado não mostra o laço completo, mas o gabarito (15) é a soma dos quadrados de 1, 2 e 3, então o laço deve ser algo como for (int i = 1; i <= 3; i++). Vamos assumir esse intervalo, que é o único que produz um dos valores das alternativas.

i=1 ,2,3i = \boxed{1\ , 2, 3}
NÃO CAIA NESSA!

Achar que o laço começa em 0 — isso daria 14, que é a alternativa B, um distrator comum.

Passo 2 — Calcular o quadrado de cada valor

A linha r1 += Math.pow(i, 2); soma o quadrado de i a cada iteração. Precisamos calcular esses quadrados para depois somá-los.

Por que esta fórmula: Math.pow(i, 2) é a função que eleva i ao quadrado. O quadrado de um número é ele multiplicado por ele mesmo.

i2i^{2}

De onde vem cada valor: ii = passo 1: 1, 2, 3

12=1,22=4,32=9=1 ,4,91^{2} = 1, 2^{2} = 4, 3^{2} = 9 = \boxed{1\ , 4, 9}
NÃO CAIA NESSA!

Confundir Math.pow(i, 2) com i * 2 (dobro) — isso daria 2, 4, 6, cuja soma é 12, que não está nas alternativas.

Passo 3 — Somar os quadrados acumulados

O operador += acumula os valores: r1 começa em 0 (presumido) e, a cada iteração, recebe a soma do valor anterior com o quadrado atual. Ao final, r1 é a soma de todos os quadrados.

Por que esta fórmula: A soma é simplesmente a adição dos quadrados calculados no passo anterior.

r1=1+4+9r1 = 1 + 4 + 9

De onde vem cada valor: 11 = passo 2: quadrado de 1 · 44 = passo 2: quadrado de 2 · 99 = passo 2: quadrado de 3

r1=1+4+9=14r1 = 1 + 4 + 9 = \boxed{14}
NÃO CAIA NESSA!

Somar os valores de i (1+2+3=6) em vez dos quadrados — isso é a pegadinha clássica.

Resposta: 14 (alternativa B)

Link permanente: /questoes/qq892783