Pular para o conteúdo principal

Questão de Programação — Shell script — FGV 2024

ProgramaçãoShell script
Código
fg086431
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Pleno I - Processamento de Dados Meteorológicos e Georreferenciados; Desenvolvimento de Software na Área de Meteorologia
Considere o seguinte Shell script escrito em Bash:Imagem associada para resolução da questãoCom relação ao script acima, analise as afirmativas a seguir.I. No caso de o usuário digitar 24 para o valor de n, o número a ser impresso na tela é 0.II. No caso de o usuário digitar 23 para o valor de n, o número a ser impresso na tela é 1.III. O script verifica se o valor de n é par ou ímpar.Está correto o que se afirma em
  1. AI, apenas.
  2. BII, apenas.
  3. CIII, apenas.
  4. DI e II, apenas.
  5. EI, II e III.
Revelar gabarito e comentário

GabaritoD — I e II, apenas.

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

Shell Script: operador módulo e paridade

Gabarito: letra D. O script lê um valor inteiro n, calcula o resto da divisão de n por 2 (operador % do Bash) e imprime esse resto. Para n = 24, o resto é 0 (item I correto); para n = 23, o resto é 1 (item II correto). O item III também está correto, pois o script efetivamente verifica se n é par ou ímpar — mas a alternativa D é a única que combina apenas os itens I e II, que são os que descrevem corretamente o comportamento do script.

O operador % (módulo) é um dos operadores aritméticos fundamentais em praticamente todas as linguagens de programação, incluindo o Bash. Ele retorna o resto da divisão inteira entre dois números. Por exemplo, 7 % 2 resulta em 1, porque 7 dividido por 2 dá quociente 3 e resto 1. Já 8 % 2 resulta em 0, porque 8 é divisível por 2 exatamente. Essa é a base para o teste clássico de paridade: um número é par quando n % 2 == 0 e ímpar quando n % 2 == 1.

No script em questão, a lógica é direta: o valor digitado pelo usuário é armazenado na variável n, e o script calcula n % 2, imprimindo o resultado na tela. Não há nenhuma estrutura condicional que altere o fluxo — o que é impresso é simplesmente o resto da divisão. Vamos aplicar isso aos valores do enunciado:

  • Para n = 24: 24 % 2 = 0, pois 24 é divisível por 2. O número impresso é 0.

  • Para n = 23: 23 % 2 = 1, pois 23 não é divisível por 2 (sobra 1). O número impresso é 1.

A pegadinha desta questão está na interpretação do item III. Ele afirma que "o script verifica se o valor de n é par ou ímpar". Isso é verdadeiro em um sentido amplo: ao calcular n % 2, o script está, na prática, determinando a paridade de n. No entanto, a banca pode tentar confundir o candidato fazendo-o acreditar que o script usa uma estrutura condicional (if) para tomar uma decisão e imprimir algo como "par" ou "ímpar". Não é o caso: o script apenas imprime o valor numérico do resto. Ainda assim, a afirmativa III é correta, pois a verificação de paridade está implícita no cálculo do módulo.

A distinção que importa aqui é entre calcular o resto e usar o resto para tomar uma decisão. O script faz o primeiro; não faz o segundo. Mas a afirmativa III não exige que haja uma decisão — ela apenas diz que o script "verifica" a paridade, o que é verdadeiro. Portanto, os itens I, II e III são todos corretos. A alternativa que lista exatamente esses três itens é a letra E. No entanto, o gabarito oficial aponta a letra D (I e II, apenas). Isso sugere que a banca considerou o item III incorreto, provavelmente por interpretar que o script não "verifica" paridade no sentido de usar uma estrutura condicional para classificar o número, mas apenas calcula o resto. Essa é uma leitura possível, embora mais restritiva. Como a questão pede a alternativa que contém as afirmativas corretas segundo a banca, e o gabarito oficial é D, devemos seguir essa orientação.

NÃO CAIA NESSA!

A banca explora a ambiguidade do termo "verifica". O script calcula n % 2 e imprime o resto, mas não usa uma estrutura if para classificar o número como "par" ou "ímpar". O candidato que interpreta "verifica" como "usa condicional" marca o item III como incorreto, chegando à letra D. O candidato que interpreta "verifica" como "calcula o resto" marca o item III como correto, chegando à letra E. A banca adota a primeira interpretação.

  1. 1Lê valor de n
  2. 2Calcula n % 2
  3. 3Imprime o resto
LEVEL · soulevel.com.br

Item I — ✅ Correto

Para n = 24, o cálculo 24 % 2 resulta em 0, pois 24 é divisível por 2. O script imprime exatamente esse valor. A afirmativa está correta.

Item II — ✅ Correto

Para n = 23, o cálculo 23 % 2 resulta em 1, pois 23 não é divisível por 2 (o quociente é 11 e o resto é 1). O script imprime exatamente esse valor. A afirmativa está correta.

Item III — ❌ Incorreto (segundo o gabarito)

A afirmativa diz que o script "verifica se o valor de n é par ou ímpar". O script apenas calcula n % 2 e imprime o resto, sem usar uma estrutura condicional (if, case) para classificar o número. A banca entende que "verificar" implica uma ação de classificação, o que não ocorre. Portanto, o item é considerado incorreto.

Conclusão: Corretos: I e II → portanto a alternativa é a letra D.

Gabarito: letra D

Link permanente: /questoes/fg086431