Questão nº 53
Questão de Tecnologia da Informação · FCC TRT20 2024 (nº 53)
Considere o seguinte código PL/SQL:
```sql
DECLARE
v_num NUMBER := 10;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE(v_num);
v_num := v_num - 1;
EXIT WHEN v_num < 5;
END LOOP;
END;
/
```
Sua execução imprimirá
- A6 linhas numeradas de 1 a 6.
- B5 linhas numeradas de 5 a 9.
- C5 linhas numeradas de 1 a 5.
- D6 linhas numeradas de 10 a 5. (alternativa correta)
- E10 linhas numeradas de 0 a 9.
Resposta comentada
Gabarito Alternativa D
O conceito-chave aqui é a ordem de execução dentro de um loop simples em PL/SQL, que continua repetindo um bloco de código até que uma condição de saída explícita (EXIT WHEN) seja verdadeira. A condição de saída é verificada após a execução do corpo do loop da iteração atual, mas antes de iniciar a próxima.
- (A) Incorreta: A contagem e os valores estão errados; o loop começa em 10 e não em 1.
- (B) Incorreta: O número de linhas e o intervalo dos valores impressos estão incorretos.
- (C) Incorreta: A contagem e os valores estão errados; o loop começa em 10 e não em 1.
- (D) Correta: O loop inicia com
v_num = 10. Na primeira iteração, imprime 10,v_numvira 9, eEXIT WHEN 9 < 5é falso. Isso se repete até quev_numseja 5. Na iteração em quev_numé 5, ele imprime 5,v_numvira 4, e entãoEXIT WHEN 4 < 5é verdadeiro, fazendo o loop terminar. Portanto, os valores impressos são 10, 9, 8, 7, 6 e 5, totalizando 6 linhas. - (E) Incorreta: O loop não imprime 10 linhas, nem começa em 0, nem termina em 9. A armadilha aqui é não rastrear a execução passo a passo e a condição exata de
EXIT WHEN, que év_num < 5, nãov_num <= 5ouv_num = 5. O valor 5 é impresso porque a condição de saída só é verificada depois que 5 é impresso ev_numé decrementado para 4.
Fonte: FCC TRT20 2024 Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 004). Reproduzida para fins de estudo.