Laços de repetição em C#: while, do while, for e foreach sem complicação
- Gerar link
- X
- Outros aplicativos

Resumo rápido
while: repete enquanto a condição for verdadeira; pode nem rodar.do while: roda pelo menos uma vez e depois testa.for: ideal quando você sabe quantas vezes vai repetir.foreach: percorre cada item de uma coleção, sem contador.- Todo laço precisa de algo que faça a condição ficar falsa, senão ele nunca para.
Imagine escrever Console.WriteLine("Atirou!") trinta vezes para trinta inimigos. Ninguém merece. Os laços de repetição fazem o programa repetir um bloco quantas vezes for preciso, com poucas linhas.
Os laços usam condições, então vale ter visto antes o post If, else e else if em C#.
while: enquanto houver inimigos

O while testa a condição antes de cada volta. Se for verdadeira, roda o bloco e testa de novo. Quando ficar falsa, sai do laço.
C#
int inimigos = 3;
while (inimigos > 0)
{
Console.WriteLine($"Inimigo derrotado! Restam {inimigos - 1}.");
inimigos--;
}
Console.WriteLine("Área limpa.");
Saída esperada
Inimigo derrotado! Restam 2.
Inimigo derrotado! Restam 1.
Inimigo derrotado! Restam 0.
Área limpa.
Se inimigos começasse em 0, o bloco nunca rodaria e o programa iria direto para "Área limpa.".
⚠️ Sem o inimigos--;, a condição nunca fica falsa e o programa trava num laço infinito. Sempre confira o que muda a cada volta.
do while: age primeiro, pergunta depois
O do while roda o bloco uma vez e só depois testa a condição. É perfeito para menus: o menu precisa aparecer pelo menos uma vez antes de você saber se o jogador quer sair.
C#
int opcao;
do
{
Console.WriteLine("1 - Continuar | 0 - Sair");
opcao = int.Parse(Console.ReadLine());
} while (opcao != 0);
Console.WriteLine("Jogo salvo. Até a próxima!");
Saída esperada (digitando 1 e depois 0)
1 - Continuar | 0 - Sair
1
1 - Continuar | 0 - Sair
0
Jogo salvo. Até a próxima!
Repare no ponto e vírgula depois do while (opcao != 0);: no do while ele é obrigatório.
for: quando você sabe quantas vezes

O for junta três coisas numa linha só: onde o contador começa, até quando repete e como ele muda.
C#
int capacidadeDoPente = 5;
for (int bala = 1; bala <= capacidadeDoPente; bala++)
{
Console.WriteLine($"Colocando bala {bala}...");
}
Console.WriteLine("Pente cheio!");
Saída esperada
Colocando bala 1...
Colocando bala 2...
Colocando bala 3...
Colocando bala 4...
Colocando bala 5...
Pente cheio!
| Parte do for | No exemplo | Quando roda |
|---|---|---|
| Início | int bala = 1 | Uma vez, antes de tudo |
| Condição | bala <= capacidadeDoPente | Antes de cada volta |
| Passo | bala++ | Depois de cada volta |
foreach: item por item da maleta

Quando você tem uma coleção (um array ou uma lista) e quer passar por todos os itens, o foreach é o mais simples: não tem contador nem risco de passar do fim.
C#
string[] maleta = { "pistola", "erva verde", "granada", "faca" };
foreach (string item in maleta)
{
Console.WriteLine($"Na maleta: {item}");
}
Saída esperada
Na maleta: pistola
Na maleta: erva verde
Na maleta: granada
Na maleta: faca
Arrays são o assunto do próximo post da série, onde a maleta vira o exemplo principal.
break e continue: saindo antes ou pulando uma volta
- break sai do laço na hora. Ex.: achou a chave, para de procurar.
- continue pula o resto desta volta e vai para a próxima. Ex.: ignore os itens quebrados.
C#
string[] gavetas = { "vazia", "erva verde", "chave", "granada" };
foreach (string conteudo in gavetas)
{
if (conteudo == "vazia") continue;
Console.WriteLine($"Achou: {conteudo}");
if (conteudo == "chave") break;
}
Saída esperada
Achou: erva verde
Achou: chave
Qual laço usar?
| Laço | Use quando | Exemplo do jogo |
|---|---|---|
| while | Não sabe quantas vezes; depende de uma condição | Lutar enquanto houver inimigos |
| do while | Precisa rodar pelo menos uma vez | Mostrar o menu até o jogador sair |
| for | Sabe o número de repetições | Colocar 5 balas no pente |
| foreach | Vai passar por todos os itens de uma coleção | Listar a maleta |
DESAFIO
Tente resolver antes de abrir a resposta. Sobreviveu? Vá para o próximo.
Escreva um
forque mostre a contagem regressiva de uma granada: 3, 2, 1 e depois "BOOM!".Ver resposta
for (int i = 3; i >= 1; i--) { Console.WriteLine(i); } Console.WriteLine("BOOM!");Quantas vezes este laço roda?
int vida = 0; while (vida > 0) { vida--; }Ver resposta
Nenhuma. O
whiletesta antes, e0 > 0é falso. Comdo while, rodaria uma vez.Use
whilepara curar o personagem de 10 em 10 até a vida chegar a 100, começando em 40. Quantas curas foram usadas?Ver resposta
int vida = 40; int curas = 0; while (vida < 100) { vida += 10; curas++; } Console.WriteLine(curas); // 6
Conclusão
Com while, do while, for e foreach você repete tarefas sem copiar código. O foreach já deu uma prévia do próximo assunto: guardar vários valores numa única variável, o inventário do seu programa.
📖 Continue a série: Arrays em C#.
- Gerar link
- X
- Outros aplicativos
Comentários
Postar um comentário