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 pularMaximizando Performance com Operadores Diferenciados (Skip, Take, AsParallel)Maximizando Performance com Operadores Diferenciados (Skip, Take, AsParallel)Descubra como otimizar suas consultas LINQ com os poderosos operadores Skip, Take e AsParallel, melhorando performance e eficiência no tratamento de dados. para 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 pularMaximizando Performance com Operadores Diferenciados (Skip, Take, AsParallel)Maximizando Performance com Operadores Diferenciados (Skip, Take, AsParallel)Descubra como otimizar suas consultas LINQ com os poderosos operadores Skip, Take e AsParallel, melhorando performance e eficiência no tratamento de dados. (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ívelProgramação Funcional e LINQ: Abordagem para Maior LegibilidadeProgramação Funcional e LINQ: Abordagem para Maior LegibilidadeDescubra como aplicar conceitos funcionais com LINQ em C# para criar códigos mais legíveis, simples, robustos e fáceis de manter. para 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