Imagem do artigo Controle de fluxo (if, else, switch, loops): Break em switch

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

Página 46 | Ouça em áudio

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.

Agora responda o exercício sobre o conteúdo:

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

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Controle de fluxo (if, else, switch, loops): Loops (laços de repetição)

Próxima página do Ebook Gratuito:

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

5 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto