1. Introdução
Na programação, direto a gente precisa fazer as mesmas coisas várias vezes seguidas. Tipo:
- Passar por todos os elementos de uma lista.
- Ler valores do teclado até o usuário digitar o que precisa.
- Calcular a soma de todos os números de 1 até 100.
- Pedir a senha do usuário até ele acertar.
Se tu tentar fazer tudo isso sem loops, vai ficar gigante, chato e nada prático. Imagina que tu tá escrevendo uma calculadora e resolve somar os números de 1 a 10 na mão:
int sum = 0;
sum += 1;
sum += 2;
sum += 3;
// ... e assim vai, 10 vezes. Aff.
Tu vai cansar antes de terminar! A solução — loops. Eles deixam o código repetitivo bem mais curto e fácil de entender. Hoje a gente vai conhecer o mais básico, mas super útil: o loop while.
2. Conhecendo o loop while
Sintaxe e esquema básico
O loop while é tipo um "papagaio" na programação: ele repete o mesmo pedaço de código enquanto uma condição for verdadeira. Quando a condição vira falsa, o papagaio cala a boca (o loop termina).
while (condição)
{
// Corpo do loop
}
while com bloco de comandos
Diagrama
Aqui vai um fluxograma simples pra entender como o while funciona:
3. Exemplos: loop while na prática
Contador clássico
Bora fazer um programinha que conta de 1 até 5 e mostra os números:
int i = 1;
while (i <= 5)
{
Console.WriteLine($"Passo nº {i}");
i++; // Não esquece de aumentar o contador!
}
// Vai mostrar:
// Passo nº 1
// Passo nº 2
// Passo nº 3
// Passo nº 4
// Passo nº 5
Repara: se tu esquecer de aumentar a variável i, o loop nunca vai terminar (teu papagaio vai virar imortal e repetir pra sempre). Isso é o tal do loop infinito — sinistro.
Lendo do teclado até acertar
Várias vezes o loop serve pra "forçar" o usuário a digitar certo:
string password = "";
while (password != "qwerty")
{
Console.Write("Digite a senha: ");
password = Console.ReadLine();
}
Console.WriteLine("Bem-vindo!");
Aqui o programa pede a senha até tu digitar o mágico "qwerty". Não esquece: se tu tirar a linha password = Console.ReadLine();, o loop vai ser infinito de novo (vai pedir a senha, mas nunca vai ler o que tu digita — trava igual robô bugado).
4. Tipos e cenários de uso do loop while
Loop while normal
Esse loop, como já vimos, olha a condição antes da primeira vez. Se a condição já for falsa, o corpo do loop nem roda.
Exemplo: condição falsa logo de cara
int i = 10;
while (i < 5)
{
Console.WriteLine(i); // Nunca vai rodar!
}
Faz sentido, né? É isso mesmo que tá escrito aí.
Loops while aninhados
Às vezes tu precisa de um loop dentro do outro. Tipo, passar por todas as linhas e, em cada uma, checar todos os caracteres. Por enquanto é só pra mostrar, mas olha um exemplo simples:
int i = 1;
while (i <= 3)
{
int j = 1;
while (j <= 2)
{
Console.WriteLine($"i = {i}, j = {j}");
j++;
}
i++;
}
// i = 1, j = 1
// i = 1, j = 2
// i = 2, j = 1
// i = 2, j = 2
// i = 3, j = 1
// i = 3, j = 2
Depois a gente vai ver loops aninhados com mais calma, só queria te assustar um pouco :)
Loop infinito
Às vezes os loops acabam, às vezes — vivem pra sempre.
while (true)
{
Console.WriteLine("Eu sou eterno!");
}
É raro usar, normalmente só pra processos em segundo plano (tipo servidor rodando), mas rola sim na prática.
5. Como não vacilar: erros comuns com while
Na programação, loop é tipo eletricidade: maneiro, mas tem que saber usar direito.
Problema 1: loop infinito por distração
Direto quem tá começando esquece de atualizar a variável da condição. Daí o loop roda "pra sempre" e tu tem que matar o programa na marra (tipo apertando Ctrl + C).
int i = 1;
while (i <= 5)
{
Console.WriteLine(i);
// i++; // OPA! Esqueceu de aumentar o i
}
Problema 2: condição errada
Às vezes o dev cava a própria cova: a condição nunca é verdadeira. Daí o loop nem roda.
int i = 10;
while (i < 5)
{
Console.WriteLine(i); // Esse código nunca vai rodar.
i++;
}
Problema 3: erro de tipo de dado
No while, a condição sempre tem que ser uma expressão booleana — ou seja, o resultado tem que ser true ou false.
int number = 5;
while (number) // Erro! Esperava bool, não int.
{
number--;
}
GO TO FULL VERSION