🎯 O que você vai aprender nesta aula:
- Como substituir dezenas de
IF/ELSEpor um código mais limpo. - O poder do agrupamento de blocos no comando
SWITCH. - Como usar a ausência do
breaka seu favor (truque de lógica ninja). - Receber dados de um formulário HTML e processá-los no servidor.
No desenvolvimento de sistemas, muitas vezes precisamos criar scripts que tomam decisões com base em datas. Neste tutorial prático do nosso curso de PHP, vamos resolver um problema clássico: descobrir quantos dias tem um mês específico, usando apenas a sua lógica e o COMANDO SWITCH.
Como calcular os dias de um mês usando PHP?
Para calcular os dias de um mês em PHP de forma eficiente, usamos a estrutura de controle SWITCH. Em vez de criar múltiplos blocos IF/ELSE, o SWITCH avalia a variável do mês (de 1 a 12) e direciona o fluxo do código diretamente para o bloco correspondente, retornando 28, 30 ou 31 dias.
O desafio de hoje é simples: crie uma página WEB onde o usuário digita um número de 1 a 12 (representando o mês), e o seu servidor PHP deve retornar o número exato de dias daquele mês. Para este exercício de lógica, vamos desconsiderar os anos bissextos, ok?
Nossa regra de negócios (o que sabemos do mundo real):
- 31 dias: Janeiro (1), Março (3), Maio (5), Julho (7), Agosto (8), Outubro (10) e Dezembro (12).
- 30 dias: Abril (4), Junho (6), Setembro (9) e Novembro (11).
- 28 dias: Fevereiro (2).
A solução amadora (Não faça isso!)
Se você vem da nossa aula de ESTRUTURA IF E ELSE, sua primeira intuição pode ser fazer uma tripa gigante de condições. Usando o switch de forma básica, ficaria assim:
case 1:
echo "31 dias";
break;
case 2:
echo "28 dias";
break;
// ... e assim por diante até o case 12
Isso funciona? Sim. É profissional? Nem um pouco! O código fica longo, repetitivo e terrível de dar manutenção.
Agrupando Cases: O Script PHP Otimizado
Lembra que aprendemos que, se você não usar a palavra break, o PHP vai executando os cases de baixo como uma cachoeira? Podemos usar essa funcionalidade a nosso favor para agrupar meses que possuem o mesmo número de dias!
Veja como o código fica absurdamente mais limpo. Vamos receber o dado via $_GET e testar:
<html>
<head>
<title>Apostila PHP Progressivo</title>
</head>
<body>
<!-- Formulário HTML enviando dados via GET -->
<form action="" method="get">
Mês (1 a 12): <input type="number" name="month" min="1" max="12" required />
<input type="submit" value="Testar" />
</form>
<?php
// Verifica se o usuário enviou o formulário
if(isset($_GET['month'])) {
$mes = $_GET['month'];
switch($mes){
// Meses com 31 dias agrupados
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
echo "O mês $mes tem 31 dias.";
break; // Aqui o código para!
// Meses com 30 dias agrupados
case 4: case 6: case 9: case 11:
echo "O mês $mes tem 30 dias.";
break;
// Fevereiro, o diferentão
case 2:
echo "O mês $mes tem 28 dias.";
break;
// Se o usuário burlar o HTML e digitar 99
default:
echo "Mês inexistente!";
}
}
?>
</body>
</html>
Bem melhor, concorda? Agrupamos a lógica e reduzimos nosso script pela metade!
🧠 Travou na Lógica?
Aprender lógica de programação requer prática. O segredo não é decorar comandos, é resolver problemas. Na nossa Apostila PHP Progressivo, você encontra dezenas de exercícios resolvidos passo a passo, exatamente como este, para você estudar offline no seu próprio ritmo.
Baixar Apostila Completa →O "Truque" da Acumulação: Lógica Ninja
Não se assuste se você passar horas programando um script longo, e aí vem um colega e resolve o mesmo problema com pouquíssimas linhas. Faz parte do jogo!
Vamos elevar o nível e fazer um exercício mental pesado agora. O objetivo aqui não é criar o código mais legível do mundo, mas sim explodir sua mente sobre como o fluxo do switch funciona.
Vamos usar uma técnica de acumulação matemática. Pense comigo:
- Todo mês tem pelo menos 28 dias. Então vamos inicializar
$dias = 0e, lá no fim, sempre somar 28. - Alguns meses têm 30 dias (ou seja, 28 + 2).
- Outros meses têm 31 dias (ou seja, 28 + 2 + 1).
E se tirarmos TODOS os comandos break e deixarmos o PHP somar as variáveis em cascata? Veja esse código "chuchu-beleza":
<?php
$mes = $_GET['month'];
$dias = 0; // Inicializa a variável
switch($mes){
// Caso 31 dias (cai aqui, soma 1, e CONTINUA descendo)
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
$dias = $dias + 1; // Ou simplesmente: $dias += 1;
// Caso 30 dias (cai aqui ou vem lá de cima, soma 2, e CONTINUA descendo)
case 4: case 6: case 9: case 11:
$dias = $dias + 2;
// Caso Fevereiro (cai aqui ou vem lá de cima, soma 28, e TERMINA)
case 2:
$dias = $dias + 28;
}
echo "O mês $mes possui $dias dias.";
?>
Como esse código maluco funciona?
Se o usuário digitar o mês 1 (Janeiro):
- O PHP entra na primeira linha. Faz
0 + 1 = 1. - Como não tem break, ele desce. Faz
1 + 2 = 3. - Continua descendo. Faz
3 + 28 = 31. Resultado final: 31!
Se o usuário digitar 4 (Abril):
- Ele ignora a primeira parte, e entra direto no segundo bloco.
- Faz
0 + 2 = 2. - Desce, e faz
2 + 28 = 30. Resultado final: 30!
⚠️ Aviso de Sênior: Lógica vs Manutenção
O código acima é fantástico para treinar sua inteligência em algoritmos, mas evite usá-lo em projetos reais. Códigos super "espertinhos" são difíceis de ler por outros programadores. No mundo real, usaríamos a função nativa do PHP cal_days_in_month() ou arrays. Escreva sempre códigos claros!
Curtiu o desafio de lógica?
Na próxima aula, vamos dar um tempo de estruturas de decisão e entrar no mundo dos Laços de Repetição. Prepare-se para dominar o WHILE e o FOR!
Nenhum comentário:
Postar um comentário