Bora ajudar o programador a transformar café em código?

Mostrando postagens com marcador Comando SWITCH. Mostrar todas as postagens
Mostrando postagens com marcador Comando SWITCH. Mostrar todas as postagens

Quantos Dias Possui o Mês (Script PHP)

O PHP Progressivo agora faz parte do Programação Progressiva!

Este conteúdo foi atualizado e movido para o nosso novo endereço.

Redirecionando para: Clique aqui se não for redirecionado

Neste tutorial de PHP, vamos criar um script que diz quantos dias o mês possui, usando apenas lógica de programação e o comando SWITCH.

Mais exercícios de PHP na Apostila

Exercício - Quantos dias o mês possui

Crie uma página WEB onde o usuário digita números de 1 até 12, representando o mês do ano e seu servidor PHP deve retornar o número de dias que possui nesse mês. Desconsidere os anos bissextos.

Sabemos que:
Meses com 31 dias: Janeiro (1), Março (3), Maio (5), Julho (7), Agosto (8), Outubro (10) e Dezembro (12)
Meses com 30 dias: Abril (4), Junho (6), Setembro (9) e Novembro (11)
Meses com 28 dias: Fevereiro (2)

A solução mais óbvia é simples:

case 1:
   echo "31 dias";
   break;
case 2:
   echo "28 dias";
   break;
...
case 12:
   echo "31 dias";
   break;
default:
   echo "Mês inexistente";

Porém nosso código ia ficar muito longo e vários cases seriam repetitivos

Script em PHP Otimizado

Lembra que falamos que se não usar o break os cases vão se acumulando?
Pois é, podemos nos utilizar dessa funcionalidade para escrever um código melhor, mais limpo, veja:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Mês:  <input type="number" name="month" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $mes = $_GET['month'];
  
  switch($mes){
   case 1: case 3: case 5:
   case 7: case 8: case 10: case 12:
    echo "Mês $mes tem 31 dias";
    break;
   case 4: case 6:
   case 9: case 11:
    echo "Mês $mes tem 30 dias";
    break;   
   case 2:
    echo "Mês $mes tem 28 dias";
    break;
   default:
    echo "Mês inexistente";
  }
 ?>
 </body>
</html>

Script em PHP - Melhor Solução

Não se assuste se você programar scripts grandes, extensos, confusos e longos...e aí vem um filho de uma mãe e resolve com pouquíssimas linhas.

Faz parte do aprendizado.
Vamos te mostrar uma maneira bem mais simples e menor de se resolver esse problema.
Usaremos a técnica de acumular novamente.

O número de dias vai ficar armazenado na variável $dias, inicializada com 0.
Primeiro, deixamos o case 2 lá embaixo, perto do default.
No código desse case, somamos 28 a $dias.

Como não usaremos break, sempre essa opção de case 2 vai acontecer, ou seja, sempre somaremos 28 na variável $dias.

Acima dela, vamos adicionar 2, para o resultado dar 30 nos meses 4, 6, 9 e 11.
E bem no começo, adicionamos 1, para dar resultado 31 nos meses restantes.

Veja como fica nosso código lindo e chuchu-beleza:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Mês de 1 até 12:  <input type="number" name="month" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $mes = $_GET['month'];
  $dias = 0;
  
  switch($mes){
   case 1: case 3: case 5:
   case 7: case 8: case 10: case 12:
    $dias = $dias + 1;
   case 4: case 6:
   case 9: case 11:
    $dias = $dias + 2;
   case 2:
    $dias = $dias + 28;
  }
  echo "Mês $mes possui $dias dias";
 ?>
 </body>
</html>
A expressão:
$dias = $dias + x

Significa que o novo valor da variável $dias é o anterior mais x.

PHP, Formulários SELECT e Comando SWITCH

O PHP Progressivo agora faz parte do Programação Progressiva!

Este conteúdo foi atualizado e movido para o nosso novo endereço.

Redirecionando para: Clique aqui se não for redirecionado

Neste tutorial de nossa apostila de PHP, vamos aprender como usar o formulário do tipo SELECT junto com o PHP, fazendo uso do comando SWITCH.

Exercício de PHP com formulário HTML

