Julgue o item a seguir, referente a linguagem de scripts.#!/...
Julgue o item a seguir, referente a linguagem de scripts.
#!/bin/bash
x=0
while [ $x - le 2 ]
do
echo valor: $x
((x++))
done
O resultado do código shell script anterior será: valor: 3.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é E - errado.
Vamos entender porque essa é a resposta correta. O código em questão é um shell script que utiliza um loop while para imprimir valores incrementais de uma variável x. A intenção do código é incrementar a variável x a cada iteração do loop e exibir o seu valor.
O erro está na condição de comparação utilizada no loop while. Onde deveria ser -le (que é a abreviação de "less than or equal to", ou seja, "menor ou igual a"), no código foi utilizado - le, com um espaço adicional. Isso acarreta em um erro de sintaxe e o código não funcionaria como esperado.
Mas mesmo que a comparação estivesse correta, a afirmativa de que o resultado seria "valor: 3" ainda estaria incorreta, pois quando a variável x alcança o valor 3, a condição do loop while deixaria de ser verdadeira (pois 3 não é menor ou igual a 2), e o loop seria terminado sem executar o echo para o valor de x igual a 3. Portanto, os valores impressos seriam "valor: 0", "valor: 1" e "valor: 2".
Para resolver questões como essa, o conhecimento necessário é sobre a sintaxe de shell script, especialmente sobre estruturas de controle de fluxo (while loops), operadores de comparação e incremento de variáveis.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Gabarito: E
Os operadores do while:
-le = menor igual
-lt = menor que
-ge = maior igual
-gt = maior que
-eq = igual
-ne = diferente
No caso dessa questão há um espaço separando o operador - le, portanto não irá compilar, porém caso retirarmos o espaço o resultado seria:
valor: 0
valor: 1
valor: 2
De qualquer maneira estaria errado.
JUSTIFICATIVA: ERRADO. O código #!/bin/bash x=0 while [ $x -le 2 ] do echo valor: $x ((x++)) done executa um ciclo que começa com o valor de x = 0 até que o valor de x = 2. Dessa forma, o código apresenta o resultado de x em cada passo, conforme abaixo. valor: 0 valor: 1 valor: 2
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo