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

Mostrando postagens com marcador Controle de fluxo. Mostrar todas as postagens
Mostrando postagens com marcador Controle de fluxo. Mostrar todas as postagens

Laço DO WHILE em 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 nosso curso de PHP, vamos aprender como usar este tal de looping DO WHILE.

Baixar apostila COMPLETA de PHP

Laço DO WHILE: O que é? Para que Serve ?

Quando estudamos o looping WHILE, deixamos uma coisa bem clara:
O código só era executado se o teste condicional dentro do WHILE fosse verdade.

Ou seja, primeiro o teste, só depois o código.
Se o teste for FALSE de cara, o interpretador PHP vai passar batido pelo laço WHILE e seu código, vai ver que a condição é falsa, não executa nada e é como se ele não tivesse existido.

Muitas vezes, queremos que o código rode, pelo menos uma vez, e é aí que entra o DO WHILE.
O Laço do while é bem semelhantes ao laço while, porém ele é pós condicionado ao invés de ser pré.

Se você precisar que a condição seja verificada de início, use WHILE.
Se você precisar que o teste condicional seja feito só ao final de cada looping, use DO WHILE.

Vamos entender melhor o que isso tudo significa.

Looping DO WHILE: Como usar ?

A sintaxe para usar, corretamente, o laço DO WHILE é:
<?php 
 do{
  codigo;
  codigo;
 }while(teste_condicional);
?>
Ou seja, primeiro o looping, só ao termino do código é que é feito o teste condicional.

Relembre o inglês. WHILE significa enquanto.
Enquanto a condição for verdadeira, executa. Ou seja, no looping while, só executa se o teste for verdadeiro.

Do significa faça.
Do while, faça...enquanto.

Note que tem um faça, primeiro. É porque a primeira iteração (primeira rodada do código) SEMPRE OCORRE, independente da condição.

São duas as diferenças do WHILE pro DO WHILE.

  1. A primeira iteração do código sempre ocorre.
  2. O WHILE é um laço pré-condicionado, primeiro a condição. DO WHILE é pós-condicionado, primeiro o código e só depois a condição.

Exemplo de Código DO WHILE

O script simples abaixo mostra como a primeira iteração do laço é sempre executada.
Ela exibe uma mensagem na tela, mesmo a condição sendo falsa (0):

<?php 
 do{
  echo "Condição falsa";
 }while(0);
?>

Note como ela executou apenas uma vez.

Exemplo de DO WHILE: Contante de 1 até 100

Veja agora como fica a contagem de 1 até 100 em PHP, usando laço DO WHILE:

<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <?php 
  $count=1;
  do{
   echo "$count <br />";
   $count++;
  }while($count<=100);
 ?>
 </body>
</html>

Exemplo de DO WHILE: Contar até onde o usuário quiser

O script a seguir pergunta um número para o usuário.
Então, via looping DO WHILE, o PHP imprime na tela todos os números de 1 até o valor que o usuário pediu:

<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Contar até:  <input type="text" name="count" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $final = $_GET['count'];
  $contador = 1;
  do{
   echo "$contador <br />";
   $contador++;
  }while($contador<=$final);
 ?>
 </body>
</html>

Par ou Ímpar em PHP (e outros múltiplos)

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 te ensinar como identificar se um número é par, ímpar ou múltiplo de qualquer número.

Baixar a melhor e mais completa apostila de PHP

Par ou Ímpar em PHP: Como saber ?

Para saber se um determinado valor é par ou ímpar em PHP, é bem simples.
E para isso, precisamos usar o operador Resto da Divisão: %

Todo número par possui uma característica especial: o resto da divisão por 2 é igual a 0.
Assim, nosso código fica:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Digite um número:  <input type="number" name="number" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $numero = $_GET['number'];

  if($numero % 2 == 0)
   echo "$numero é par";
  else
   echo "$numero é ímpar";
 ?>
 </body>
</html>
Paralelamente, todo número ímpar possui resto da divisão por 2 igual a 1.
Então podemos resolver este tutorial da seguinte forma:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Digite um número:  <input type="number" name="number" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $numero = $_GET['number'];

  if($numero % 2 == 1)
   echo "$numero é ímpar";
  else
   echo "$numero é par";
 ?>
 </body>
</html>

Números Múltiplos - Como detectar

Dizemos que um número x é múltiplo de outro M, quando o resto da divisão de x por M é 0.
Ou seja, quando:
(x % M = 0)

Por exemplo, 9 é múltiplo de 3, pois: 9 % 3 = 0
16 é múltiplo de 4, pois: 16 % 4 = 0

Em outras palavras, quando dividimos M por x, o resultado dá exato, inteiro, não dá quebrado (decimal, float).

O script PHP que pede um número para saber se é múltiplo de outro, é:

<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Digite um número:  <input type="number" name="number" /><br />
  Testar se é múltiplo de:  <input type="number" name="mult" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $numero = $_GET['number'];
  $multiplo = $_GET['mult'];

  if($numero % $multiplo == 0)
   echo "$numero é múltiplo de $multiplo";
  else
   echo "$numero não é múltiplo de $multiplo";
 ?>
 </body>
</html>

Triângulo em PHP: Equilátero, Isósceles, Escaleno e Existência

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 script de PHP, vamos te ensinar como fazer para verificar a existência de um triângulo, bem como definir se ele é equilátero, isósceles ou escaleno.

Existência de um triângulo

Dizemos que três lados formam um triângulo quando a soma de qualquer dois lados é maior que o terceiro lado.

Estando os valores dos lados armazenados nas variáveis $a, $b e $c, testamos a condição de existência de um triângulo com o seguinte teste condicional:

if( ($a+$b>$c) && ($a+$c>$b) && ($b+$c>$a) ){
//existe
}else
echo "O triângulo não existe";

Triângulo Equilátero, Isósceles ou Escaleno

Agora, vamos usar a técnica dos IF e ELSE aninhados

O primeiro IF vai testar se todos os lados são iguais.
Se não forem, o primeiro ELSEIF testa se tem ao menos dois lados iguais.
Se nenhuma das condições acima forem satisfeitas, é porque ele é escaleno.

Veja como fica nosso script HTML + PHP:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Lado 1:  <input type="number" name="numero1" /><br />
  Lado 2:  <input type="number" name="numero2" /><br />
  Lado 3:  <input type="number" name="numero3" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $a = $_GET['numero1'];
  $b = $_GET['numero2'];
  $c = $_GET['numero3'];

  if( ($a+$b>$c)&&($a+$c>$b)&&($b+$c>$a) ){
   if($a==$b && $b==$c)
    echo "Triângulo equilátero";
   elseif ($a==$b || $a==$c || $b==$c)
    echo "Triângulo isósceles";
   else
    echo "Triângulo escaleno";
  }else
   echo "O triângulo não existe";
 ?>
 </body>
</html>

Três números em Ordem Crescente

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

"Faça um script que leia três números inteiros e mostre eles na ordem crescente"

Estudar pela Apostila de PHP

Trocar valor de duas variáveis

Antes de resolvermos esse script, precisamos aprender um algoritmo simples, de trocar o valor de duas variáveis.

Vamos supor que:
$a = 1;
$b = 2;

Queremos que fique:
$a = 2;
$b = 1;

O primeiro passo é faze $a receber valor de $b, né?
$a = $b;

Agora só fazer o contrário, fazer $b receber o valor de $a.
$b = $a;

Simples, não?
Não!

A segunda expressão tá errada, pois agora o valor de $a mudou pouco antes!

A solução pra isso é usar uma variável temporária.
O jeito certo de inverter valores é:
$temp = $a;
$a = $b;
$b = $a;

Prontinho, aquele valor de $a que tínhamos no começo fica armazenado na variável $tempo.
Depois, o $b pega o valor desse $temp

Três Números em Ordem Crescente

Vamos pegar três números de um formulário HTML.

Inicialmente, dizemos que o menor valor é o primeiro, o valor do meio é o segundo número e o maior número é o terceiro digitado:
$menor = $_GET['numero1'];
$meio = $_GET['numero2'];
$maior = $_GET['numero3'];

Agora vem a lógica.
Vamos pegar as variáveis duas a duas.

Primeiro pegamos as duas primeiras: $menor e $meio
Se o valor de $meio for menor que $menor, devemos inverter o valor delas!

Agora vamos comparar $menor e $maior
Se $maior for menor que $menor, invertermos as variáveis.

Por fim, comparamos $meio e $maior
Se $maior for menor que $meio, devemos inverter os valores.

Veja como ficou nosso código:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Numero 1:  <input type="text" name="numero1" /><br />
  Numero 2:  <input type="text" name="numero2" /><br />
  Numero 3:  <input type="text" name="numero3" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $menor = $_GET['numero1'];
  $meio = $_GET['numero2'];
  $maior = $_GET['numero3'];

  if($meio < $menor){
   $temp=$menor;
   $menor=$meio;
   $meio=$temp;
  }
  
  if($maior < $menor){
   $temp=$menor;
   $menor=$maior;
   $maior=$temp;
  }
  
  if($maior < $meio){
   $temp=$meio;
   $meio=$maior;
   $maior=$temp;
  }
  
  echo "$menor < $meio < $maior";
 ?>
 </body>
</html>

Script: Recebe as notas, Calcula a média e diz quem passou ou reprovou

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

"Faça um programa que pede duas notas de um aluno. Em seguida ele deve calcular a média do aluno e dar o seguinte resultado:

    A mensagem "Aprovado", se a média alcançada for maior ou igual a sete;
    A mensagem "Reprovado", se a média for menor do que sete;
    A mensagem "Aprovado com Honra ao Mérito", se a média for igual a dez."

Curso de PHP com certificado
Obter meu certificado!

Script em PHP

<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Nota 1:  <input type="text" name="nota1" /><br />
  Nota 2:  <input type="text" name="nota2" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $nota1 = $_GET['nota1'];
  $nota2 = $_GET['nota2'];
  $media = ($nota1 + $nota2)/2;

  echo "Média: $media <br />";
  if($media<7)
   echo "Reprovado";
  elseif($media==10)
   echo "Aprovado com Honra ao mérito";
  else
   echo "Aprovado";
 ?>
 </body>
</html>

Lista de Exercícios de Testes Condicionais em PHP (IF, ELSE, ELSEIF e 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


1. Faça um script em PHP que verifique se uma letra digitada é vogal ou consoante.
Dígito ou caractere em PHP

2. Faça uma página Web que pede duas notas de um aluno. Em seguida ele deve calcular a média do aluno e dar o seguinte resultado:

    A mensagem "Aprovado", se a média alcançada for maior ou igual a sete;
    A mensagem "Reprovado", se a média for menor do que sete;
    A mensagem "Aprovado com Distinção", se a média for igual a dez.
Calcula média e diz se foi aprovado

3. Faça um script em PHP que leia três números inteiros e mostre eles na ordem crescente.
Três números em ordem crescente

4. Faça uma página Web que leia três números inteiros, em seguida mostre o maior e o menor deles.

5. Faça uma página Web que pede dois inteiro e armazene em duas variáveis. Em seguida, troque o valor das variáveis e exiba na tela
Trocando de valores de duas variáveis

6. Faça um script em PHP que leia três números e mostre-os em ordem decrescente.

7. Faça uma página Web que pergunte em que turno você estuda. Peça para digitar M-matutino ou V-Vespertino ou N- Noturno. Imprima a mensagem "Bom Dia!", "Boa Tarde!" ou "Boa Noite!" ou "Valor Inválido!", conforme o caso.

8. As Organizações Tabajara resolveram dar um aumento de salário aos seus colaboradores e lhe contrataram para desenvolver o script que calculará os reajustes.

Faça um script que recebe o salário de um colaborador e o reajuste segundo o seguinte critério, baseado no salário atual:

    salários até R$ 280,00 (incluindo) : aumento de 20%
    salários entre R$ 280,00 e R$ 700,00 : aumento de 15%
    salários entre R$ 700,00 e R$ 1500,00 : aumento de 10%
    salários de R$ 1500,00 em diante : aumento de 5% Após o aumento ser realizado, informe na tela:
    o salário antes do reajuste;
    o percentual de aumento aplicado;
    o valor do aumento;
    o novo salário, após o aumento.


9. Faça um script em PHP para o cálculo de uma folha de pagamento, sabendo que os descontos são do Imposto de Renda, que depende do salário bruto (conforme tabela abaixo) e 3% para o Sindicato e que o FGTS corresponde a 11% do Salário Bruto, mas não é descontado (é a empresa que deposita). O Salário Líquido corresponde ao Salário Bruto menos os descontos. O script deverá pedir ao usuário o valor da sua hora e a quantidade de horas trabalhadas no mês.

    Desconto do IR:
    Salário Bruto até 900 (inclusive) - isento
    Salário Bruto até 1500 (inclusive) - desconto de 5%
    Salário Bruto até 2500 (inclusive) - desconto de 10%
    Salário Bruto acima de 2500 - desconto de 20% Imprima na tela as informações, dispostas conforme o exemplo abaixo. No exemplo o valor da hora é 5 e a quantidade de hora é 220.

    Salário Bruto: (5 * 220)        : R$ 1100,00
    (-) IR (5%)                                : R$   55,00
    (-) INSS ( 10%)                       : R$  110,00
    FGTS (11%)                            : R$  121,00
    Total de descontos                : R$  165,00
    Salário Liquido                       : R$  935,00


10. Faça uma página Web que leia um número e exiba o dia correspondente da semana. (1-Domingo, 2- Segunda, etc.), se digitar outro valor deve aparecer valor inválido.


11.Faça um script em PHP que lê as duas notas parciais obtidas por um aluno numa disciplina ao longo de um semestre, e calcule a sua média. A atribuição de conceitos obedece à tabela abaixo:

      Média de Aproveitamento  Conceito
      Entre 9.0 e 10.0                      A
      Entre 7.5 e 9.0                        B
      Entre 6.0 e 7.5                        C
      Entre 4.0 e 6.0                        D
      Entre 4.0 e zero                      E
    O algoritmo deve mostrar na tela as notas, a média, o conceito correspondente e a mensagem “APROVADO” se o conceito for A, B ou C ou “REPROVADO” se o conceito for D ou E.

12. Faça uma página Web que peça os 3 lados de um triângulo. O script deverá informar se os valores podem ser um triângulo. Indique, caso os lados formem um triângulo, se o mesmo é: equilátero, isósceles ou escaleno.

    Dicas:
    Três lados formam um triângulo quando a soma de quaisquer dois lados for maior que o terceiro;
    Triângulo Equilátero: três lados iguais;
    Triângulo Isósceles: quaisquer dois lados iguais;
    Triângulo Escaleno: três lados diferentes;
Triângulos em PHP

13. Faça um site que calcule as raízes de uma equação do segundo grau, na forma ax² + bx + c. O script deverá pedir os valores de a, b e c e fazer as consistências e informando as raízes, sejam elas reais ou imaginárias.
PS: Para achar a raiz quadrada da variável x, faça: sqrt(x)
Equação do 2° Grau em PHP

14. Faça um script em PHP que peça um número correspondente a um determinado ano e em seguida informe se este ano é ou não bissexto.
Ano bissexto em PHP

15. Faça um site que peça uma data no formato dd/mm/aaaa e determine se a mesma é uma data válida.

16. Faça um site que peça um número inteiro e determine se ele é par ou ímpar. Dica: utilize o operador módulo (resto da divisão): %. Depois peça um número e um múltiplo, e responda se o número digitado é múltiplo do segundo valor digitado.
Par, ímpar e múltiplos

17. Faça um site que leia um número inteiro menor que 1000 e imprima a quantidade de centenas, dezenas e unidades do mesmo.
Observando os termos no plural a colocação do "e", da vírgula entre outros. Exemplo:

326 = 3 centenas, 2 dezenas e 6 unidades
12 = 1 dezena e 2 unidades Testar com: 326, 300, 100, 320, 310,305, 301, 101, 311, 111, 25, 20, 10, 21, 11, 1, 7 e 16


18. Faça um script em PHP para um caixa eletrônico. O script deverá perguntar ao usuário a valor do saque e depois informar quantas notas de cada valor serão fornecidas. As notas disponíveis serão as de 1, 5, 10, 50 e 100 reais. O valor mínimo é de 10 reais e o máximo de 600 reais. O script não deve se preocupar com a quantidade de notas existentes na máquina.

    Exemplo 1: Para sacar a quantia de 256 reais, o script fornece duas notas de 100, uma nota de 50, uma nota de 5 e uma nota de 1;
    Exemplo 2: Para sacar a quantia de 399 reais, o script fornece três notas de 100, uma nota de 50, quatro notas de 10, uma nota de 5 e quatro notas de 1.

19.Faça um site que peça um número e informe se o número é inteiro ou decimal. Dica: utilize uma função de arredondamento.

20. Faça um site que leia 2 números e em seguida pergunte ao usuário qual operação ele deseja realizar. O resultado da operação deve ser acompanhado de uma frase que diga se o número é:

    par ou ímpar;
    positivo ou negativo;
    inteiro ou decimal.


21. Faça um script em PHP que faça 5 perguntas para uma pessoa sobre um crime. As perguntas são:
    "Telefonou para a vítima?"
    "Esteve no local do crime?"
    "Mora perto da vítima?"
    "Devia para a vítima?"
    "Já trabalhou com a vítima?" O programa deve no final emitir uma classificação sobre a participação da pessoa no crime. Se a pessoa responder positivamente a 2 questões ela deve ser classificada como "Suspeita", entre 3 e 4 como "Cúmplice" e 5 como "Assassino". Caso contrário, ele será classificado como "Inocente".


22. Um posto está vendendo combustíveis com a seguinte tabela de descontos:
    Álcool: até 20 litros, desconto de 3% por litro
    acima de 20 litros, desconto de 5% por litro

    Gasolina:
    até 20 litros, desconto de 4% por litro
    acima de 20 litros, desconto de 6% por litro Escreva um algoritmo que leia o número de litros vendidos, o tipo de combustível (codificado da seguinte forma: A-álcool, G-gasolina), calcule e imprima o valor a ser pago pelo cliente sabendo-se que o preço do litro da gasolina é R$ 2,50 o preço do litro do álcool é R$ 1,90.


23. Uma fruteira está vendendo frutas com a seguinte tabela de preços:
                          Até 5 Kg                 Acima de 5 Kg
    Morango         R$ 2,50 por Kg          R$ 2,20 por Kg
    Maçã              R$ 1,80 por Kg          R$ 1,50 por Kg
    Se o cliente comprar mais de 8 Kg em frutas ou o valor total da compra ultrapassar R$ 25,00, receberá ainda um desconto de 10% sobre este total. Escreva um algoritmo para ler a quantidade (em Kg) de morangos e a quantidade (em Kg) de maças adquiridas e escreva o valor a ser pago pelo cliente.


24. O Hipermercado Tabajara está com uma promoção de carnes que é imperdível. Confira:
                          Até 5 Kg               Acima de 5 Kg
    File Duplo      R$ 4,90 por Kg          R$ 5,80 por Kg
    Alcatra           R$ 5,90 por Kg          R$ 6,80 por Kg
    Picanha          R$ 6,90 por Kg          R$ 7,80 por Kg
    Para atender a todos os clientes, cada cliente poderá levar apenas um dos tipos de carne da promoção, porém não há limites para a quantidade de carne por cliente. Se compra for feita no cartão Tabajara o cliente receberá ainda um desconto de 5% sobre o total a compra. Escreva um script que peça o tipo e a quantidade de carne comprada pelo usuário e gere um cupom fiscal, contendo as informações da compra: tipo e quantidade de carne, preço total, tipo de pagamento, valor do desconto e valor a pagar.

Operador Ternário em 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 nosso curso de PHP, vamos aprender o que é, para que serve e como usar o operador ternário ?:

Apostila completa de PHP

O Operador Ternário - ?:
Em um tutorial passado mencionamos que programador é bicho preguiçoso.
Mas não no sentido pejorativo.

No sentido de buscar sempre a solução mais simples, fácil, rápida e direta.
E acredite, acharam que:
if (condição)
   código;
else
   código;

Era escrever demais, então criaram o operador ternário ?:
Cuja sintaxe é:

teste_condicional ? valor_se_TRUE : valor_se_FALSE;

Ou seja, fazemos um teste condicional, com uma expressão ou valor.
Se ele for verdadeiro, retorna o valor valor_se_TRUE
Se for falso, retorna o valor valor_se_FALSE

Exemplo de Operador Ternário ?: em PHP

Crie um script PHP que pede a idade de um usuário.
Se for menor de 18, diga que ele ainda não pode dirigir. Se for maior ou igual, que já pode dirigir.
Use operador ternário apenas.

Nosso código fica:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Idade:  <input type="number" name="age" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $idade = $_GET['age'];
  echo ($idade<18) ? "Não pode dirigir" : "Já pode dirigir";
 ?>
 </body>
</html>
Bem mais curto, não?

Exemplo de Operador Ternário ?: em PHP

Crie um script em PHP que pergunte a média final do aluno.
Se for menor que 7, avise que ele foi reprovado. Igual ou acima, ele passou direto.

Veja como fica nosso script HTML + PHP:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Idade:  <input type="number" name="age" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $idade = $_GET['age'];
  echo ($idade<18) ? "Não pode dirigir" : "Já pode dirigir";
 ?>
 </body>
</html>

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.

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

A instrução ELSEIF em 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 te apresentar a instrução ELSEIF, e veremos o que é, para que serve e onde devemos usar ela em desenvolvimento web.

A Instrução ELSEIF em PHP

Programadores, por natureza, são bichos preguiçosos.

E não, isso não é uma crítica. Bill Gates disse que adora gente preguiçosa, pois eles sempre vão procurar a maneira mais rápida, simples e óbvia de resolver as coisas. E isso é verdade.

No decorrer de seus estudos e trabalhos como desenvolvedor web com PHP, você vai deparar gente fazendo coisas com milhares de linhas de código...enquanto outros vão resolver com algumas dezenas. Claro que, quase sempre, quanto menos melhor.

Falando em preguiça, vamos te apresentar a instrução ELSEIF, que serve para substituir os:
...
else
    if
    ...
    else
        if
        ...
Por
...
elseif
    ...
elseif
        ....
else
        ....

Ou seja, apenas substituímos um bloco de:
ELSE
      IF

Por: ELSEIF

Isso evita que nosso código fique cada vez maior e mais deslocado para a direita.

Exemplo de uso de ELSEIF
Vamos pegar o tutorial anterior, sobre IF e ELSE aninhados.
O último código que fizemos nele foi:
 <?php 
  $idade = $_GET['age'];
  
  if($idade < 16)
   echo "Você ainda não pode votar.";
  else
   if($idade < 18)
    echo "Seu voto é facultativo";
   else
    if($idade<65)
     echo "Seu voto é obrigatório";
    else
     echo "Seu voto é facultativo";
  
 ?>
Veja como fica se substituirmos por ELSEIF
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
  <form action="home.php" method="get">
   Sua idade:  <input type="number" name="age" /><br />
   <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $idade = $_GET['age'];
  
  if($idade < 16)
   echo "Você ainda não pode votar.";
  elseif($idade < 18)
   echo "Seu voto é facultativo";
  elseif($idade<65)
   echo "Seu voto é obrigatório";
  else
   echo "Seu voto é facultativo";
 ?>
 </body>
</html>
Note que deixamos os IF, ELSEIF e ELSE todos alinhados, bem mais bonitinho e organizado, não acha?

Exemplo de uso de ELSEIF
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.

Primeiro, faça sem uso do ELSEIF, depois com o uso do ELSEIF.

Sem usar o ELSEIF:
<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'];
  
  if($time == 'Corinthians')
   echo "Vai Timão!";
  else
   if($time == 'Palmeiras')
    echo "Não tem mundial";
   else
    if($time == 'Flamengo')
     echo "Flamííídia";
    else
     if($time == 'São Paulo')
      echo "Bambiiis";
     else
      if($time == 'Athlético')
       echo "Hum, afléético";
      else
       echo "Time pequeno não conheço";
 ?>
 </body>
</html>
Notem como vai deslocando pra direita...e vai crescendo...fica horrível!
Cara dos outros programadores quando forem dar manutenção ou alterar algo em código assim:
Tutorial de PHP completo

Pessoal, o brasileirão série A tem 20 times. E a série B também.
Imagina você tendo que criar código para 40 times?

Usamos pra 5 e já ficou essa coisa horrenda.
Mas calma, vamos te ensinar o jeito certo de fazer as coisas.

Agora o código com ELSEIF:
<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'];
  
  if($time == 'Corinthians')
   echo "Vai Timão!";
  elseif($time == 'Palmeiras')
   echo "Não tem mundial";
  elseif($time == 'Flamengo')
   echo "Flamííídia";
  elseif($time == 'São Paulo')
   echo "Bambiiis";
  elseif($time == 'Athlético')
   echo "Hum, afléético";
  else
   echo "Time pequeno não conheço";
 ?>
 </body>
</html>
Agora sim! Digno de um excelente desenvolvedor web, organizado, que estudou pelo Curso PHP Progressivo.
Tutorial completo online grátis de PHP

Veja também

O melhor PC para programar

O melhor celular para programar