Crie uma página web que exibe um formulário do tipo SELECT (igual imagem abaixo), perguntando a linguagem de programação favorita do usuário.

Devem ter as opções:
  • PHP
  • JavaScript
  • C
  • Python
  • C++
  • C#
  • Ruby

Após clicar em enviar, essa informação deve ir pro PHP, que deve retornar uma mensagem:
PHP é foda mesmo!
  • JavaScript? Junto com PHP ela é perfeita!
  • C eu acho difícil
  • Python eu acho fácil e divertida
  • Para todas as outras: Essa eu não conheço

No PHP, use o comando SWITCH para tratar as opções.

PHP com formulário SELECT do HTML

O código HTML é:

Qual a melhor linguagem, na sua opinião?<br />
<form method="post" action="">
 <select name="lingua">
  <option value="PHP">PHP</option>
  <option value="JS">JavaScript</option>
  <option value="C">C</option>
  <option value="Python">Python</option>
  <option value="CPP">C++</option>
  <option value="C#">C#</option>
  <option value="Ruby">Ruby</option>
 </select>
 <input type="submit" name="submit" value="Enviar"/>
</form>

Note que o nome do formulário é lingua. Vamos usar esse valor para pegar a opção selecionada pelo usuário.

Agora vamos para o PHP.
Primeira coisa que devemos fazer é pegar o valor selecionado, vamos fazer isso usando o $_POST e armazenando na variável $linguagem:

$linguagem = $_POST['lingua'];

Em seguida, vamos pegar essa variável e tratar no SWITCH, para exibir a mensagem correta.

Nosso código PHP + HTML, fica:

<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 Qual a melhor linguagem, na sua opinião?<br />
 <form method="post" action="">
  <select name="lingua">
   <option value="PHP">PHP</option>
   <option value="JS">JavaScript</option>
   <option value="C">C</option>
   <option value="Python">Python</option>
   <option value="CPP">C++</option>
   <option value="C#">C#</option>
   <option value="Ruby">Ruby</option>
  </select>
  <input type="submit" name="submit" value="Enviar"/>
 </form>
 <?php 
  $linguagem = $_POST['lingua'];
  
  switch($linguagem){
   case 'PHP':
    echo "PHP é a mais foda mesmo!";
    break;
   case 'JS':
    echo "JavaScript? Junto com PHP é perfeita!";
    break;
   case 'C':
    echo "C eu acho difícil!";
    break;
   case 'Python':
    echo "Python é fácil e divertida!";
    break;
   default:
    echo "Não conheço essa!";
  }
 ?>
 </body>
</html>

Em cada <option>, veja que tem um atributo value, quando selecionamos uma opção, o formulário <select> vai retornar justamente esse valor. Ou seja, vai retornar "PHP", "JS", "C", "Python" etc.
Aí agora é só tratar essas strings com o SWITCH.

Note que houve uma comunicação entre a página HTML e o servidor PHP, poderíamos simplesmente ter armazenado essa opção do usuário, para fazer uma pesquisa de dados para alguma empresa.

Bacana e simples, esse PHP não?

Comando SWITCH: Fazendo escolhas em PHP (break e default)

O PHP Progressivo agora faz parte do Programação Progressiva!

Este conteúdo foi atualizado e movido para o nosso novo endereço.

Redirecionando para: Clique aqui se não for redirecionado

Neste tutorial de nosso curso de PHP, vamos aprender o que é, para que serve e como usar a instrução SWITCH do PHP.

O Comando SWITCH em PHP

A instrução switch do PHP é muito útil quando temos uma variável (ou resultado de uma expressão) que pode assumir diversos valores, e queremos tratar cada uma dessas possibilidades, de uma maneira mais organizada.

É perfeitamente possível fazer tudo isso com uma porção de IF, ELSE e ELSEIF. Mas o IF só resulta em TRUE ou FALSE, as vezes o resultado que queremos tratar é outro (como um número, uma string etc).

De fato, fizemos isso em nosso tutorial de ELSEIF em PHP, no exemplo dos times de futebol, que vamos refazer usando SWITCH já já.

A declaração do comando switch é:
<?php 
 switch($variavel){
    case valor1:
    [codigo]

    case valor2:
    [codigo]

    case valor3:
    [codigo]
 }
