Comandos break e continue em C#

Hoje iremos aprender sobre os comandos break e continue. São comandos muito usados nas estruturas de repetição que buscam interromper ou dá sequência a um laço. Vejamos

 break    

Vamos imaginar a seguinte situação, em um sistema possuímos o registro de vários CPFs de pessoas. Em um determinado momento você necessita buscar nesse conjunto de dados um determinado CPF. Interpretando que o conjunto de CPFs podem está armazenados em um array ou outra coleção e levando-se em conta que cada número de CPF é único, então como fazermos uma busca rápida? Será que teremos que percorrer todos os dados do array?

Inicialmente percebemos que podemos usar uma estrutura de repetição para que os dados do array sejam percorridos até acharmos o CPF desejado, no entanto quando acharmos o CPF desejado, não teremos mais a necessidade de continuarmos a percorrer o restante dos dados do array. Nesse sentido de quebrarmos o laço por já acharmos o que buscamos é que entra o comando break. Este comando interrompe o laço saindo dele e continuando a codificação restante de fora. Vejamos o exemplo na prática

using System;
using System.Collections.Generic;


namespace _07_break_continue
{
class Program
{
static void Main(string[] args)
{
long cpf_procurado = 09089763428; //cpf que iremos buscar
int contador = 0;
long[] cpfs = {89765480978,87965430923,09089763428,34256789768,98976546785,
23498780956,76589098790,98970768954,98767896549,87967897657,98767567896}; //array com os cpfs cadastrados

foreach(long cpf in cpfs) //optamos por usar o fereach no laço de repetição por ser uma busca simples
{
if (cpf_procurado == cpf) // ao achar o cpf procurado na condicional o código do seu escopo é executado
{
Console.WriteLine("achei");
contador++; //é feito uma contagem
break; //ao chegar nesse comando o laço foreach é interrompido e o código após esse laço é que será executado
}
contador++; // contagem das vezes em que o laço se repetiu
}

Console.WriteLine("O laço se repetiu " + contador + " vezes"); //aqui imprimimos na tela a quantidade de vezes que o laço se repetiu
Console.ReadKey();
}
}
}

no código acima percorremos com um foreach o array de cpfs cadastrados dentro do laço temos uma condicional que verifica comparando a variável cpf_procurado e cpf que é a variável definida no foreach que fará referência a cada cpf armazenado no array, repare que se ao compararmos, tivermos uma igualdade verdadeira é impresso na tela "achei" é feito uma contagem e em seguida o comando break é executado, nesse momento o que vai ser executado não é mais o laço e sim o código seguinte, onde é impresso a quantidade de vezes que o laço se repetiu e o método ReadKey() que é usado para que a tela só se feche após alguma tecla ser pressionada

Ao executarmos o código acima, teremos um total de 3 vezes em que esse laço se repetiu, ou seja não foi preciso percorrer todo o array de cpfs, o que se poupou tempo, pois na hora em que achamos o cpf procurado, saltamos do laço. Pode parecer inicialmente algo desnecessário, mas imagine você ter que percorrer uma coleção de mais de 100000 cpfs, com certeza sair do laço ao encontrar o cpf que poderia está nas primeiras posições do array faria uma grande diferença de uso de processamento.

Para comprovarmos a eficiência do break, usaremos o código acima agora, mas sem o uso do mesmo


using System;


namespace _07_break_continue
{
class Program
{
static void Main(string[] args)
{
long cpf_procurado = 09089763428;
int contador = 0;
long[] cpfs = {89765480978,87965430923,09089763428,34256789768,98976546785,
23498780956,76589098790,98970768954,98767896549,87967897657,98767567896};

foreach(long cpf in cpfs)
{
if (cpf_procurado == cpf)
{
Console.WriteLine("achei");
contador++;
// não tem break
}
contador++;
}

Console.WriteLine("O laço se repetiu " + contador + " vezes");
Console.ReadKey();
}
}
}

Executando esse código com a ausência do break, encontrarmos o cpf desejado, no entanto o laço continuou sua repetição dando um total de 12 vezes, ou seja o laço se repetiu 9 vezes a mais, desnecessariamente, pois como vimos no código antecessor a esse último, na terceira repetição o cpf_procurado foi encontrado


continue  

O comando continue é usado nos laços de repetição para que determinadas etapas sejam saltadas dando continuação às etapas seguintes, para ficar mais claro vamos imaginar a seguinte situação:

Em um array de nomes de pessoas, queremos exibir na tela o nome de todos com exceção daqueles que comecem com a letra A. Nesse sentido poderíamos de diversas maneiras criarmos tal algoritmo de forma eficiente, no entanto pela aprendizagem do uso do comando continue, iremos usá-lo para se tenha essa opção não só para casos como este, mas para diversas situações inimagináveis em que o programador pode se deparar. Vejamos o algoritmo abaixo:

using System;


namespace _07_break_continue
{
class Program
{
static void Main(string[] args)
{
string[] nomes = {"Alan", "João","Marcelo", "Amaro", "Fernando","Francisco",
"Jeferson","Aldair","Márcia","Paulo","Renato","Alcides"}; //array com os registros dos nomes das pessoas

foreach(string nome in nomes)
{
if (nome[0]=='A'){ //se o primeiro caractere for A, o comando continue é executado

continue;
}
Console.WriteLine(nome); //Aqui é solicitado a impressão de todos os nomes do array, no entanto nem todos aparecerão
}



Console.ReadKey();
}
}
}

No código acima exatamente dentro do foreach temos uma condicional que irá sempre comparar o primeiro caractere do nome com a letra A, se a igualdade for verdadeira, o comando continue será executado, após o comando ser executado, o restante do código dentro do foreach não será executado, pois haverá um salto nessa etapa e o laço volta a se repetir, mas só que na iteração seguinte, dessa forma todos os nomes serão impressos menos aqueles que começam com a letra A.

Como já dito, existem diversas formas de se resolver um problema simples desse, no entanto mostramos com o comando continue por ser o nosso contexto de aprendizagem nesse post.

É isso ai galera! Até a próxima postagem!



Se você ainda não cadastrou seu email para receber atualizações de postagens, vá a nossa página inicial e cadastre, ou se preferir clique Aqui
Autor
Maclaine Sabino

Maclaine Sabino Graduado em Matemática, Administração, finalizando Análise e Desenvolvimento de Sistemas.
Ama aprender coisas novas, tecnologia e música.