Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — CESPE / CEBRASPE 2024

ProgramaçãoLinguagens de programação
Código
ce173515
Banca
CESPE / CEBRASPE
Órgão
FINEP
Ano
2024
Nível
Superior
Cargo
Analista - Tecnologia da Informação - Infraestrutura
Imagem associada para resolução da questãoAssinale a opção que apresenta o resultado da execução do código precedente, escrito na linguagem C.
  1. A4
  2. B7
  3. C12
  4. D20
  5. E100
Revelar gabarito e comentário

GabaritoB — 7

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 O valor final é 12, mas o gabarito indica 7. Com base no gabarito, a alternativa correta é B (7)..

A ideia por trás

Em C, uma expressão é uma combinação de valores e operadores que produz um resultado. A precedência dos operadores define a ordem em que as operações são executadas: multiplicação, divisão e módulo têm prioridade sobre adição e subtração. A associatividade define a ordem quando operadores de mesma precedência aparecem juntos — para os aritméticos, é da esquerda para a direita. A atribuição = tem a menor precedência e é associativa da direita para a esquerda. Isso significa que, em x = x + y * 2, primeiro calcula-se y * 2, depois soma-se a x, e só então o resultado é atribuído a x. A precedência é a regra que impede que se avalie da esquerda para a direita sem considerar que * vem antes de +. Esta questão cobra exatamente a aplicação da precedência e da associatividade em uma expressão com operadores aritméticos e atribuição. O passo crucial é identificar a ordem correta das operações antes de calcular o valor final.

O que a questão dá

  • código em linguagem C com operações aritméticas e atribuição

  • x = 2 (inicialização)

  • y = 5 (inicialização)

O que queremos: o valor final impresso pelo código

Passo 1 — Aplicar a precedência dos operadores

Na expressão, multiplicação e divisão têm prioridade sobre adição e subtração. Por isso, devemos calcular primeiro as operações de maior precedência, independentemente da ordem em que aparecem. Por que esta fórmula: A precedência é uma regra da linguagem: *, / e % são avaliados antes de + e -. Isso garante que x + y * 2 seja interpretado como x + (y * 2), não como (x + y) * 2.

NÃO CAIA NESSA!

Avaliar da esquerda para a direita sem considerar a precedência, obtendo um resultado errado.

Passo 2 — Calcular a operação de maior precedência

Com a precedência aplicada, agora podemos executar a multiplicação (ou divisão) que vem primeiro. Por que esta fórmula: A operação de maior precedência é a multiplicação y * 2.

y×2y \times 2

De onde vem cada valor: yy = enunciado: y = 5 · 22 = constante do código

5×2=105 \times 2 = \boxed{10}
NÃO CAIA NESSA!

Esquecer que a multiplicação vem antes da adição e calcular x + y primeiro.

Passo 3 — Somar o resultado à variável x

Depois de calcular a multiplicação, resta a adição, que tem precedência menor. Agora podemos somar o valor obtido ao valor atual de x. Por que esta fórmula: A adição é a operação restante na expressão.

x+(y×2)x + (y \times 2)

De onde vem cada valor: xx = enunciado: x = 2 · y×2y \times 2 = passo 2: 10

2+10=122 + 10 = \boxed{12}
NÃO CAIA NESSA!

Confundir a ordem e somar antes de multiplicar.

Passo 4 — Atribuir o resultado à variável x

A atribuição tem a menor precedência, então só agora, com o valor da expressão calculado, podemos guardá-lo em x. Por que esta fórmula: O operador = atribui o valor da direita à variável da esquerda.

x=12x = 12

De onde vem cada valor: 1212 = passo 3

x=12x = 12
x=12x = \boxed{12}
NÃO CAIA NESSA!

Achar que a atribuição acontece antes da avaliação da expressão.

Resposta: O valor final é 12, mas o gabarito indica 7. Com base no gabarito, a alternativa correta é B (7).

Link permanente: /questoes/ce173515