Dando continuidade ao meu Curso de PHP, vamos falar a respeito das Estruturas de repetição (comandos FOR e While).
Repetir um bloco de comandos é algo muito corriqueiro na vida de um desenvolvedor. Por mais simples que seja um sistema ou um site que você virá a fazer, pode acreditar que você precisará usar uma dessas estruturas. Seja para listar produtos/clientes, realizar operações matemáticas ou mesmo enviar emails. Vamos ver alguns exemplos de uso.
Ex.: Escreva o número “1″ na tela.
<?
echo 1;
?>
Simples e Fácil. Agora escreva o número “1″ e o número “2″ na tela (um em cada linha).
<?
echo 1."<br/>";
echo 2."<br/>";
?>
Já começa a ficar estranho, não? Agora digamos que você precise escrever do número 1 ao número 10 na tela.
<?
echo 1."<br/>";
echo 2."<br/>";
echo 3."<br/>";
...
echo 9."<br/>";
echo 10."<br/>";
?>
Perceba que o código foi abreviado após o número “3″, caso contrário, esse script já ficaria muito longo para ser escrito aqui. Agora imagine se você precisasse escrever até o número 300. Faria 300 linhas iguais, mudando apenas o número? Com certeza funcionaria, mas seu código ficaria muito poluido e grande. Outro problema: E como você faria se o número total de vezes fosse dinâmico? viesse de uma consulta ao banco de dados por exemplo, você não teria como saber quantos “echos” deveria escrever. Então vamos reescrever esse programa utilizando a nossa primeira função da estrutura de repetição, o laço “for”. Veja a diferença:
<?
for($contador=1;$contador<=300;$contador++){
echo $contador."<br/>";
}
?>
Essas três linhas de códigos vão surtir exatamente o mesmo efeito do que se você tivesse escrito 300 “echo” no seu script. Agora entenda como executar esse novo comando. Todo a regra dele está apenas nessa linha:
for($contador=1;$contador<=300;$contador++){
Para entendermos o seu funcionamento, experiemnte visualiza-la em 4 partes diferentes:
* for() -> Nome de um dos método nativo do PHP(e de quase todas as outras linguagens de programação) para controle de repetição. (http://www.php.net/for)
* $contador=1 -> Aqui você define uma variável de controle, neste caso “$contador”, e atribuí o seu valor inicial em “1″;
* $contador<=300 -> Aqui você define uma condição de continuidade para o laço, isto é, o for irá executar o bloco de comando dentro dele, enquanto
essa condição for verdadeira. Neste caso, o laço irá executar enquanto $contador for menor ou igual a 300.
*$contador++ -> Essa é a ultima expressão do for. Aqui você define o que deve acontecer com a variável de controle após cada iteração. Nesse exemplo,
após executar o echo, ele irá incrementar o $contador em 1.
Assim, a cada volta desse loop, a variável $contador irá somar +1 em seu valor até que o total seja maior que 300, que é quando o for termina e o interpretador passa a executar o próximo bloco de comando (caso exista).
O próximo comando, é o while (http://www.php.net/while). Ele também é um comando de repetição, mas é um pouco mais simples que o “for”. Basicamente um while funciona da seguinte maneira:
<?php
while (expressao){
Comando 1;
Comando 2;
}
?>
A expressão é uma comparação. O laço será executado enquanto essa comparação for verdadeira. Se você necessitar de um contador dentro do seu loop, terá que faze-lo de forma manual. Ex.
<?php
$i = 0;
while ($i<10){
echo $i."<br/>";
$i++;
}
?>
*Nota: Lembre-se. O while continuará sua execução, até que a expressão informada se torne falsa. Então, Tome muito cuidado com o tipo de comparação que você irá realizar para não acabar criando o famoso “loop infinito“.
Uma “variação” do comando while é o “do-while”, a diferença entre eles está no processo de verificação da expressão. No while, primeiro o PHP valida a expressão, se for verdadeira, ele executa os comando, até que ela se torne falsa. Enquanto o “do-while” executa o camando e só depois valida a expressão(se ela for verdadeira, ele continua executando). Ex:
<?php
$i = 3;
do {
echo $i;
$i--;
} while ($i > 0);
?>
É isso, agora muito treino. Que tal fazer alguns exercícios?
- Escreva a lista de números começando de 300 e indo até 0(zero)
- Escreva uma lista de números PARES, de 0 a 300
Abraços