Estruturas de Controle: Aprenda break, continue e goto

Estruturas de controle são como o GPS do seu código: elas definem o fluxo de execução e decidem qual caminho seu programa vai seguir. Neste artigo, vamos explorar três comandos🔍 Comandos: Desacople Ações dos Botões!🔍 Comandos: Desacople Ações dos Botões!Aprenda a implementar comandos em C# para desacoplar lógica e interface usando MVVM, com exemplos práticos e dicas para melhor testabilidade e manutenção. poderosos (e às vezes polêmicos) do C#: break, continue e📊 Behavior-Driven Development: Testes que Todo Mundo Entende!📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. o famigerado goto. Você vai aprender a usá-los em cenários📊 Behavior-Driven Development: Testes que Todo Mundo Entende!📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. reais e descobrir quando eles podem ser aliados ou vilões!

👉 Tabela de Conteúdos

O Poder do break: Saindo de Loops Prematuramente🔗

O break é como um botão de emergência para loops🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais!. Ele interrompe imediatamente a execução do loop, mesmo que a condição ainda seja verdadeira.

Exemplo Prático📝 Logging com Serilog: Registre Tudo como um Detetive de Bugs!📝 Logging com Serilog: Registre Tudo como um Detetive de Bugs!Aprenda a usar Serilog em .NET para registrar logs estruturados, identificar erros e enriquecer informações, transformando seu código num enigma solucionável.: Sistema de login🎲 Desafio: Crie um Sistema de Login com Tratamento de Erros Robusto!🎲 Desafio: Crie um Sistema de Login com Tratamento de Erros Robusto!Aprenda a criar um sistema de login robusto em C#, com tratamento de erros adequado, validação e segurança para evitar vulnerabilidades. com limite de tentativas

for (int tentativas = 1; tentativas <= 5; tentativas++)
{
    Console.Write("Digite a senha: ");
    string senha = Console.ReadLine();
    if (senha == "1234")
    {
        Console.WriteLine("Acesso liberado!");
        break; // Sai do loop se a senha estiver correta
    }
    else
    {
        Console.WriteLine($"Tentativa {tentativas}/5 falhou!");
    }
}

💡 Casos de Uso🔏 Criptografia Assimétrica: Domine RSA e Troca de Chaves!🔏 Criptografia Assimétrica: Domine RSA e Troca de Chaves!Descubra como a criptografia assimétrica protege a troca de chaves e garante segurança em sistemas digitais usando RSA, C# e práticas recomendadas. Comuns:

Vantagens:

Desvantagens:

continue: Pulando Etapas com Elegância🔗

O continue funciona como um "pule esta rodada" em loops🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais!. Ele interrompe a iteração atual e vai para a próxima.

Exemplo Real: Processar apenas números pares em uma lista📦 List<T>: Dinamismo além dos Arrays!📦 List<T>: Dinamismo além dos Arrays!Descubra como utilizar List<T> em C# de forma eficiente. Aprenda a criar, manipular e otimizar listas para diferentes cenários com exemplos práticos.

int[] numeros = { 1, 2, 3, 4, 5, 6 };
foreach (int num in numeros)
{
    if (num % 2 != 0)
    {
        continue; // Ignora números ímpares
    }
    Console.WriteLine($"Processando número par: {num}");
}

🚀 Resultado:

Processando número par: 2  
Processando número par: 4  
Processando número par: 6

Vantagens:

Desvantagens:

goto: O Comando Polêmico (e Quando Ele Faz Sentido)🔗

O goto permite pular para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! um rótulo específico no código. Apesar de ser evitado por muitos, tem usos válidos em situações específicas.

Exemplo Controlado: Sair de loops🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! aninhados

for (int i = 0; i < 10; i++)
{
    for (int j = 0; j < 10; j++)
    {
        if (i * j == 42)
        {
            Console.WriteLine($"Encontrado em ({i}, {j})");
            goto Fim; // Sai de ambos os loops
        }
    }
}
Fim: // Rótulo de destino
Console.WriteLine("Busca finalizada!");

