DEV Community

Break para sair de um laço

use break para sair de um laço

  • É possível forçar a saída imediata de um laço com a instrução break.

  • Ignora o código restante no corpo do laço e o teste condicional.

  • Quando uma instrução break é encontrada dentro de um laço, este é encerrado.

  • O controle do programa é retomado na instrução posterior ao laço.

Exemplo:
Image description

  • Esse programa gera a saída a seguir:
    0 1 2 3 4 5 6 7 8 9 Loop complete.

  • Embora o laço for tenha sido projetado para ir de 0 a num (que nesse caso é 100), a instrução break encerra-o prematuramente, quando i ao quadrado é maior ou igual a num.

  • A instrução break pode ser usada com qualquer laço Java, inclusive os intencionalmente infinitos.

Exemplo: o programa abaixo apenas lê a entrada até o
usuário digitar a letra q.

Image description

  • Quando usada dentro de um conjunto de laços aninhados, a instrução break encerra apenas o laço mais interno.

Exemplo:
Image description

Saída:
Outer loop count: 0
Inner loop count: 0 1 2 3 4 5 6 7 8 9
Outer loop count: 1
Inner loop count: 0 1 2 3 4 5 6 7 8 9
Outer loop count: 2
Inner loop count: 0 1 2 3 4 5 6 7 8 9
Loops complete.

  • A instrução break no laço mais interno encerra apenas esse laço.

  • O laço externo não é afetado pela instrução break do laço interno.

  • Mais de uma instrução break pode aparecer em um laço.

  • Muitas instruções break podem desestruturar o código.

  • O break que termina uma instrução switch só afeta a instrução switch, não os laços externos.

Use break como uma forma de goto

  • A instrução break pode ser usada individualmente para fornecer uma alternativa ao goto.

  • Java não tem instrução goto devido à sua forma desestruturada de alterar o fluxo de execução.

  • Programas com amplo uso de goto são difíceis de compreender e manter.

  • goto pode ser útil na saída de conjuntos de laços profundamente aninhados.

  • Java define uma forma expandida da instrução break para tratar essas situações.

  • A forma expandida de break pode sair de um ou mais blocos de código, rotulados.

  • Blocos rotulados não precisam fazer parte de um laço ou switch.

  • A forma geral da instrução break rotulada:
    break rótulo;

  • O rótulo é o nome que identifica um bloco de código.

  • A instrução break rotulada transfere o controle para fora do bloco rotulado.

  • O bloco rotulado deve incluir a instrução break, mas não precisa ser o bloco imediatamente externo.

  • Um rótulo é um identificador Java válido seguido por dois pontos.

  • A instrução break rotulada retoma a execução no fim do bloco rotulado.

Image description

Saída:
i is 1
After block one.
i is 2
After block two.
After block one.
i is 3
After block three.
After block two.
After block one.
After for.

  • Quando i é igual a 1:
    A primeira instrução if é bem-sucedida.
    O break ocorre no fim do bloco rotulado one.
    A mensagem "After block one." é exibida.

  • Quando i é igual a 2:
    A segunda instrução if é bem-sucedida.
    O controle é transferido para o fim do bloco rotulado two.
    As mensagens "After block two." e "After block one." são exibidas nessa ordem.

  • Quando i é igual a 3:
    A terceira instrução if é bem-sucedida.
    O controle é transferido para o fim do bloco rotulado three.
    As três mensagens "After block three.", "After block two.", e "After block one." são exibidas.

  • Em outro exemplo:
    O break é usado para sair de uma série de laços for aninhados.
    Quando a instrução break do laço interno é executada, o controle do programa salta para o fim do bloco rotulado done.
    Os outros três laços são ignorados.

Image description

Saída:
0
1
2
3
4
5
After i loop

  • Este código usa break com um rótulo para sair de três laços aninhados quando k atinge 5.

  • É importante o local exato onde um rótulo é inserido – principalmente no trabalho com laços.

Image description

Saída:
x and y: 0 0
x and y: 0 1

x and y: 0 0
x and y: 0 1
x and y: 1 0
x and y: 1 1
x and y: 2 0
x and y: 2 1
x and y: 3 0
x and y: 3 1
x and y: 4 0
x and y: 4 1

  • Neste código, stop1 é um rótulo associado ao primeiro conjunto de laços for, enquanto stop2 é um rótulo associado a um bloco de código interno ao segundo conjunto de laços for.

  • No primeiro conjunto de laços aninhados, o rótulo precede o laço for externo.

  • O break com o rótulo stop1 transfere o controle para o fim do bloco for inteiro.

  • Isso salta as iterações restantes do laço externo.

  • No segundo conjunto de laços aninhados, o rótulo precede a chave de abertura do bloco for externo.

  • O break stop2 transfere o controle para o fim do bloco for externo.

  • A próxima iteração do laço externo ocorre após o break.

  • É importante definir um rótulo antes de usar a instrução break com ele.

  • Não é possível usar break com um rótulo que não foi definido para um bloco que a inclua.

Exemplo ( o programa abaixo é inválido e não será compilado)

Image description

  • Já que o laço rotulado com one não inclui a instrução break, não é possível transferir o controle para esse bloco.

Top comments (0)