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

Condição de Repetição: While

int i = 8;
while (i > 1)
{
    MessageBox.Show("Dividindo por dois");
    i = i / 2;
}

A explicação diz que irá aparecer 3x a msg, portanto a estrutura de repetição, não é definida qauntas vezes x coisa irá acontecer? como irá aparecer 3x, sendo que i > 1? não deveria aparecer apenas 1x? e também não consegui entender, como que i vale 8, e 8 é maior que 1

3 respostas
solução!

E ai, Frederico

Tudo bem?

Vamos pensar em todos as repetições: Inicialmente i = 8 que é maior do que 1, logo i > 1 é verdadeiro:

1ª mensagem

Agora i =4, ainda sendo maior que 1, logo, i > 1 é verdadeiro:

2ª mensagem

Agora i = 2, ainda sendo maior que 1, logo i > 1 é verdadeiro:

3ª mensagem

Agora i = 1, não sendo maior 1, logo i > 1 é falso e o código dentro do while não será executado.

Espero ter ajudado!

Olá Frederico, Coincidentemente tbm fiz esta atividade nesta semana, e tive a mesma dúvida, mas conforme explicado pelo José Moura, quando fazemos o teste de mesa podemos ver que realmente a mensagem aparece 03 vezes conforme o valor 8 vai sendo dividido por 2.

Abs

Olá Frederico,

O laço de repetição while é executado "enquanto" a condição for verdadeira. Neste caso i(8) está sendo dividido por 2 e "enquanto" i > 1 o bloco será executado.

Então temos: 8 > 1 ? Verdadeiro 8/2 = 4, 4 > 1 ? Verdadeiro 4/2 = 2, 2 > 1 ? Verdadeiro 2/2 = 1, 1 > 1 ? Falso.

Sendo assim a execução do bloco é concluída, pois a condição parametrizada não é verdadeira.