Questão de Programação — Linguagens de programação — FGV 2024
Programação›Linguagens 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.
A8
B-5
C5
DUm erro acontece durante a execução
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.
De onde vem cada valor: = passo 1: 5 · = passo 1: 2
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.
NÃO CAIA NESSA!
Confundir echo com printf ou esquecer o $ antes do nome da variável, o que imprimiria o texto 'resultado'.