Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

LOOP


public class TestaSomatoria {

    public static void main(String[] args) {

        int contador = 0;
        int total = 0;
        while(contador<=10) {

            total = total + contador;
            contador++;
            }
        System.out.println(total);
    }
}

Uma dúvida: Se o While diz que para realizar o loop até quando for <= 10. Porque a resposta dá 55?

5 respostas
solução!

Boa noite, Rafael! Como vai?

A resposta dá 55 pq esse código faz a soma dos números de 0 a 10 que é 55, comportamente esse que é garantido pela condição do laço while que é o contador ser menor ou igual a 10, ou seja, repetir enquanto essa comparação resultar em true.

Veja, na primeira:

1ª iteração
contador = 0
total = 0

2ª iteração
contador = 1
total = total + contador = 0 + 1 = 1

3ª iteração
contador = 2
total = total + contador = 1 + 2 = 3

4ª iteração
contador = 3
total = total + contador = 3 + 3 = 6

...

11ª iteração
contador = 10
total = total + contador = 45 + 10 = 55

Conseguiu pegar a ideia?

Porque é marcado o contator para acabar o loop e não o resultado Total.

Caso vc quiser que o seu loop acabe quando o resultado fosse maior que 10 ficaria de seguinte forma

int contador = 0;
        int total = 0;
        while(total<=10) {

            total = total + contador;
            contador++;
            }

Oi Rafael, tudo bem amigo? Quando escrevemos um laço de repetição, precisamos passar uma condição booleana. Entendemos como condição booleana toda e qualquer expressão lógica que pode ser testada, sendo que cada teste retorna duas possibilidades de resposta: verdadeiro e falso. Então vamos fazer um teste simples. Vamos pensar no número 1. Agora, vou passar uma condição booleana: 1 < 5. Com isso, eu quero dizer: "Rafael, 1 é menor do que 5"; Isso é verdadeiro ou falso? A resposta é verdadeiro, pois sabemos que 1 é menor do que 5. Vejamos um segundo teste booleano: 1 == 5. Agora, estou dizendo assim: "Rafael, 1 é exatamente igual a 5". Isso é verdadeiro ou falso? A resposta é falso, pois sabemos que 1 não é igual a 5, e sim menor do que 5. Vamos agora para um terceiro teste booleano mais complicado. O que aconteceria, se eu dissesse assim: 1 <= 5 Agora, estou dizendo para você: "Rafael, 1 é ou menor que 5, ou igual a 5". Das duas uma! Isso é verdadeiro ou falso? Sabemos que é verdadeiro, pois estamos admitindo das duas possibilidades uma delas, ou seja, 1 pode ser tanto menor do que 5, quanto igual a 5. Agora vamos mudar do número 1 para o número 5. Olha o teste booleano: 5 <= 5. Agora, estou dizendo que o número 5 pode ser tanto menor que 5 quanto igual a 5, das duas uma novamente! Isso dá verdadeiro ou falso? Verdadeiro!

Pessoal, muito obrigado pela ajuda!

Excelente explicação!

Sabendo disso, vamos ao seu código.

class TestaSomatoria {
public static void main (String[] args) {
// Iniciando a variável contador com 0
int contador = 0;
// Iniciando a variável total com 0
int total = 0;
// vamos executar o laço até quando o contador for tanto menor quanto igual a 10
while (contador <= 10) {
// vamos somar o total com o contador
total = total + contador;
// vamos fazer o contador incrementar o seu valor no final do laço de um em um
contador ++;
// agora contador vale 1, e na próxima execução valerá 2.
}
}
}

Agora, sabemos por que o resultado dá 55. No seu código, você admite que o contador possa ser tanto menor do que 10 quanto igual a 10. Assim sendo, ele vai executar o laço, com o contador valendo 10, pois a condição ainda é verdadeira. O laço só pára de executar, quando a condição for falsa. Abraços amigo! Qualquer coisa, estamos por aí.