Duvida sobre laço FOR

1 resposta
Y

Pessoal,

Estou com uma dúvida a respeito destra estrutura de laço for, ela não tem corpo como podem notar, e ao executa-la retorna o seguinte: Sum is 15, porem não consegui entender qual é a lógica, poderiam ajudar?

for(i = 1;i <= 5;sum += i++);
	
	System.out.println("Sum is " + sum);

Desde já obrigado.

1 Resposta

wldomiciano

Tem corpo sim. Seu corpo é representado pelo ponto e virgula.

Ele é como qualquer outro, parará quando i for maior que 5. Já que i começa em 1, sabemos que fará cinco iterações antes de parar.

Seu código está incompleto, mas vamos imaginar que a variável sum começa com o valor 0;

1º iteração

  • sum começa com 0 e i começa com 1
  • sum recebe sum (que é 0) + i (que é 1), ou seja, 1
  • i é incrementado (passa a ser 2)

2° iteração

  • sum é 1 e i agora é 2
  • sum recebe sum (que é 1) + i (que é 2), ou seja, 3
  • i é incrementado (passa a ser 3)

3° iteração

  • sum é 3, i é 3
  • sum recebe 6 (sum + i)
  • i passa a ser 4

4° iteração

  • sum é 6, i é 4
  • sum recebe 10 (sum + i)
  • i passa a ser 5

5° iteração

  • sum é 10, i é 5
  • sum recebe 15 (sum + i)
  • i passa a ser maior que 5 e o loop termina e imprime 15

Quando tiver dúvidas assim você pode fazer testes, tente isso:

int sum = 0;
        
for(int i = 1; i <= 5; sum += i++) {
    System.out.printf( "i = %d  |  sum = %d\n", i, sum );
}

E você terá a seguinte saida:

i = 1  |  sum = 0
i = 2  |  sum = 1
i = 3  |  sum = 3
i = 4  |  sum = 6
i = 5  |  sum = 10
Sum is 15

O printf dentro do for só não vai mostrar o valor final de sum (que é 15), pois o loop acaba antes de imprimí-lo.

Espero ter ajudado.

Criado 2 de abril de 2016
Ultima resposta 2 de abr. de 2016
Respostas 1
Participantes 2