Condicionais switch case: escolhendo caminhos de forma organizada
Explore uma forma elegante de lidar com múltiplas escolhas, como um menu de opções.
Imagine que você está em um restaurante e o garçom te pergunta: "Qual prato você gostaria?". Você não vai responder "Se for pizza, eu quero pizza. Se for macarrão, eu quero macarrão. Se for salada, eu quero salada...". Seria muito repetitivo, não é?
Em vez disso, você simplesmente diz o nome do prato, e o garçom (que já sabe o que fazer para cada prato) traz o que você pediu.
No JavaScript, a estrutura switch case funciona de forma parecida. Ela é perfeita para quando você tem uma única variável ou expressão e quer executar diferentes blocos de código dependendo do valor exato dessa variável ou expressão. É como ter um menu de opções e escolher uma delas.
Como funciona o switch case?
A sintaxe básica é assim:
switch (expressao) {
case valor1:
// Código a ser executado se 'expressao' for igual a 'valor1'
break; // Importante para sair do switch!
case valor2:
// Código a ser executado se 'expressao' for igual a 'valor2'
break;
case valor3:
// Código a ser executado se 'expressao' for igual a 'valor3'
break;
default:
// Código a ser executado se 'expressao' não corresponder a nenhum dos 'cases'
break; // Opcional no default, mas boa prática
}
Vamos entender cada parte:
switch (expressao): Aqui você coloca a variável ou a expressão cujo valor você quer testar. É como o garçom perguntando "Qual prato?".case valor:: Cadacaserepresenta uma opção de valor que aexpressaopode ter. Se aexpressaofor igual avalor, o código dentro destecaseserá executado. É como você dizendo "Quero pizza!".break;: Este é um comando muito importante! Ele serve para "quebrar" a execução doswitche sair dele. Se você esquecer obreak, o JavaScript continuará executando o código doscasesseguintes, mesmo que eles não correspondam ao valor daexpressao. Isso é chamado de "fall-through" e geralmente não é o que queremos.default:: Odefaulté opcional e funciona como umelsepara oswitch. Se aexpressaonão corresponder a nenhum doscasesdefinidos, o código dentro dodefaultserá executado. É como se você pedisse um prato que não está no cardápio, e o garçom dissesse "Desculpe, não temos esse prato."
Exemplo prático: Escolhendo o dia da semana
Vamos criar um programa que, dado um número, nos diga qual dia da semana ele representa.
let diaDaSemana = 3; // Vamos supor que 1 é Domingo, 2 é Segunda, etc.
let nomeDoDia;
switch (diaDaSemana) {
case 1:
nomeDoDia = "Domingo";
break;
case 2:
nomeDoDia = "Segunda-feira";
break;
case 3:
nomeDoDia = "Terça-feira";
break;
case 4:
nomeDoDia = "Quarta-feira";
break;
case 5:
nomeDoDia = "Quinta-feira";
break;
case 6:
nomeDoDia = "Sexta-feira";
break;
case 7:
nomeDoDia = "Sábado";
break;
default:
nomeDoDia = "Número inválido para dia da semana.";
break;
}
console.log("Hoje é " + nomeDoDia); // Saída: Hoje é Terça-feira
Neste exemplo, a variável diaDaSemana tem o valor 3. O switch compara esse valor com cada case. Quando encontra case 3, ele executa nomeDoDia = "Terça-feira"; e, em seguida, o break; faz com que ele saia do switch.
Agrupando cases
Às vezes, você pode querer que vários cases executem o mesmo código. Nesses casos, você pode agrupá-los, omitindo o break entre eles.
Exemplo: Saber se o dia é útil ou fim de semana.
let diaDaSemana = 6; // Sábado
let tipoDeDia;
switch (diaDaSemana) {
case 1: // Domingo
case 7: // Sábado
tipoDeDia = "Fim de semana";
break;
case 2: // Segunda
case 3: // Terça
case 4: // Quarta
case 5: // Quinta
case 6: // Sexta
tipoDeDia = "Dia útil";
break;
default:
tipoDeDia = "Número inválido.";
break;
}
console.log("Hoje é " + tipoDeDia); // Saída: Hoje é Fim de semana
Neste caso, se diaDaSemana for 1 ou 7, o código tipoDeDia = "Fim de semana"; será executado. Se for de 2 a 6, o código tipoDeDia = "Dia útil"; será executado.
Quando usar switch case vs. if/else if/else?
if/else if/else: É mais flexível e ideal para quando você precisa testar condições mais complexas (maior que, menor que, diferente de, combinações de condições com&&e||).switch case: É mais legível e eficiente para quando você tem uma única expressão e quer comparar seu valor com múltiplos valores exatos. Pense nele como um "menu de opções" claro e organizado.
Ambos servem para tomar decisões no código, mas o switch case brilha quando a escolha é baseada em valores específicos e discretos.