Questão nº 52

Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2021 (nº 52)

CESGRANRIO2021Técnico Científico - Área de Formação: Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Cver comentário ↓

O corredor com camisa de numeração 327 foi prejudicado durante uma competição pelos 10 corredores que chegaram logo a sua frente. A direção da corrida resolveu, então, desclassificar esses 10 corredores.
Um programador designado para construir um programa que listasse somente os números das camisas desses corredores desclassificados chegou ao programa apresentado abaixo, que recebe como entrada o número de cada um dos competidores pela ordem de chegada, do primeiro ao último, e acha o competidor 327.

<?php
$fh = fopen('php://stdin','r');
$array = array();
while ($array[] = fgets($fh));
fclose($fh);
for ($i=0;$array[$i]<>327;$i++);
// TODO: laço para imprimir os 10 anteriores
//
?>

No entanto, esse programa está incompleto porque apenas encontra o corredor 327.
Que instruções PHP devem ser colocadas, no lugar do comentário marcado com a palavra TODO no programa apresentado, para que sejam impressas as numerações das camisas dos 10 competidores desclassificados?

Resposta comentada

Gabarito Alternativa C

Conceito-chave: O pré-decremento --$i diminui o valor de $i em 1 antes de usar o valor na expressão, enquanto o pós-decremento $i-- usa o valor atual e só depois diminui. Como o for anterior parou com $i apontando para o índice do 327, precisamos voltar 10 posições antes de imprimir, começando do índice $i-1.

  • (A) Incorreta: Usa $i-- (pós-decremento), que imprime o próprio 327 na primeira iteração (pois usa o valor atual de $i antes de decrementar), desclassificando o corredor errado.
  • (B) Incorreta: O laço vai de $j=0 até $j<=10, ou seja, executa 11 vezes, imprimindo 11 corredores em vez de 10.
  • (C) Correta: O laço executa exatamente 10 vezes, e --$i decrementa antes de usar, então imprime os índices $i-1, $i-2, ..., $i-10 — exatamente os 10 que chegaram antes do 327.
  • (D) Incorreta: O laço começa com $j=1, executando apenas 9 vezes (de 1 até 9), imprimindo só 9 corredores.
  • (E) Incorreta: Usa $i+$j, que avança para frente (índices maiores), imprimindo os corredores que chegaram depois do 327, não os que vieram antes.

Fonte: CESGRANRIO BASA 01/2021 Técnico Científico - Área de Formação: Tecnologia da Informação. Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho