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

Mostrando postagens com marcador Laços. Mostrar todas as postagens
Mostrando postagens com marcador Laços. Mostrar todas as postagens

O Loop FOREACH - Laço de arrays

Neste tutorial de nossa apostila de PHP, vamos aprender o que é e como usar o FOREACH, laço especialmente criado para se usar com arrays.

Obrigatório: Baixe a apostila PHP Progressivo

O Laço foreach as ... para arrays numéricos

Como se já não bastasse o número de laços (while, do while e for) existentes na linguagem, os criadores do PHP desenvolveram um especialmente para se usar com arrays, o foreach as.

Vamos pegar o array:
$carros = array('gol', 'celta', 'fox', 'corolla', 'civic');

Para exibir esses carros usando foreach, fazemos:
 <?php
  $carros = array('gol', 'celta', 'fox', 'corolla', 'civic');
  
  foreach($carros as $car)
   echo "$car <br />";
 ?>
O que ocorre é o seguinte...fazemos com que o array $car assuma o valor de cada elemento do array maior $carros.

Assim, o laço foreach percorre todos os elementos do array $carros, onde podemos trabalhar da maneira que quisermos com cada item.

O Loop foreach as ... para arrays associativos

Embora não sejam estruturas enumeradas e logicamente organizadas, é possível usar o laço foreach com arrays associativos também.

Vamos definir um array de chaves e valores da seguinte forma:
$carros['popular'] = 'celta';
$carros['sedan'] = 'corolla';
$carros['premium'] = 'bmw';
$carros['suv'] = 'hr-v';

Para exibir da chave e cada valor, com foreach, um por linha, fazemos:
 <?php
  $carros['popular'] = 'celta';
  $carros['sedan'] = 'corolla';
  $carros['premium'] = 'bmw';
  $carros['suv'] = 'hr-v';
  foreach($carros as $chave => $valor)
   echo "$chave : $valor <br />";
 ?>
A variável $chave vai pegar o valor de cada key do array $carros e a variável $valor o value de cada elemento correspondente, assim podemos acessar e alterar esses elementos da maneira que quisermos.

Note que é possível percorrer arrays gigantescos, medonhos e ir fazendo alterações, copiando, ou o que for, de uma maneira muito simples e totalmente automatizada com o laço foreach as...que inglês significa "para cada ... como..."

Ou seja, "para cada elemento do array, trate como"...e o foreach vai sozinho pegando um por um, todos os elementos do array.

Fatorial com Laços em PHP

Neste tutorial, vamos aprender como calcular o fatorial de um número usando apenas laços.

Fatorial de um Número

Chamamos fatorial de um número n, representado por n!, o valor:
n! = 1 x 2 x 3 x ...(n-1) x n

Ou seja:
2! = 2 x 1 = 2
3! = 3 x 2 x 1 = 6
4! = 4 x 3 x 2 x 1 = 24
5! = 5 x 4 x 3 x 2 x 1 = 120
...

Ou seja, se o usuário insere um valor n, basta multiplicarmos 1 por 2, por 3, por 4....até chegar em n.
O fatorial é esse produto.

Script em PHP: Cálculo fatorial

Vamos armazenar em $n o número digitado pelo usuário.

O fatorial, vamos armazenar na variável $fatorial, que inicialmente é 1.
Depois, vamos fazer uma variável de controle, a $count, inicie em 1 e vá até $n, incrementando-se unitariamente.

Veja como fazer usando o laço WHILE:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Fatorial de: <input type="number" name="number" /><br />
  <input type="submit" name="submit" value="Calcular" />
 </form> 
 <?php 
  $n=$_GET['number'];
  $fatorial=1;
  $count=1;
  
  while($count<=$n){
   $fatorial *= $count;
   $count++;
  } 
  echo $fatorial;
 ?>
 </body>
</html>
Veja como fazer usando o laço FOR:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Fatorial de: <input type="number" name="number" /><br />
  <input type="submit" name="submit" value="Calcular" />
 </form> 
 <?php 
  $n=$_GET['number'];
  $fatorial=1;
  
  for($count=1; $count<=$n ; $count++)
   $fatorial *= $count;
   
  echo $fatorial;
 ?>
 </body>
</html>
Consegue resolver usando DO WHILE ?

Série de Fibonacci em PHP, com LAÇOS

Neste tutorial, vamos aprender como gerar a série de Fibonacci, usando apenas laços, em PHP.

Série de Fibonacci

A série de Fibonacci é aquela composta pelos números 0 e 1, inicialmente.

A partir daí, cada termo é a soma dos dois anteriores.
Vamos formar a série:

Termo 1 = 0
Termo 2 = 1
Termo 3 = 1 + 0 = 1
Termo 4 = 1 + 1 = 2
Termo 5 = 2 + 1 = 3
Termo 6 = 3 + 2 = 5
...

Ela é infinita e possui uma série de funções interessantes, além de aparições curiosas na natureza.
Vale a leitura:
https://pt.wikipedia.org/wiki/Sequ%C3%AAncia_de_Fibonacci

Como Fazer a Série de Fibonacci com Laços

Inicialmente, exibimos os termos 0 e 1. Ou seja, o usuário tem que inserir um número maior que 2, para expressar o número de termos que deseja ver.

Vamos usar três variáveis:
$atual - exibe o número atual, da série
$ultimo - último número da série
$penultimo - penúltimo número da série

Inicialmente:
$ultimo=1;
$penultimo=0;

Assim, o próximo termo da sequência será sempre:
$atual = $ultimo + $penultimo;
Após isso, exibimos o $ultimo com um echo.

Agora, temos que atualizar o valor das variáveis, fazer elas darem um pulo pra frente.
O novo valor de $penultimo será $ultimo, e o novo valor de $ultimo vai ser $atual (esse é o passo mais importante para se entender, se não entender tente novamente, até conseguir).

Nossa variável de controle vai de 1 até $n-2 (onde $n é o número de termos que o usuário deseja ver, da série), subtraímos dois pois já exibimos os dois primeiros valores:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Exibir até(maior que 2): <input type="number" name="number" /><br />
  <input type="submit" name="submit" value="Calcular" />
 </form> 
 <?php 
  $n=$_GET['number'];
  $ultimo=1;
  $penultimo=0;
    
  echo "0<br />1<br />";
  for($count=1 ; $count<=$n-2 ; $count++){
   $atual = $ultimo + $penultimo;
   echo $atual."<br />";
   
   $penultimo = $ultimo;
   $ultimo = $atual;
  } 
 ?>
 </body>
</html>

Exercício: Populações de Duas Cidades

Vamos resolver o exercício 05, de nossa lista de exercícios de laços em PHP:

04. Supondo que a população de um país A seja da ordem de 80000 habitantes com uma taxa anual de crescimento de 3% e que a população de B seja 200000 habitantes com uma taxa de crescimento de 1.5%. Faça um programa que calcule e escreva o número de anos necessários para que a população do país A ultrapasse ou iguale a população do país B, mantidas as taxas de crescimento.

05. Altere o programa anterior permitindo ao usuário informar as populações e as taxas de crescimento iniciais. Valide a entrada e permita repetir a operação. 

Estudar pela Apostila de PHP

Código comentado

Seja $A o valor da população da cidade A e $B o da B.
Seja $tA a taxa de crescimento da população da cidade A e $tB o da B.

Primeira coisa que temos que notar é que o usuário vai inserir a taxa em porcentagem, então precisamos dividir por 100 pra ter a taxa correta.

Após o primeiro ano, cada população vai ser:
$A = $A * (1 + $tA);
$B = $B * (1 + $tB);

Isso vai ocorrer enquanto o tamanho de $A seja menor a $B.
Quando for igual ou superior, o laço DO WHILE vai parar, e exibimos o valor da variável de controle, que está contando os anos:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  População da cidade A: <input type="number" name="A" /><br />
  População da cidade B: <input type="number" name="B" /><br />
  Taxa de crescimento da cidade A (em %): <input type="text" name="tA" /><br />
  Taxa de crescimento da cidade B (em %): <input type="text" name="tB" /><br />
  <input type="submit" name="submit" value="Inserir" />
 </form> 
 <?php 
  $A=$_GET['A'];
  $B=$_GET['B'];
  $tA=$_GET['tA'];
  $tB=$_GET['tB'];
  $count=1;
  
  $tA /= 100;
  $tB /= 100;
  
  do{
   $A *= (1+$tA);
   $B *= (1+$tB);
   
   echo "Após $count anos:<br />";
   echo "População de A: $A <br />";
   echo "População de B: $B <br />";
   
   $count++;
  }while($A<$B);
  
  echo "Em $count anos a população de A atinge a de B";
 ?>
 </body>
</html>
Fizemos com que a cada ano, fosse mostrado o número de habitantes da cidade A e da cidade B, para você ver como só vai ultrapassar no tempo certo.

Isso permite você verificar se a solução está correta.
Deixamos a validação se a entrada está correta ou não com você.

Dica: Cheque se a população é um número positivo de pessoas, e a população de A deve ser menor e ter taxa de crescimento maior, do contrário nunca alcançará B.

Lista de Exercícios de Laços em PHP

Hora de treinar, pessoal!

O que vai definir, no fim das contas, se você é um bom desenvolvedor web ou não, é o tanto de exercícios que você resolve ou tenta resolver.

Tente usando:
Laço WHILE
Laço DO WHILE
Laço FORComandos BREAK e CONTINUE

Mas tente muito, tente bastante mesmo. Só depois é que veja a solução.


Curso de PHP com certificado
Obter meu certificado!

Questões de Laços e Loopings em PHP

  1. Faça um programa que peça uma nota, entre zero e dez. Mostre uma mensagem caso o valor seja inválido e continue pedindo até que o usuário informe um valor válido.
  2. Faça um programa que leia um nome de usuário e a sua senha e não aceite a senha igual ao nome do usuário, mostrando uma mensagem de erro e voltando a pedir as informações.
    01 e 02 - Validando dados em PHP
  3. Faça um programa que leia e valide as seguintes informações:
    1. Nome: maior que 3 caracteres;
    2. Idade: entre 0 e 150;
    3. Salário: maior que zero;
    4. Sexo: 'f' ou 'm';
    5. Estado Civil: 's', 'c', 'v', 'd';
    Use a função strlen(string) para saber o tamanho de um texto (número de caracteres).

    1. Supondo que a população de um país A seja da ordem de 80000 habitantes com uma taxa anual de crescimento de 3% e que a população de B seja 200000 habitantes com uma taxa de crescimento de 1.5%. Faça um programa que calcule e escreva o número de anos necessários para que a população do país A ultrapasse ou iguale a população do país B, mantidas as taxas de crescimento.
    2. Altere o programa anterior permitindo ao usuário informar as populações e as taxas de crescimento iniciais. Valide a entrada e permita repetir a operação.
      04 e 05: População de duas cidades
    3. Faça um programa que imprima na tela os números de 1 a 20, um abaixo do outro. Depois modifique o programa para que ele mostre os números um ao lado do outro.
    4. Faça um programa que leia 5 números e informe o maior número.
    5. Faça um programa que leia 5 números e informe a soma e a média dos números.
      07 e 08: Descobre maior, soma e média
    6. Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50.
    7. Faça um programa que receba dois números inteiros e gere os números inteiros que estão no intervalo compreendido por eles.
    8. Altere o programa anterior para mostrar no final a soma dos números.
    9. Desenvolva um gerador de tabuada, capaz de gerar a tabuada de qualquer número inteiro entre 1 a 10. O usuário deve informar de qual numero ele deseja ver a tabuada. A saída deve ser conforme o exemplo abaixo:
      • Tabuada de 5:
        5 X 1 = 5
        5 X 2 = 10
        ...
        5 X 10 = 50
         
      Tabuada em PHP

      • Faça um programa que peça dois números, base e expoente, calcule e mostre o primeiro número elevado ao segundo número. Não utilize a função de potência da linguagem.
        Potenciação em PHP
      • Faça um programa que peça 10 números inteiros, calcule e mostre a quantidade de números pares e a quantidade de números ímpares.
      • A série de Fibonacci é formada pela sequência 0,1,1,2,3,5,8,13,21,34,55,... Faça um programa capaz de gerar a série até o n−ésimo termo.
        Fibonacci com laços
      • A série de Fibonacci é formada pela sequência 0,1,1,2,3,5,8,13,21,34,55,... Faça um programa que gere a série até que o valor seja maior que 500.
      • Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário. Ex.: 5!=5.4.3.2.1=120
        Fatorial com laços
      • Faça um programa que, dado um conjunto de N números, determine o menor valor, o maior valor e a soma dos valores.
      • Altere o programa anterior para que ele aceite apenas números entre 0 e 1000.
      • Altere o programa de cálculo do fatorial, permitindo ao usuário calcular o fatorial várias vezes e limitando o fatorial a números inteiros positivos e menores que 16.
      • Faça um programa que peça um número inteiro e determine se ele é ou não um número primo. Um número primo é aquele que é divisível somente por ele mesmo e por 1.
      • Altere o programa de cálculo dos números primos, informando, caso o número não seja primo, por quais número ele é divisível.
        21 e 22. Números primos em PHP
      • Faça um programa que mostre todos os primos entre 1 e N sendo N um número inteiro fornecido pelo usuário. O programa deverá mostrar também o número de divisões que ele executou para encontrar os números primos. Serão avaliados o funcionamento, o estilo e o número de testes (divisões) executados.
      • Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário. Ex.: 5!=5.4.3.2.1=120. A saída deve ser conforme o exemplo abaixo:
        • Fatorial de: 5
          5! =  5 . 4 . 3 . 2 . 1 = 120
      • O Departamento Estadual de Meteorologia lhe contratou para desenvolver um programa que leia as um conjunto indeterminado de temperaturas, e informe ao final a menor e a maior temperaturas informadas, bem como a média das temperaturas.
      • Os números primos possuem várias aplicações dentro da Computação, por exemplo na Criptografia. Um número primo é aquele que é divisível apenas por um e por ele mesmo. Faça um programa que peça um número inteiro e determine se ele é ou não um número primo.
      • Encontrar números primos é uma tarefa difícil. Faça um programa que gera uma lista dos números primos existentes entre 1 e um número inteiro informado pelo usuário.
      • Desenvolva um programa que faça a tabuada de um número qualquer inteiro que será digitado pelo usuário, mas a tabuada não deve necessariamente iniciar em 1 e terminar em 10, o valor inicial e final devem ser informados também pelo usuário, conforme exemplo abaixo:
        • Montar a tabuada de: 5
          Começar por: 4
          Terminar em: 7
          
          Vou montar a tabuada de 5 começando em 4 e terminando em 7:
          5 X 4 = 20
          5 X 5 = 25
          5 X 6 = 30
          5 X 7 = 35
          Obs: Você deve verificar se o usuário não digitou o final menor que o inicial.
      • Uma academia deseja fazer um senso entre seus clientes para descobrir o mais alto, o mais baixo, a mais gordo e o mais magro, para isto você deve fazer um programa que pergunte a cada um dos clientes da academia seu código, sua altura e seu peso. O final da digitação de dados deve ser dada quando o usuário digitar 0 (zero) no campo código. Ao encerrar o programa também deve ser informados os códigos e valores do clente mais alto, do mais baixo, do mais gordo e do mais magro, além da média das alturas e dos pesos dos clientes
      • Um funcionário de uma empresa recebe aumento salarial anualmente: Sabe-se que:
        1. Esse funcionário foi contratado em 1995, com salário inicial de R$ 1.000,00;
        2. Em 1996 recebeu aumento de 1,5% sobre seu salário inicial;
        3. A partir de 1997 (inclusive), os aumentos salariais sempre correspondem ao dobro do percentual do ano anterior. Faça um programa que determine o salário atual desse funcionário. Após concluir isto, altere o programa permitindo que o usuário digite o salário inicial do funcionário.
      • Faça um programa que leia dez conjuntos de dois valores, o primeiro representando o número do aluno e o segundo representando a sua altura em centímetros. Encontre o aluno mais alto e o mais baixo. Mostre o número do aluno mais alto e o número do aluno mais baixo, junto com suas alturas.
      • Foi feita uma estatística em cinco cidades brasileiras para coletar dados sobre acidentes de trânsito. Foram obtidos os seguintes dados:
        1. Código da cidade;
        2. Número de veículos de passeio (em 1999);
        3. Número de acidentes de trânsito com vítimas (em 1999). Deseja-se saber:
        4. Qual o maior e menor índice de acidentes de transito e a que cidade pertence;
        5. Qual a média de veículos nas cinco cidades juntas;
        6. Qual a média de acidentes de trânsito nas cidades com menos de 2.000 veículos de passeio.
      • Faça um programa que receba o valor de uma dívida e mostre uma tabela com os seguintes dados: valor da dívida, valor dos juros, quantidade de parcelas e valor da parcela.
        • Os juros e a quantidade de parcelas seguem a tabela abaixo:
          Quantidade de Parcelas  % de Juros sobre o valor inicial da dívida
          1       0
          3       10
          6       15
          9       20
          12      25
          Exemplo de saída do programa:
          Valor da Dívida Valor dos Juros Quantidade de Parcelas  Valor da Parcela
          R$ 1.000,00     0               1                       R$  1.000,00
          R$ 1.100,00     100             3                       R$    366,00
          R$ 1.150,00     150             6                       R$    191,67
      • Faça um programa que leia uma quantidade indeterminada de números positivos e conte quantos deles estão nos seguintes intervalos: [0-25], [26-50], [51-75] e [76-100]. A entrada de dados deverá terminar quando for lido um número negativo.
      • O cardápio de uma lanchonete é o seguinte:
        • Especificação   Código  Preço
          Cachorro Quente 100     R$ 1,20
          Bauru Simples   101     R$ 1,30
          Bauru com ovo   102     R$ 1,50
          Hambúrguer      103     R$ 1,20
          Cheeseburguer   104     R$ 1,30
          Refrigerante    105     R$ 1,00
          Faça um programa que leia o código dos itens pedidos e as quantidades desejadas. Calcule e mostre o valor a ser pago por item (preço * quantidade) e o total geral do pedido. Considere que o cliente deve informar quando o pedido deve ser encerrado.
      • Em uma eleição presidencial existem quatro candidatos. Os votos são informados por meio de código. Os códigos utilizados são:
        • 1 , 2, 3, 4  - Votos para os respectivos candidatos 
          (você deve montar a tabela ex: 1 - Jose/ 2- João/etc)
          5 - Voto Nulo
          6 - Voto em Branco
          Faça um programa que calcule e mostre:
        • O total de votos para cada candidato;
        • O total de votos nulos;
        • O total de votos em branco;
        • A percentagem de votos nulos sobre o total de votos;
        • A percentagem de votos em branco sobre o total de votos. Para finalizar o conjunto de votos tem-se o valor zero.
      • Desenvolver um programa para verificar a nota do aluno em uma prova com 10 questões, o programa deve perguntar ao aluno a resposta de cada questão e ao final comparar com o gabarito da prova e assim calcular o total de acertos e a nota (atribuir 1 ponto por resposta certa). Após cada aluno utilizar o sistema deve ser feita uma pergunta se outro aluno vai utilizar o sistema. Após todos os alunos terem respondido informar:
        1. Maior e Menor Acerto;
        2. Total de Alunos que utilizaram o sistema;
        3. A Média das Notas da Turma.
          Gabarito da Prova:
          
          01 - A
          02 - B
          03 - C
          04 - D
          05 - E
          06 - E
          07 - D
          08 - C
          09 - B
          10 - A
          Após concluir isto você poderia incrementar o programa permitindo que o professor digite o gabarito da prova antes dos alunos usarem o programa.
      • Em uma competição de salto em distância cada atleta tem direito a cinco saltos. No final da série de saltos de cada atleta, o melhor e o pior resultados são eliminados. O seu resultado fica sendo a média dos três valores restantes. Você deve fazer um programa que receba o nome e as cinco distâncias alcançadas pelo atleta em seus saltos e depois informe a média dos saltos conforme a descrição acima informada (retirar o melhor e o pior salto e depois calcular a média). Faça uso de uma lista para armazenar os saltos. Os saltos são informados na ordem da execução, portanto não são ordenados. O programa deve ser encerrado quando não for informado o nome do atleta. A saída do programa deve ser conforme o exemplo abaixo:
        Atleta: Rodrigo Curvêllo
        
        Primeiro Salto: 6.5 m
        Segundo Salto: 6.1 m
        Terceiro Salto: 6.2 m
        Quarto Salto: 5.4 m
        Quinto Salto: 5.3 m
        
        Melhor salto:  6.5 m
        Pior salto: 5.3 m
        Média dos demais saltos: 5.9 m
        
        Resultado final:
        Rodrigo Curvêllo: 5.9 m
      • Em uma competição de ginástica, cada atleta recebe votos de sete jurados. A melhor e a pior nota são eliminadas. A sua nota fica sendo a média dos votos restantes. Você deve fazer um programa que receba o nome do ginasta e as notas dos sete jurados alcançadas pelo atleta em sua apresentação e depois informe a sua média, conforme a descrição acima informada (retirar o melhor e o pior salto e depois calcular a média com as notas restantes). As notas não são informados ordenadas. Um exemplo de saída do programa deve ser conforme o exemplo abaixo:
        Atleta: Aparecido Parente
        Nota: 9.9
        Nota: 7.5
        Nota: 9.5
        Nota: 8.5
        Nota: 9.0
        Nota: 8.5
        Nota: 9.7
        
        Resultado final:
        Atleta: Aparecido Parente
        Melhor nota: 9.9
        Pior nota: 7.5
        Média: 9,04
      • Faça um programa que peça um numero inteiro positivo e em seguida mostre este numero invertido.
        • Exemplo:
            12376489
            => 98467321
      • Faça um programa que mostre os n termos da Série a seguir:
        •   S = 1/1 + 2/3 + 3/5 + 4/7 + 5/9 + ... + n/m. 
          Imprima no final a soma da série.
      • Sendo H= 1 + 1/2 + 1/3 + 1/4 + ... + 1/N, Faça um programa que calcule o valor de H com N termos.
        Código na apostila
      • Faça um programa que mostre os n termos da Série a seguir:
        •   S = 1/1 + 2/3 + 3/5 + 4/7 + 5/9 + ... + n/m. 
          Imprima no final a soma da série.
          Código na apostila

      Comandos BREAK e CONTINUE em Laços

      Neste tutorial de nosso curso de PHP, vamos te mostrar como usar os comandos BREAK e CONTINUEem laços e loopings em PHP.
      Comando CONTINUE em PHP


      Comando BREAK: Interrompendo laços

      Já estudamos o break quando estudamos o teste condicional SWITCH, e vimos que ele serve para um propósito bem simples: interromper o SWITCH.

      Ele também tem a mesma propriedade em laços como WHILE, DO WHILE e o FOR: quando o interpretador PHP encontra o comando BREAK, ele termina na hora, sumariamente, o laço que estiver sendo executado, sem dar tempo pra fazer mais nada.

      O script abaixo, é em um laço WHILE, do tipo looping infinito, pois ele executa pra sempre.
      O contador inicia em 1 e vai incrementando de um em um.

      Ele só vai parar quando entrar um número que é múltiplo de 12 e 21, ao mesmo tempo.
      Qual? Quando? Não sabemos, mas quando chegar lá, identificamos o número e damos um BREAK pra interromper o WHILE, veja:
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <form action= method="get">
        Tabuada do:  <input type="text" name="tab" /><br />
        <input type="submit" name="submit" value="Testar" />
       </form> 
       <?php 
        $count = 1;
        
        while(1){
         if($count%12==0 && $count%21==0){
          echo "$count";
          break;
         }
         $count++;
        }
       ?>
       </body>
      </html>
      Vamos supor que queiramos encontrar o primeiro múltiplo de 11 e 13, de 1 até 1 milhão, usando o laço FOR.

      Vamos usar o comando BREAK para parar o laço, para que não seja necessário contar até 1 milhão:
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <form action= method="get">
        Tabuada do:  <input type="text" name="tab" /><br />
        <input type="submit" name="submit" value="Testar" />
       </form> 
       <?php 
        for($count=1; $count<=1000000; $count++){
         if($count%11==0 && $count%13==0){
          echo "Parei no $count";
          break;
         }
        }
       ?>
       </body>
      </html>
      Note que quando o número for múltiplo de 11 e 13 ao mesmo tempo (não sei quando vai ser isso, o computador que calcule), o laço vai parar, exibindo tal número.

      O comando CONTINUE: Pulando iterações em PHP

      O comando break tem uma peculiaridade: ele interrompe o laço, acaba com ele.

      Porém, muitas vezes não queremos acabar com o laço, e sim com a ITERAÇÃO, o looping do momento, queremos pular para a próxima 'rodada' de código do laço.

      Para isso, usamos o comando CONTINUE.
      Quando o interpretador do PHP encontra o continue; no meio do caminho, ele encerra a iteração atual e pula pra próxima, inclusive executando a expressão de modificação.

      Lembra daquela brincadeira do Silvio Santos, onde você tinha que ir contando os números e nos múltiplos de 4 falar PIM, assim:
      1, 2, 3, PIM, 5, 6, 7, PIM, 9, 10, 11, PIM...

      Basta colocarmos pra imprimir de 1 até 100.
      Dentro do laço, colocamos um IF para verificar se é múltiplo de 4.

      Se for, imprimimos PIM e damos um continue, para o laço continuar no próximo número, veja como fica nosso código:
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <form action= method="get">
        Tabuada do:  <input type="text" name="tab" /><br />
        <input type="submit" name="submit" value="Testar" />
       </form> 
       <?php 
        for($count=1; $count<=100; $count++){
         if($count%4==0){
          echo "PIM <br />";
          continue;
         }
         echo "$count <br />";
        }
       ?>
       </body>
      </html>
      O PHP sempre iria ganhar esse desafio com o Silvio Santos...claro, com um programador que tivesse estudado pelo PHP Progressivo.

      Tabuada com laços WHILE, DO WHILE e o FOR

      Neste tutorial de PHP, vamos aprender como exibir qualquer tabuada que o usuário desejar, usando laços WHILE, DO WHILE ou o FOR.

      Apostila Completa em PDF para download

      Quando usar WHILE, DO WHILE ou FOR

      Aprendemos três laços, em PHP
      Laço WHILE
      Laço DO WHILE
      Laço FOR

      E vimos como usar cada um deles, com exemplos de código.
      Mas a maior dificuldade é em saber quando usar cada um: não existe melhor ou pior, use o que achar mais confortável.

      O WHILE é, de longe, o mais simples. Executa um código sempre que uma condição for verdadeira.
      Muito usado para loopings infinitos ocorrem indefinidamente. Se usa muito WHILE quando você NÃO sabe quando o laço vai terminar.

      Se você não sabe se seu teste condicional vai ser validade ou não e quiser sempre que ao menos uma iteração ocorra, use o laço DO WHILE. Ele executa primeiro o código, uma vez pelo menos, e só depois faz o teste condicional.

      O laço que mais iremos usar é, sem dúvidas, o FOR, pois é mais completo e poderoso.
      Nele, de cara, já inicializamos nossas variáveis, criamos a expressão condicional e a de mudança.
      Usamos ele quando sabemos quando começa e exatamente onde termina.

      Mas, essencialmente, são todos a mesma coisa.

      Tabuada com Laço WHILE

      O script abaixo pede um número ao usuário, e exibe a tabuada de tal número usando o laço WHILE:
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <form action="" method="get">
        Tabuada do:  <input type="text" name="tab" /><br />
        <input type="submit" name="submit" value="Testar" />
       </form> 
       <?php 
        $tabuada = $_GET['tab'];
        $count=1;
        
        while($count<=10){
         echo $tabuada." x ".$count." = ".($tabuada*$count)."<br />";
         $count++;
        }
       ?>
       </body>
      </html>

      Tabuada com Laço DO WHILE

      O script abaixo pede um número ao usuário, e exibe a tabuada de tal número usando o laço DO WHILE:
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <form action="" method="get">
        Tabuada do:  <input type="text" name="tab" /><br />
        <input type="submit" name="submit" value="Testar" />
       </form> 
       <?php 
        $tabuada = $_GET['tab'];
        $count=1;
        
        do{
         echo $tabuada." x ".$count." = ".($tabuada*$count)."<br />";
         $count++;
        }while($count<=10);
       ?>
       </body>
      </html>

      Tabuada com Laço FOR

      O script abaixo pede um número ao usuário, e exibe a tabuada de tal número usando o laço FOR:
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <form action="" method="get">
        Tabuada do:  <input type="text" name="tab" /><br />
        <input type="submit" name="submit" value="Testar" />
       </form> 
       <?php 
        $tabuada = $_GET['tab'];  
        for($count=1; $count<=10; $count++)
         echo $tabuada." x ".$count." = ".($tabuada*$count)."<br />";
       ?>
       </body>
      </html>

      Laço FOR em PHP: O looping controlado

      Neste tutorial de nossa apostila de PHP, vamos aprender a usar o laço mais famoso, o looping FOR, que é mais 'controlável', como veremos adiante.

      Fazer download da Apostila de PHP Completa

      Laço FOR: O que é e Como Usar

      Nos tutoriais sobre os laços WHILE e DO WHILE, fizemos duas coisas em comum:
      Inicializamos alguma variável
      Modificamos essa variável dentro do escopo do laço

      Essa variável é chamada de controle, e geralmente usamos a $count e é ela que vai no teste condicional. Isso é necessário para uma hora o looping terminar, algo tem que ser feito nessa variável, para ela ter um fim e chegar até onde desejamos.

      Ou seja, temos uma pré condição (inicilizar), um teste condicional e uma pós condição (geralmente incrementar, decrementar ou fazer alguma mudança do tipo na variável de controle).

      Pois bem, o laço FOR faz tudo isso de uma vez só, na declaração de uso do looping, facilitando e deixando nosso código muito mais simples e organizado.

      Veja como usar o laço FOR em PHP
      <?php 
       for( inicializa ; teste_condicional ; modifica){
        codigo;
        codigo;
       }
      ?>
      O laço for é o mais poderoso, mas também o mais complexo de usar, pois ele tem três expressões:

      • Primeira: expressão de inicialização, ocorre antes ao inicializar o FOR, só uma vez
      • Segunda: expressão condicional, teste para saber se o looping deve continuar a ocorrer ou não
      • Terceira: expressão de modificação, após cada iteração do laço, essa expressão é executada

      Separamos essas três expressões por ponto e vírgula ;
      Vamos ver alguns exemplos para aprendermos na prática como usar o laço FOR.

      Exemplo de uso de Laço FOR

      No script abaixo, vamos contar de 1 até 10 e exibir essa contagem em uma página HTML
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <?php 
        for($count=1 ; $count<=10 ; $count++)
         echo "$count <br />";
       ?>
       </body>
      </html>
      Note como ficou mais conciso. Tudo dentro de uma declaração do laço.

      Exemplo de uso de Laço FOR

      Agora vamos fazer o contrário, contar de 10 até 1:
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <?php 
        for($count=10 ; $count>=1 ; $count--)
         echo "$count <br />";
       ?>
       </body>
      </html>
      A única diferença é que inicializamos do 10 e decrementamos a variável de controle, para que possa se atingir o teste para este se tornar falso e encerrar o FOR. Bem mais simples, não?

      Exemplo de uso de Laço FOR

      O script abaixo vai usar duas variáveis, $i e $j, inicialmente 1 e incrementadas ao final de cada iteração.
      Vamos exibir o resultado da soma enquanto ele for menor que 10:
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <?php 
        for($i=1, $j=1 ; $i+$j<=10 ; $i++,$j++)
         echo "$i + $j = ".($i+$j)."<br />";
       ?>
       </body>
      </html>
      Veja que é possível inicializar e modificar várias variáveis ao mesmo tempo, basta separar por vírgulas.

      Exemplo de uso de Laço FOR

      Faça um script PHP que imprima a seguinte tabela, usando laço FOR:
      1     10
      2     9
      3     8
      4     7
      5     6
      6     5
      7     4
      8     3
      9     2
      10    1

      É bem simples resolver usando duas variáveis, uma inicializada em 1 e outra em 10.
      A cada iteração, a primeira é incrementada em 1 e a segunda decrementada em 2, veja:
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <?php 
        for($i=1, $j=10; $i<=10 ; $i++,$j--)
         echo $i.' '.$j.'<br />';
       ?>
       </body>
      </html>
      O teste que usamos foi a primeira ser menor ou igual a 10.
      Reescreva esse script, mas com o teste envolvendo a segunda variável apenas.

      Laço DO WHILE em PHP

      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>

      Laço WHILE em PHP

      Neste tutorial de nossa apostila de PHP, vamos aprender o que é, para que serve e como usar o laço WHILE em PHP.

      Laço WHILE - O que é, para que serve?

      Quando estudamos testes condicionais, vimos que os testes realizados eram executados apenas uma vez, e apenas uma coisa acontecia (ou IF ou ELSE).

      Porém, muitas vezes é necessário fazer esses testes várias e várias vezes.
      Por exemplo, um botão de uma página fica o tempo inteiro perguntando:
      'Fui clicado? Não, ok vou ficar quieto.'
      'Fui clicado? Ainda não, ok'
      'Fui clicado? Opa, agora sim, então devo chamar uma função do JavaScript'.

      Temos que ficar várias e várias vezes fazendo vários testes.
      E é aí que entra o laço WHILE.

      Ele nada mais é que um teste condicional que se repete várias e várias vezes.

      Laço WHILE - Como usar

      Vamos agora aprender a sintaxe do laço WHILE, em PHP.
      Ele é da seguinte maneira:

      <?php 
       while( teste_condicional){
        codigo
        codigo
       }
      ?>

      Quando o PHP chega no laço WHILE, ele vê o que tem dentro dele, entre parêntesis, e testa. Será alguma expressão ou algum valor.

      Enquanto aquele teste resultar em TRUE, ele vai executar o código entre chaves.
      Testa uma vez, se TRUE, executa. Testa de novo, se TRUE, executa de novo e assim vai.

      O laço WHILE só vai parar quando o teste resultar FALSE, ok?

      Exemplo de Laço WHILE - Looping infinito

      O exemplo mais simples e clássico de laço WHILE, é o Looping infinito.

      É aquele que a condição que será testada vai ser sempre TRUE.
      No exemplo abaixo, ela escreve "Curso PHP Progressivo" na tela...várias e várias vezes...infinitas, até travar seu navegado:

      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <?php 
        while(TRUE)
         echo "PHP Progressivo <br />";
       ?>
       </body>
      </html>

      Obtenha uma hospedagem, suba seu arquivo PHP com esse código e trolle um amigo mandando ele entrar no seu site.

      Note que, assim como IF e ELSE, se seu código tiver apenas uma linha de comando, não é obrigatório o uso de chaves.

      Exemplo de WHILE: Contando até 10

      O código abaixo pega uma variável, inicializa no 1, testa se é menor igual a 10.
      Se for, imprime o número. Depois, incrementa e roda tudo de novo.
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <?php 
        $count=1;
        while($count<=10){
         echo "$count <br />";
         $count++;
        }
       ?>
       </body>
      </html>
      Esse simples script imprime no HTML os números de 1 até 10.
      Teste com 100.
      Teste com 1000.
      Teste com 1 milhão, veja como o PHP é rápido e foda!

      Tire o $count++, o que acontece?
      Por que?

      Exemplo de WHILE: Contanto de 10 até 1

      Vamos fazer o contrário agora.

      Vamos começar de 10. Enquanto a variável for maior que 0, imprimir seu valor.
      Dentro do código, também temos que decrementar a variável, senão ela nunca atinge o FALSE no teste condicional:
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <?php 
        $count=10;
        while($count>0){
         echo "$count <br />";
         $count--;
        }
       ?>
       </body>
      </html>

      Exemplo de WHILE: Exibe o dobro

      Crie um script que exibe os números 1, 2, 3..., 100 e ao lado, o dobro de seu valor.

      Nossa variável de controle começa em 1 e vai até 100.
      Enquanto for menor ou igual a 100, vai imprimir seu valor junto com o dobro.

      Veja como fazer isso com laço WHILE:
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <?php 
        $count=1;
        while($count<=100){
         echo "$count : ".(2*$count)."<br />";
         $count++;
        }
       ?>
       </body>
      </html>

      Exemplo de WHILE: Pedindo a Senha

      Crie uma página que pede uma senha ao usuário e exiba "Se você não digitar a senha, seu navegador vai travar...".

      Enquanto ele digitar uma senha errada ou não digitar nada, ficar escrevendo "Senha errada, sistema vai travar" na tela. Quando ele digitar a senha correta (que deve ser 'rush2112'), exibir "Entrando no sistema".

      O teste condicional aqui é se o que for digitado pelo usuário é 'rush2112' ou não.
      Se for, ok para. Se não, vai ficar executando e executando o WHILE pra sempre...
      <html>
       <head>
        <title>Apostila PHP Progressivo</title>
       </head>
       <body>
       <form action="" method="get">
        Senha:  <input type="text" name="password" /><br />
        <input type="submit" name="submit" value="Testar" />
       </form> 
       <?php 
        $senha = $_GET['password'];
        echo "Se você não digitar a senha, seu navegador vai travar...<br />";
        while($senha != 'rush2112'){
         echo "Senha errada...Sistem vai travar<br />";
        }
        echo "Entrando no sistema...";
       ?>
       </body>
      </html>

      Veja também

      O melhor PC para programar

      O melhor celular para programar