Pular para o conteúdo principal

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

ProgramaçãoLinguagens de programação
Código
fg085679
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Júnior I - Especificações de Rede, Análise de Acessos, Informações e Requisitos de Segurança. Instalação e Administração de Equipamentos
Certo programador deseja escrever em uma única linha de comandos um código em Bash que verifica se o valor digitado como entrada é negativo. Caso seja verdade, o código continua em execução, e solicita nova entrada, até que um valor maior ou igual a zero seja digitado. Nesse caso, é impresso na tela do terminal o número zero e a execução é encerrada. Considere que apenas números inteiros são dados como entrada.Entre as opções a seguir, assinale a única que apresenta uma linha de comandos escrita em Bash que executa o desejado
  1. Awhile read n; do if [ n -lt 0 ]; then y=1; else y=0 && break; fi; done; echo y
  2. Bwhile read $n; do if [ $n -lt 0 ]; then $y=1; else $y=0 && break; fi; done; echo $y
  3. Cwhile read n; do if [ $n -lt 0 ]; then y=1; else y=0 && break; fi; done; echo $y
  4. Dwhile read $n; do if ( $n -lt 0 ); then y=1; else y=0 && break; fi; done; echo $y
  5. Ewhile read n; do if ( n -lt 0 ); then y=1; else y=0 && break; fi; done; echo y
Revelar gabarito e comentário

GabaritoC — while read n; do if [ $n -lt 0 ]; then y=1; else y=0 && break; fi; done; echo $y

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

Bash – Estruturas de repetição e condicionais

Gabarito: letra C. A alternativa C utiliza corretamente read n (sem cifrão para definir a variável), [ $n -lt 0 ] para teste condicional, atribuição y=0 sem cifrão, e echo $y com expansão de variável. As demais alternativas contêm erros de sintaxe que impedem o funcionamento esperado.

A questão testa o conhecimento básico de sintaxe de scripts Bash, especialmente o uso de variáveis, o comando read, a estrutura de decisão if com test (colchetes) e a saída com echo. É importante lembrar que:

  • read var lê a entrada e armazena em var; usar read $var faz com que o valor de var seja interpretado como nome de variável (expansão indireta) – incorreto.

  • O teste de condição com colchetes exige que a variável seja expandida: [ $n -lt 0 ]. Não se usa ( ) para isso.

  • Atribuições não usam cifrão: y=0, não $y=0.

  • Ao final, para imprimir o valor de uma variável, use echo $y (ou echo "$y").

Alternativa A — ❌ Incorreta

Erro: [ n -lt 0 ] compara a string literal "n" com zero, pois falta $ antes de n. Além disso, echo y imprime a letra 'y' e não o valor da variável. A intenção era [ $n -lt 0 ] e echo $y.

Alternativa B — ❌ Incorreta

Erro: read $n lê para o nome contido em n, que ainda não foi definida (ou para um valor vazio). $y=1 tenta executar o valor de y como comando. A sintaxe correta de atribuição é y=1.

Alternativa C — ✅ Correta ⟵ GABARITO

Acerto: while read n lê corretamente para a variável n. O teste [ $n -lt 0 ] funciona. y=1 e y=0 são atribuições válidas. O && break executa break quando y=0 é atribuído (exit status 0). echo $y imprime o valor de y. Atende ao enunciado.

Alternativa D — ❌ Incorreta

Erro: read $n (mesmo problema da B). ( $n -lt 0 ) usa parênteses, que criam um subshell e não realizam teste condicional; a expressão é inválida. O correto seria [ $n -lt 0 ].

Alternativa E — ❌ Incorreta

Erro: ( n -lt 0 ) igualmente inválido como teste. echo y imprime literal 'y', não o valor.

PEGA ESSA DICA!

Em Bash, decore a regra de ouro: variáveis são lidas com $ e escritas sem $. Para condições, use [ expressão ] ou [[ expressão ]] — nunca ( expressão ). Faça muitos exercícios de sintaxe para automatizar esses padrões.

Gabarito: letra C

Link permanente: /questoes/fg085679