?>
Funciona assim...temos que passar algum valor pra switch(), dentro dos parêntesis.
Em seguida, o PHP vai testar esse valor com vários cases, ou seja, vai testar se é igual a valor1, a valor2, a valor3...e onde for igual, ele executa todo o código, somente dali pra baixo.

Exemplo de uso do SWITCH

Crie uma página que pergunta ao usuário que time ele torce, e mostre uma mensagem correspondente:
Corinthians - Vai timão!
Palmeiras - Não tem mundial!
Flamengo - Flamíííídia!
São Paulo - Bambiiii!
Athlético - Hum, Aflético!
Outro - Time pequeno, nem conheço.

Use a instrução SWITCH

Bom, vamos lá, nosso código fica assim:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
  <form action="home.php" method="get">
   Que time você torce:  <input type="text" name="time" /><br />
   <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $time = $_GET['time'];
  
  switch($time){
   case 'Corinthians':
    echo "Vai Timão!";
   case 'Palmeiras':
    echo "Não tem mundial";
   case 'Flamengo':
    echo "Flamíííídia";
   case 'São Paulo':
    echo "Bambiiis";
   case 'Athlético':
    echo "Huum...aflético";
  }
 ?>
 </body>
</html>
Faça um teste. Escreva, por exemplo, Flamengo, o resultado vai ser:
"FlamíííídiaBambiiisHuum...aflético"

Temos aí dois problemas.
O primeira era que era pra ser só 'Flamíííídia' o resultado, e não tudo isso.
O segundo problema é se outro time for digitado, era pra aparecer "Time pequeno, nem conheço".

Vamos ver como resolver isso.

A instrução break em SWITCH no PHP

Quando definimos para que serve a switch dissemos que ele procura o case correspondente e executa o código DALI EM DIANTE. 

Ao digitar 'Flamengo', o PHP acha o case 'Flamengo' no switch, executa seu código e o dos próximos cases.

O que queremos é que seja executado somente o case correto e pare, não execute mais nada.
Para isso, temos que usar a expressão break (quebrar, parar) ao final de cada case.

Veja como fica nosso código com o comando break:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
  <form action="home.php" method="get">
   Que time você torce:  <input type="text" name="time" /><br />
   <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $time = $_GET['time'];
  
  switch($time){
   case 'Corinthians':
    echo "Vai Timão!";
    break;
   case 'Palmeiras':
    echo "Não tem mundial";
    break;
   case 'Flamengo':
    echo "Flamíííídia";
    break;
   case 'São Paulo':
    echo "Bambiiis";
    break;
   case 'Athlético':
    echo "Huum...aflético";
  }
 ?>
 </body>
</html>

O comando default no SWITCH em PHP

Mas ainda não está completo, nosso código.

E se você digitar outro clube que não está aí, como Ceará ou Paraná, por exemplo?
Era pra aparecer "Não conheço time pequeno"...e aí, criar um case para cada outro clube possível?

Óbvio que não, nem tem como, são muitas opções!
É aí que entra o default.

Tudo que não for tratado/captado por nenhum case, vai cair no default.

Veja como fica nosso código completo, funcionando perfeitamente, com instrução switch e comandos break e default:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
  <form action="home.php" method="get">
   Que time você torce:  <input type="text" name="time" /><br />
   <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $time = $_GET['time'];
  
  switch($time){
   case 'Corinthians':
    echo "Vai Timão!";
    break;
   case 'Palmeiras':
    echo "Não tem mundial";
    break;
   case 'Flamengo':
    echo "Flamíííídia";
    break;
   case 'São Paulo':
    echo "Bambiiis";
    break;
   case 'Athlético':
    echo "Huum...aflético";
    break;
   default:
    echo "Não conheço time pequeno";
  }
 ?>
 </body>
</html>
Curso de PHP online grátis

Exercício de Switch

Escreva uma página WEB onde o usuário vai inserir o número correspondente ao mês, ou seja, de 1 até 12 e o PHP vai devolver o nome, por extenso, do mês que o usuário digitou.
Use Switch

Veja também

O melhor PC para programar

O melhor celular para programar