⚠️ Cuidado!

Vantagens:

  • Pode simplificar fluxos extremamente intrincados em códigos “legados” ou conversões de outras linguagens.

Desvantagens:

Comparação Entre as Estruturas🔗

ComandoEscopoUso IdealRisco
breakLoops e switchInterromper processamentoMédio
continueLoopsPular iteração específicaMédio
gotoQualquer escopoSair de múltiplos níveisAlto

Boas Práticas: Quando Usar (e Quando Evitar)🔗

✅ Do:

❌ Don't:

Exemplo Prático no “Mundo Real”🔗

Digamos que estamos gerenciando a entrega de comida em um restaurante, verificando pedidos em fila. Às vezes podemos querer interromper a busca assim que achamos o pedido do cliente (com break). Ou podemos pular (com continue) pedidos que estão com status “Cancelado” sem processar nada extra. Já o goto, quase não teria motivo de uso aqui, mas vamos ver um exemplo completo para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! fins didáticos:

using System;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        List<string> pedidos = new List<string>
        {
            "Pedido #01 - Em preparo",
            "Pedido #02 - Cancelado",
            "Pedido #03 - Pronto",
            "Pedido #04 - Em preparo",
            "Pedido #05 - Cancelado"
        };
        Console.WriteLine("Procurando pedidos prontos para entrega...");
        foreach (var pedido in pedidos)
        {
            // Se pedido está cancelado, ignora e pula para o próximo (continue).
            if (pedido.Contains("Cancelado"))
            {
                Console.WriteLine($"Ignorando: {pedido}");
                continue;
            }
            Console.WriteLine($"Analisando: {pedido}");
            // Se o pedido já está pronto, podemos interromper a busca (break).
            if (pedido.Contains("Pronto"))
            {
                Console.WriteLine($"Pedido encontrado e separado para entrega: {pedido}");
                break;
            }
        }
    VoltarAqui: // Label apenas para exemplo com 'goto'
        Console.WriteLine("Exemplo de goto: voltamos pra cá.");
        // goto no meio do código... não é nada elegante, mas funciona
        bool usarGoto = false;
        if (usarGoto)
        {
            goto VoltarAqui;
        }
        Console.WriteLine("Processo finalizado.");
    }
}

🎯 Desafio Prático:

Crie um programa que:

1. Gere números aleatórios de 1 a 100

2. Pare quando📊 Behavior-Driven Development: Testes que Todo Mundo Entende!📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. encontrar um número divisível por 7 e 13 simultaneamente (use break)

3. Ignore números pares (use continue)

4. Exiba o resultado final com o número encontrado

Random random = new Random();
while (true)
{
    int numero = random.Next(1, 101);
    if (numero % 2 == 0)
    {
        continue;
    }
    if (numero % 7 == 0 && numero % 13 == 0)
    {
        Console.WriteLine($"Número mágico encontrado: {numero}");
        break;
    }
    Console.WriteLine($"Testando: {numero}");
}

Dica: O primeiro número que atende a condição é 91 😉

Conclusão🔗

As palavras-chave🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!Aprenda a usar dicionários em C# de modo prático e eficiente. Nosso tutorial mostra criação, acesso e otimização para manipular dados com segurança. break, continue e📊 Behavior-Driven Development: Testes que Todo Mundo Entende!📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. goto não são complexas em si, mas podem modificar drasticamente o fluxo de um programa. Enquanto🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! break e📊 Behavior-Driven Development: Testes que Todo Mundo Entende!📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. continue são usados com frequência controlada para evitar repetições🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! desnecessárias ou pular etapas indesejadas, o goto é praticamente um dinossauro na linguagem, raramente recomendado. Entender cada um deles aprofundará seu domínio das estruturas de controle, mas lembre-se sempre de manter o código legível para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! quem for ler (incluindo você mesmo daqui a alguns meses!).

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados