Questão nº 31
Questão de Tecnologia da Informação · FCC TRT-11 2017 (nº 31)
FCC2017Técnico Judiciário – Área Apoio Especializado – Especialidade: Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Ever comentário ↓
Considere o programa Java abaixo.
public class Prova {
public static void main(String[] args) {
int a, b, c;
for (a = 2; a <= 10; a += 2) {
for (b = a; b <= 2; b++) {
for (c = 1; c <= a; c += b) {
System.out.print("" + a + b + c);
}
}
}
}
}
A saída na tela será
- A212
- B221231
- C223
- D331221
- E221 (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Laços aninhados são estruturas de repetição (loops) onde um loop está dentro de outro, e o loop interno executa todas as suas iterações para cada iteração do loop externo.
- (A) Incorreta: Esta alternativa sugere uma saída parcial, mas não é o resultado completo da única iteração que ocorre.
- (B) Incorreta: Esta alternativa implica que o loop interno executaria múltiplas vezes, o que não acontece devido à condição do loop intermediário.
- (C) Incorreta: Similar à alternativa A, é uma saída parcial e não reflete a execução completa.
- (D) Incorreta: Os valores de
a,becnão correspondem a esta sequência em nenhuma parte da execução. - (E) Correta: O programa executa da seguinte forma:
- O primeiro loop
for (a = 2; a <= 10; a += 2)inicia coma = 2. - O segundo loop
for (b = a; b <= 2; b++)inicia comb = a, ou seja,b = 2. A condiçãob <= 2(2 <= 2) é verdadeira. - O terceiro loop
for (c = 1; c <= a; c += b)inicia comc = 1. A condiçãoc <= a(1 <= 2) é verdadeira. System.out.print("" + a + b + c)imprime221.cé incrementado porb(c = 1 + 2 = 3).- A condição do terceiro loop
c <= a(3 <= 2) agora é falsa. O terceiro loop termina. bé incrementado (b = 2 + 1 = 3).- A condição do segundo loop
b <= 2(3 <= 2) agora é falsa. O segundo loop termina. aé incrementado por2(a = 2 + 2 = 4).- A condição do primeiro loop
a <= 10(4 <= 10) é verdadeira. - O segundo loop
for (b = a; b <= 2; b++)inicia comb = a, ou seja,b = 4. A condiçãob <= 2(4 <= 2) é falsa. Este é o ponto crucial e a armadilha da questão: o segundo loop não executa nenhuma vez paraa = 4ou para qualquer valor subsequente dea(6, 8, 10), poisbsempre começará com um valor maior que2. - Assim, o
System.out.printsó é executado uma única vez, resultando na saída221.
- O primeiro loop
Fonte: FCC TRT-11 2017 Técnico Judiciário – Área Apoio Especializado – Especialidade: Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.