Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Comando for
  2. Comando foreach
  3. Comando while
  4. Comando do-while
  5. Comando de parada break
  6. Comando de salto continue
  7. Loop infinito: while, do-while e for
  8. Loop infinito com goto
  9. Entender comandos aninhados
  10. fluxograma break/continue

A linguagem de C# fornece os comandos de repetição for, while e do-while e foreach. Nesta parte do tutorial vamos aprender esses comandos.

Os comandos de repetição bem como o seus funcionamentos já foram discutidos em Portugol: Comandos de Repetição sendo a leitura recomendada.

Os operadores relacionais que podem ser utilizados como os comandos baixo podem ser vistos em C# : Operadores.

Para fazermos executar trechos de forma repetida e quando sabemos a quantidade de vezes, utilizamos o comando for que possui uma sintaxe abaixo:

Fig. 1: Fluxograma - Comando for
Sintaxe
for(inicialização ; condição ; atualização)
{
  //seu codigo aqui
}
Onde
inicialização: bloco para iniciar variável.
condição: condição para que a repetição seja executada.
atualização: atualização de variável utilizada em inicialização.
Exemplo 1
using System;

public class HelloWorld
{
    public static void Main(string[] args)
    {
        int a;
        
        for(a = 0; a < 3 ; a++)
        {
            Console.Write(a);
        }
    }
}
Saída
012

Tanto a inicialização quanto condição e atualização discutidos anteriormente podem conter mais de uma declaração ou expressão em seus respectivos blocos.

Exemplo 2

int i,j;
	    
for(i = 0,j=0; i < 10 || j <10 ; i++,j++){
    //omitido
}
Saída
-

A linguagem C# suporta a declaração de variável dentro do bloco inicialização como mostrado no exemplo abaixo:

Exemplo 3
using System;

public class HelloWorld
{
    public static void Main(string[] args)
    {
        for(int a = 0; a < 3 ; a++)
        {
            Console.Write(a);
        }
    }
}
Saída
012

Semelhante a C++ e Java, C# fornece um comando de repetição foreach que irá percorrer todos os elementos de uma coleção. A sintaxe do comando segue abaixo:

Fig. 2: Fluxograma - Comando foreach
Sintaxe
foreach (tipo_dado nome_variavel in nome_colecao)
{
  //seu codigo aqui
}
Onde
nome_colecao: objeto ou coleção que contem elementos do tipo tipo_dado.
tipo_dado: tipo de dado do elemento.

Apenas tipos de dados que utilizam iteradores podem ser utilizados com o comando foreach. Como exemplo, vetores, listas e semelhantes.

Exemplo 4
using System;

public class HelloWorld
{
    public static void Main(string[] args)
    {
        int[] array = {1,2,3};
        			
        foreach(int i in array){
          Console.Write(i);
        }
    }
}
Saída
123

O comando while, é utilizado quando precisamos executar várias repetições e não sabemos quantas vezes serão com exatidão. Porém, como se trata de um comando de repetição também pode ser usado como for.

Fig. 3: Comando while
Sintaxe
while(condicao)
{
  //seu código aqui
}
Exemplo 5
using System;

public class HelloWorld
{
    public static void Main(string[] args)
    {
        bool flag = true;
        
        while(flag == true)
        {
        	string opcaoUsuario = Console.ReadLine(); //aguarda entrada do teclado
        	
        	if (opcaoUsuario == "quit")
        	{
        		flag = false; //fim do loop
        	}
        	
        	Console.WriteLine(opcaoUsuario);
        }
    }
}
Entrada
quit
Saída
quit
quit
Exemplo 5.1 : multiplas condições
using System;

public class HelloWorld 
{	
  static void Main() 
  {    
	   int a = 0;
	   bool b = false;
	   bool c = true;
	   
	   while (b == false && c == true)
	   {
		   Console.WriteLine("loop {0}",a);
		   a++;
		   if (a == 3)
			  b = true;
	   }
  }
}
Saída
loop 0
loop 1
loop 2

O comando do-while é semelhante ao comando while, porém executa o trecho de código que está contido em seu corpo e posteriormente verifica a condição para decidir se deve ou não continuar as repetições.

Fig. 4: Fluxograma - Comando do-while
Sintaxe
do
{
   //trecho de código executado em loop
}
while(condicao);
Exemplo 6
using System;

public class HelloWorld
{
    public static void Main(string[] args)
    {
        bool flag = true;
        do 
        {
             string opcaoUsuario = Console.ReadLine(); //aguarda entrada do teclado
             if ( opcaoUsuario == "quit" ){
        	    flag = false; //fim do loop
             }
             Console.WriteLine(opcaoUsuario);
        
        }while(flag == true);
    }
}
Entrada
quit
Saída
quit
quit
Exemplo 6.1: multiplas condições
using System;

