7.7. Controle de fluxo (if, else, switch, loops): Break em switch

Página 46

O controle de fluxo é um conceito fundamental na programação, pois permite que um programa tome decisões e execute diferentes blocos de código dependendo de determinadas condições. Em Java, o controle de fluxo é realizado principalmente através de estruturas como if, else, switch e loops (for, while, do-while). Neste texto, vamos nos concentrar em uma parte específica do controle de fluxo: o uso do break em uma estrutura switch.

A instrução switch é uma maneira de simplificar uma série de if-elses quando se trata de comparar uma única variável com uma série de valores constantes. A estrutura básica de um switch é a seguinte:

switch (variavel) {
    case valor1:
        // Bloco de código a ser executado se variavel == valor1
        break;
    case valor2:
        // Bloco de código a ser executado se variavel == valor2
        break;
    // ...
    default:
        // Bloco de código a ser executado se variavel não corresponder a nenhum dos valores
}

O papel do break dentro de cada caso (case) é fundamental. Sem o break, o fluxo de execução do programa continuará para o próximo caso, independentemente de ele corresponder ou não à condição. Isso é conhecido como "fall-through" e, embora possa ser útil em alguns cenários, geralmente é indesejado. O break efetivamente diz ao programa para sair do switch e continuar executando o código que segue após o bloco switch.

Um exemplo clássico de uso do switch é na criação de um menu de opções:

int opcao = getUserInput(); // Método hipotético que obtém a entrada do usuário

switch (opcao) {
    case 1:
        System.out.println("Você escolheu a opção 1.");
        break;
    case 2:
        System.out.println("Você escolheu a opção 2.");
        break;
    case 3:
        System.out.println("Você escolheu a opção 3.");
        break;
    default:
        System.out.println("Opção inválida.");
}

Neste exemplo, se o usuário inserir o número 1, a mensagem "Você escolheu a opção 1." será exibida e o programa sairá do switch. Se o break fosse omitido após o case 1, o programa também executaria o código sob case 2 e assim por diante, o que não seria o comportamento desejado.

Agora, vamos considerar um exemplo onde o "fall-through" é utilizado de forma intencional:

int mes = getMonthNumber(); // Método hipotético que retorna o número do mês atual

switch (mes) {
    case 12:
    case 1:
    case 2:
        System.out.println("É verão no hemisfério sul.");
        break;
    case 3:
    case 4:
    case 5:
        System.out.println("É outono no hemisfério sul.");
        break;
    // ... outros casos para os demais meses
}

No exemplo acima, os meses de dezembro, janeiro e fevereiro compartilham a mesma mensagem de que é verão no hemisfério sul. Ao omitir o break após o case 12 e case 1, permitimos que o programa continue executando até encontrar um break, neste caso após o case 2.

É importante notar que o uso intencional do "fall-through" deve ser bem documentado para evitar confusão para quem lê o código. Em Java, é comum adicionar um comentário, como // fall through, para indicar que a omissão do break é intencional.

Além disso, o Java SE 12 introduziu a capacidade de usar a palavra-chave yield para retornar valores de um switch, o que pode substituir o uso do break em alguns casos. Isso faz parte das expressões switch, que são uma forma mais moderna e concisa de lidar com o controle de fluxo usando switch.

Em resumo, o break é um componente essencial da instrução switch em Java, e seu uso adequado é crucial para garantir que o controle de fluxo do programa funcione como esperado. Ao mesmo tempo, o "fall-through" pode ser uma ferramenta poderosa quando usado conscientemente. Como em muitos aspectos da programação, a clareza e a intenção do código devem sempre ser priorizadas para manter a legibilidade e a manutenção do programa.

Now answer the exercise about the content:

_Qual é o papel do comando `break` em uma estrutura `switch` em Java?

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

477.8. Controle de fluxo (if, else, switch, loops): Loops (laços de repetição)

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text