do-while

A terceira estrutura de repetição que veremos é o do-while de forma geral:

1
2
3
4
do
{
    declaração;
} while (condição);

Mesmo que a declaração seja apenas um comando é uma boa prática deixar as chaves. O ponto-e- vírgula final é obrigatório. Vamos, como anteriormente, ver o funcionamento da estrutura do-while “por dentro”:

1
2
declaração;
if (condição) "Volta para a declaração"

Vemos pela análise do bloco acima que a estrutura do-while executa a declaração, testa a condição e, se esta for verdadeira, volta para a declaração. A grande novidade no comando do-while é que ele, ao contrário do for e do while, garante que a declaração será executada pelo menos uma vez.

O uso da estrutura do-while é muito comum na construção de menus em aplicativos Console, nos quais você quer garantir que o valor digitado pelo usuário seja válido, conforme apresentado abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
public class TestDoWhile
{ 
	public static void Main ()
	{
		int  i;
		do
        	{
        		Console.WriteLine("Escolha a fruta pelo numero:");
	        	Console.WriteLine("(1)...Mamao");
        		Console.WriteLine("(2)...Abacaxi");
        		Console.WriteLine("(3)...Laranja");
	        	i = Console.Read();
        	} while ((i < 1) || (i > 3));
 
		switch (i)
        	{
        		case 1:
	                	Console.WriteLine("Voce escolheu Mamao.");
        		break;
        		case 2:
                		Console.WriteLine("Voce escolheu Abacaxi.");
	        	break;
        		case 3:
                		Console.WriteLine("Voce escolheu Laranja.");
	        	break;
        	}
	}
}

while

O comando while tem a seguinte forma geral:

1
while (condição) declaração;

Assim como fizemos para o comando for, vamos tentar mostrar como o while funciona fazendo uma analogia. Então o while seria equivalente a:

1
2
3
4
5
if (condição)
{
      declaração;
      "Volte para o comando if"
}

Podemos ver que a estrutura while testa uma condição. Se esta for verdadeira a declaração é executada e faz-se o teste novamente, e assim por diante. Assim como no caso do for, podemos fazer um loop infinito. Para tanto basta colocar uma expressão eternamente verdadeira na condição. Pode-se também omitir a declaração e fazer um loop sem conteúdo. Vamos ver um exemplo do uso do while. O programa abaixo imprime na tela os valores de n até que a condição n< 6 não seja mais verdadeira:

1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
class WhileTest
{
      public static void Main()
      {
            int n = 1;
            while (n < 6)
            {
                  Console.WriteLine("O valor atual é: {0}", n);
                  n++;
            }
      }
}