Pular para o conteúdo principal

Questão de Sistemas Operacionais — Geral — CESPE / CEBRASPE 2024

Sistemas OperacionaisGeral
Código
ce404142
Banca
CESPE / CEBRASPE
Órgão
CAGEPA
Ano
2024
Cargo
Tec ( )
Assinale a opção que, no PowerShell, corresponde à estrutura de repetição que imprime o valor de $i quando ele for igual a 10.
  1. Afor ($i = 1; $i -gt 10; $i++) {} Write-Output $i
  2. Bfor ($i = 1; $i -ge 10; $i++) {} Write-Output $i
  3. Cfor ($i = 0; $i -lt 10; $i++) {} Write-Output $i
  4. Dfor ($i = 0; $i -le 10; $i++) {} Write-Output $i
  5. Efor ($i = 0; $i -eq 10; $i++) {} Write-Output $i
Revelar gabarito e comentário

GabaritoC — for ($i = 0; $i -lt 10; $i++) {} Write-Output $i

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

Estruturas de repetição no PowerShell: o laço for

Gabarito: letra C. A estrutura que imprime o valor de $i quando ele for igual a 10 é for ($i = 0; $i -lt 10; $i++) {} Write-Output $i, pois o laço executa enquanto $i for menor que 10, incrementando de 0 até 9; ao sair do laço, $i vale 10 e o comando Write-Output o imprime. As demais alternativas ou iniciam $i em 1 (pulando o 0), ou usam operadores de comparação incorretos (-gt, -ge, -le, -eq) que fazem o laço não executar ou executar de forma inadequada.

O laço for no PowerShell segue a mesma lógica das linguagens C-like: ele possui três partes separadas por ponto e vírgula — a inicialização (executada uma única vez), a condição (avaliada antes de cada iteração; se verdadeira, o corpo executa) e o incremento (executado ao final de cada iteração). A sintaxe é for (inicialização; condição; incremento) { corpo }. O operador -lt significa "menor que" (less than), -gt "maior que" (greater than), -ge "maior ou igual", -le "menor ou igual" e -eq "igual".

Para entender a questão, é preciso simular mentalmente o fluxo de cada alternativa. Na alternativa correta, $i começa em 0, a condição $i -lt 10 é verdadeira para $i de 0 a 9, então o corpo (vazio) executa 10 vezes e $i é incrementado até 10. Quando $i chega a 10, a condição 10 -lt 10 é falsa, o laço termina e o comando Write-Output $i imprime 10. Nas alternativas que iniciam $i em 1, o valor 0 nunca é processado, mas isso não impede a impressão de 10 — o problema está nos operadores de comparação.

A pegadinha central está nos operadores de comparação. As alternativas A e B usam -gt e -ge, que são verdadeiros apenas quando $i é maior (ou maior ou igual) que 10. Como $i começa em 1 e é incrementado, a condição 1 -gt 10 é falsa desde o início, então o laço nunca executa e $i permanece 1 — Write-Output imprime 1, não 10. A alternativa D usa -le (menor ou igual), que é verdadeiro para $i de 0 a 10, então o laço executa 11 vezes e $i termina em 11 — imprime 11. A alternativa E usa -eq (igual), que é verdadeiro apenas quando $i é exatamente 10; como $i começa em 0 e é incrementado, a condição 0 -eq 10 é falsa, o laço nunca executa e $i permanece 0 — imprime 0.

A distinção crucial é entre -lt (menor que) e -le (menor ou igual). Com -lt 10, o laço para quando $i atinge 10, imprimindo 10. Com -le 10, o laço executa também quando $i é 10, incrementa para 11 e imprime 11. Essa diferença de um caractere é o que a banca explora para confundir o candidato.

NÃO CAIA NESSA!

A banca troca os operadores de comparação para induzir ao erro. O candidato pode confundir -lt (menor que) com -le (menor ou igual), ou usar -gt/-ge (maior que/maior ou igual) pensando que o laço vai até 10. A chave é lembrar que, para imprimir o valor 10 após o laço, a condição deve ser verdadeira para todos os valores menores que 10, e falsa quando $i for 10 — exatamente o que -lt 10 faz. Com -le 10, o laço executa uma vez a mais e imprime 11; com -gt/-ge, o laço nem executa.

  1. 1Inicialização ($i = 0)
  2. 2Condição ($i -lt 10)
  3. 3Corpo (vazio)
  4. 4Incremento ($i++)
  5. 5Saída: $i = 10
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Inicia $i em 1 e usa -gt 10 (maior que 10). A condição 1 -gt 10 é falsa desde o início, então o laço nunca executa e $i permanece 1. O comando Write-Output $i imprime 1, não 10. O erro está no operador -gt, que deveria ser -lt para que o laço percorresse os valores até 10.

Alternativa B — ❌ Incorreta

Inicia $i em 1 e usa -ge 10 (maior ou igual a 10). A condição 1 -ge 10 é falsa, então o laço nunca executa e $i permanece 1. O comando imprime 1, não 10. O erro está no operador -ge, que deveria ser -lt.

Alternativa C — ✅ Correta ⟵ GABARITO

Inicia $i em 0 e usa -lt 10 (menor que 10). O laço executa para $i de 0 a 9, incrementando até 10. Quando $i atinge 10, a condição 10 -lt 10 é falsa, o laço termina e Write-Output $i imprime 10. Esta é a única alternativa que produz o resultado pedido.

Alternativa D — ❌ Incorreta

Inicia $i em 0 e usa -le 10 (menor ou igual a 10). O laço executa para $i de 0 a 10, incrementando até 11. Quando $i atinge 11, a condição 11 -le 10 é falsa, o laço termina e Write-Output $i imprime 11, não 10. O erro está no operador -le, que inclui o 10 na iteração, fazendo o incremento ir além.

Alternativa E — ❌ Incorreta

Inicia $i em 0 e usa -eq 10 (igual a 10). A condição 0 -eq 10 é falsa, então o laço nunca executa e $i permanece 0. O comando imprime 0, não 10. O operador -eq só seria verdadeiro se $i já começasse em 10, o que não é o caso.

Gabarito: letra C

Link permanente: /questoes/ce404142