public class HelloWorld 
{	
   static void Main() 
  {    
	   int a = 0;
	   bool b = false;
	   bool c = true;
	   
	   do
	   {
		   Console.WriteLine("loop {0}",a);
		   a++;
		   if (a == 3)
			  b = true;
	   }
	   while (b == false && c == true);
  }
}
Saída
loop 0
loop 1
loop 2

C#, assim como C e C++ e outras linguagens, fornece comandos de parada break e continue. Nesta parte do tutorial vamos aprender esses comandos.

Para parar a execução de um comando de repetição como for, while , do while ou foreach, a linguagem C# fornece o comando break:

Sintaxe
break;

Quando a linha de código contendo break é executada, o fluxo de execução do comando de repetição é parado e o fluxo é desviado para o fim do bloco de comando de repetição.

Exemplo 7
using System;

class HelloWorld 
{
  static void Main() {
    
        for (int contador = 0 ; contador < 5 ; contador++)
        {
            Console.Write(contador);
        	if (contador == 3)
        	    break;
        }
  }
}
Saída
0123

O comando break só pode ser utilizado dentro dos comandos for, while, do-while, switch e foreach.

Para pularmos a execução de apenas um laço/loop dos comandos de repetição for, while, do-while ou foreach, a linguagem C# fornece o comando continue:

Sintaxe
continue;

Quando a linha de código contendo continue é executada, o fluxo de execução do laço atual é parada. O fluxo é desviado para o início do próximo laço do bloco do comando.

Exemplo 8
using System;

class HelloWorld 
{
  static void Main() 
  {
    
        int[] array = {1,2,3};
        			
        foreach(int i in array)
        {
          if (i == 2)
            continue;
          Console.Write(i);
        }
  }
}
Saída
13

O comando continue só pode ser usado dentro dos comandos for, while e do-while e foreach.

Para declarar um loop infinito em C#, utilizamos os comandos while e do-while vistos acima. As condições de validação recebem o valor ou expressão que sempre irá retornar true.

Exemplo 9: loop infinito com while
using System;

class HelloWorld 
{
  static void Main() 
  {

    while(true) //sempre verdadeiro
    {
        Console.WriteLine("Digite uma palavra:");
        string str = Console.ReadLine();
        Console.WriteLine(str);
        
        if (str == "quit")
            break;
    }
  }
}
Entrada
quit
Saída
Digite uma palavra:
quit
quit
Exemplo 10: loop infinito com do-while
using System;

class HelloWorld 
{
  static void Main() 
  {

    do
    {
        Console.WriteLine("Digite uma palavra:");
        string str = Console.ReadLine();
        Console.WriteLine(str);
        
        if (str == "quit")
            break;
            
    }while(true); //sempre verdadeiro
  }
}
Entrada
quit
Saída
Digite uma palavra:
quit
quit

Diferente dos comandos while e do-while, um loop infinito utilizando o comando for não precisa ter seu campo de verificação declarado.

Exemplo 11: loop infinito com for
using System;

class HelloWorld 
{
  static void Main() 
  {
    for(;;)
    {
        Console.Write("Digite uma palavra:");
        string str = Console.ReadLine();
        Console.WriteLine(str);
        
        if (str == "quit")
            break; 
    }
  }
}
Entrada
quit
Saída
Digite uma palavra:
quit
quit

Como C# suporta o uso de labels ou rótulos para nomear trechos ou blocos de código, podemos utilizar o comando goto para codificar um loop infinito sem o uso de comandos de repetição vistos nos exemplos acima.

Exemplo 12
using System;

class HelloWorld 
{
  static void Main() 
  {

    inicio: //label
    Console.Write("Digite uma palavra:");
    string str = Console.ReadLine();
    Console.WriteLine(str);
    
    if (str == "quit")
        goto fim;
        
    goto inicio;
        
    fim: //label
    Console.Write("fim");
  }
}
Entrada
quit
Saída
Digite uma palavra:
quit
fim
  1. 03/12/2025 - revisão 3 - Adição: Ex. 5.1 6.1 e loop infinito; Ajuste: saída de exemplos while e do-while
  2. 05/08/2025 - revisão 2 - Ajustes: pontuais, 'objetivos', link 'Operadores', ordem fluxogramas, e sintaxes
  3. 14/10/2024 - revisão 1 - Correção: links portugol; Ajustes pontuais
  4. 06/03/2024 - versão inicial