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

Mostrando postagens com marcador Loopings. Mostrar todas as postagens
Mostrando postagens com marcador Loopings. Mostrar todas as postagens

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.

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