Este capítulo explora o uso de estruturas de repetição (while
, do/while
e
for
) para automatizar tarefas repetitivas. Essas estruturas permitem executar blocos de código
múltiplas vezes, otimizando a escrita e adaptando-se a cenários com iterações previsíveis ou dinâmicas.
O while
executa um bloco de código enquanto uma condição for verdadeira. Já o
do/while
garante que o bloco seja executado pelo menos uma vez, mesmo que a
condição seja falsa inicialmente.
Legenda: O fluxograma ilustra como a condição é verificada no início de cada iteração. Se verdadeira, o bloco é executado; se falsa, o loop termina.
1 int contador = 1; // Inicialização da variável 2 while (contador <= 10) { // Condição de parada 3 Console.WriteLine("Contador: " + contador); 4 contador++; // Incremento para evitar loop infinito 5 } 6 Console.WriteLine("Fim do loop");
Explicação do Fluxo:
contador
é declarada e inicializada com 1.contador <= 10
é verificada. Se verdadeira, o bloco entre
chaves é executado.contador++
é crucial para garantir que a condição
eventualmente se torne falsa.1 int opcao; 2 do { 3 Console.WriteLine("1 - Cadastrar | 2 - Listar | 3 - Sair"); 4 opcao = int.Parse(Console.ReadLine()); // Leitura da entrada do usuário 5 } while (opcao != 3); // Repete até a opção 3 ser selecionada
Funcionamento: O menu é exibido repetidamente até que o usuário escolha a opção 3. O
do/while
é ideal aqui, pois o menu deve aparecer pelo menos uma vez.
O for
é utilizado quando o número de iterações é conhecido. Sua sintaxe combina
inicialização, condição e incremento em uma única linha.
1 for (int i = 1; i <= 5; i++) { // Inicialização; Condição; Incremento 2 Console.WriteLine("Iteração " + i); 3 }
Passo a Passo:
int i = 1
): Executada uma única vez, antes do loop iniciar.
i <= 5
): Verificada antes de cada iteração. Se falsa, o loop é
interrompido.i++
): Executado após cada iteração, atualizando a variável de
controle.Vantagem: Centraliza o controle do loop, tornando o código mais legível e menos propenso a erros.
Implementação de um jogo com 5 tentativas para adivinhar um número entre 0 e 10, demonstrando o uso combinado de loops e estruturas condicionais.
1 Random rand = new Random(); 2 int numeroSorteado = rand.Next(0, 11); // Gera número entre 0 e 10 3 int tentativas = 5; 4 5 while (tentativas > 0) { 6 Console.Write("Digite seu palpite: "); 7 int palpite = int.Parse(Console.ReadLine()); 8 9 if (palpite == numeroSorteado) { 10 Console.WriteLine("Parabéns! Você acertou!"); 11 break; // Interrompe o loop imediatamente 12 } else { 13 tentativas--; // Decrementa tentativas restantes 14 Console.WriteLine($"Errou! Tentativas restantes: {tentativas}"); 15 } 16 } 17 Console.WriteLine("O número sorteado era: " + numeroSorteado);
Tentativa | Palpite | Tentativas Restantes | Resultado |
---|---|---|---|
1 | 3 | 4 | Errou |
2 | 5 | 3 | Errou |
3 | 8 | 2 | Errou |
4 | 2 | 1 | Errou |
5 | 7 | 0 | Acertou (loop encerrado) |
Explicação do Quadro 1: O usuário errou nas quatro primeiras tentativas, reduzindo as tentativas
restantes. Na quinta e última tentativa, o palpite correto (7) aciona o break
, interrompendo o
loop. Mesmo com tentativas = 0
, o acerto na última chance é registrado antes do término do loop.
Quando usar cada estrutura:
for (int i = 0; i < 10; i++)
.while (senha != "1234")
.<=
vs <
).
Veja o seguinte vídeo e acompanhe no seu computador para melhor entendimento: link
Este capítulo demonstrou a importância das estruturas de repetição para controlar o fluxo de execução em
programas C#. Através dos laços while
, do/while
e for
, é possível
automatizar tarefas repetitivas de forma eficiente, reduzindo a redundância de código e adaptando-se a cenários
dinâmicos.
A integração entre estruturas condicionais e de repetição, como visto no jogo de adivinhação, permite criar
lógicas complexas e interativas. O uso correto de break
para interromper loops antecipadamente e o
controle preciso de variáveis de iteração são fundamentais para evitar erros comuns, como loops infinitos.
A prática desses conceitos é essencial para dominar o equilíbrio entre flexibilidade e controle. Experimente modificar os exemplos apresentados:
while
por for
no jogo de adivinhação;Os fluxogramas auxiliam na visualização do fluxo de controle, especialmente em loops com condições interdependentes. Utilize essas representações gráficas para planejar algoritmos antes da implementação.
Por fim, lembre-se de que o domínio de estruturas de repetição é um dos pilares para a construção de programas robustos e eficientes, sendo aplicável desde soluções simples até sistemas críticos de alta complexidade.