Pular para o conteúdo principal

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

ProgramaçãoLinguagens de programação
Código
fg086247
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Pleno I - Desenvolvimento e Análise de Produtos de Previsão Numérica de Tempo e Dados Ambientais
Considere o seguinte script em Shell (bash), que calcula um certo valor para a variável “resultado”. O script deve imprimir o valor final da variável “resultado”. Analise o script e determine a saída correta.Imagem associada para resolução da questão
  1. A8
  2. B-5
  3. C5
  4. DUm erro acontece durante a execução
  5. E3
Revelar gabarito e comentário

GabaritoE — 3

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 E — a conta chega a 3 — alternativa E.

A ideia por trás

O shell script (bash) é uma linguagem interpretada, executada linha por linha pelo interpretador de comandos. Diferente de linguagens compiladas, como C ou Java, o bash não exige um processo de compilação; o código é lido e executado diretamente. No contexto da questão, o script calcula um valor para a variável resultado e o imprime.

A pegadinha central está em como o bash trata a aritmética: ele não faz cálculos automaticamente em atribuições simples como resultado = x + y. Para forçar a avaliação matemática, é necessário usar a expansão aritmética $((expressão)) ou o comando let. Sem isso, o bash trataria a expressão como uma string literal, o que poderia gerar um erro ou um resultado inesperado.

Esta questão cobra exatamente essa particularidade: identificar que a linha resultado=$((x - y)) usa a expansão aritmética correta e, portanto, calcula a subtração, resultando em 3.

O que a questão dá

  • x = 5

  • y = 2

  • resultado = $((x - y))

  • echo $resultado

O que queremos: o valor impresso pelo script

Passo 1 — Atribuir valores às variáveis

O script começa definindo os valores iniciais. Em bash, a atribuição é feita com = sem espaços, e o valor é tratado como texto até que uma operação aritmética seja solicitada.

x = 5, y = 2

NÃO CAIA NESSA!

Esquecer que em bash não pode haver espaços ao redor do = na atribuição, mas aqui a sintaxe está correta.

Passo 2 — Calcular a subtração com expansão aritmética

A linha resultado=$((x - y)) é o coração da questão. O $((...)) é a sintaxe do bash para avaliar expressões aritméticas inteiras. Sem ele, o bash trataria x - y como uma string literal, não como uma operação.

Por que esta fórmula: A expansão aritmética $((...)) é a forma padrão de forçar o bash a calcular uma expressão matemática. Dentro dela, as variáveis são expandidas e a operação é realizada.

resultado=xyresultado = x - y

De onde vem cada valor: xx = passo 1: 5 · yy = passo 1: 2

resultado=52=3resultado = 5 - 2 = \boxed{3}
NÃO CAIA NESSA!

Achar que resultado = x - y (sem $((...))) já calcula a subtração — no bash isso não acontece, e o valor seria a string 'x - y'.

Passo 3 — Imprimir o valor da variável

O comando echo $resultado exibe o conteúdo da variável. Como a variável foi definida com o valor numérico 3, o comando imprime 3.

3\boxed{3}
NÃO CAIA NESSA!

Confundir echo com printf ou esquecer o $ antes do nome da variável, o que imprimiria o texto 'resultado'.

Resposta: 3 — alternativa E

Link permanente: /questoes/fg086247