Fala Everson, tudo bem?
Realmente, exercícios para a prova de certificação tendem a ter código um tanto quanto misterioso e que dificilmente veremos no dia a dia de desenvolvimento haha!
Mas vamos lá!
int x[] = new int[3]
Declaração de um array (ou vetor) de inteiros com três posições. Se pudessemos visualizar seu estado após a declaração seria algo como:
//0 1 2 (posições)
{0 , 0 , 0}
Após a declaração, executamos o loop
for(x[1]=x.length-1;x[1]>=0;x[1]--) {
x[x[1]]=-5;
System.out.println(x[1]);
}
Para entender melhor, vamos olhar linha a linha:
for(x[1]=x.length-1;x[1]>=0;x[1]--)
Onde fazemos a declaração do loop for
, lembrando que ele tem três partes: (declaração de variáveis; condição de parada; incremento ou decremento de variáveis)
, então temos:
declaração: x[1]=x.length-1
- Aqui definimos que o valor na posição 1 do vetor x (x[1]
), vai receber o valor x.length - 1
. Nesse caso, como declaramos o vetor com três posições, o valor de x.length
é 3 (lembrando que length é a propriedade que guarda o tamanho de um vetor). E após a subtração, guardamos na posição 1 do vetor, o valor 2! Deixando o nosso vetor assim:
//0 1 2 (posições)
{0 , 2 , 0}
condição de parada: x[1]>=0
- Definimos que o loop vai continuar iterando enquanto essa condição for verdadeira, podemos ler: enquanto o valor na posição de número 1 do vetor for maior ou igual a 0, execute o trecho de código.
Incremento/decremento x[1]--
- Nesse trecho, definimos que a cada iteração o valor na segunda posição do vetor x[1]
, vai diminuir em 1.
Sabendo disso, podemos olhar para dentro do bloco for:
x[x[1]]=-5;
Essa linha, que pode causar um pouco de confusão pela quantidade de colchetes, faz o seguinte:
- Pega o valor de
x[1]
(na primeira iteração, como vimos, o valor é 2) - Coloca o valor
-5
dentro da posição x[2]
(como vimos acima, x[1]
guarda o valor 2]
Nos deixando com o vetor no seguinte estado:
//0 1 2 (posições)
{0 , 2 , -5}
Por fim
System.out.println(x[1]);
Mostramos o valor guardado dentro de x[1]
, que na primeira iteração é 2
e decrementamos o valor de x[1]
, que passa a ter o valor 1
Na segunda iteração, iniciamos com o vetor dessa maneira:
//0 1 2 (posições)
{0 , 1 , -5}
E fazemos a verificação x[1] >= 0
, como nosso x[1]
guarda o valor 1
, essa condição é verdadeira e voltamos a executar o código.
Começamos na execução da linha
x[x[1]]=-5;
Onde verificamos que x[1]
vale 1, então podemos substituir em
x[1] = -5;
Deixando o nosso vetor no seguinte estado:
//0 1 2 (posições)
{0 , -5 , -5}
Por fim, mostramos na tela o valor de x[1]
, que agora é -5, e decrementamos esse valor em 1, deixando nosso vetor:
//0 1 2 (posições)
{0 , -6 , -5}
Agora, ao refazer a verificação x[1] >= 0
, encontraremos o resultado false
, pois -6
é menor que 0
, e o loop se encerrará.
Tendo como saída no terminal os dois prints do valor de x[1]
:
// Saída do código
2
-5
Em geral, esses exercícios caem muito nas provas de certificação, para garantir a sua intimidade com a linguagem e tendem a ser um pouco confusos à primeira vista, mas não se preocupe! Com o tempo eles ficam mais claros e faz parte do processo eles serem difíceis.
Em caso de dúvidas, estou por aqui!
Um grande abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!