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.