Imagine que queremos apresentar os números de 1 a 10 numa página.
Poderíamos escrever:
Funciona.
Mas e se quisermos apresentar os números de 1 a 1000?
Escrever mil instruções echo não faria qualquer sentido.
Na programação existem estruturas que permitem executar automaticamente um conjunto de instruções várias vezes. Chamamos-lhes estruturas de repetição ou ciclos.
Nesta aula vamos conhecer três das principais estruturas de repetição do PHP:
e perceber quando devemos utilizar cada uma.
1. O que é uma estrutura de repetição?
Uma estrutura de repetição permite executar o mesmo bloco de código várias vezes.
Podemos imaginar:
Cada passagem pelo ciclo é normalmente designada por iteração.
Se um ciclo executar cinco vezes, dizemos que ocorreram cinco iterações.
2. O contador
Muitos ciclos precisam de uma variável que permita controlar quantas vezes o código é executado.
Por exemplo:
Depois podemos aumentar o seu valor:
Como vimos anteriormente, esta linha linha é equivalente a:
Assim podemos ter:
Esta variável será muito utilizada nos ciclos.
3. O ciclo for
O for é especialmente útil quando sabemos quantas vezes queremos repetir uma operação.
A sua estrutura é:
Um exemplo:
Resultado:
Apesar de inicialmente parecer complicada, a estrutura do for tem uma lógica bastante simples.
4. Compreender o for
Observe:
Temos três partes:
Inicialização
O contador começa em 1.
Condição
O ciclo continua enquanto esta condição for verdadeira.
Atualização
Depois de cada repetição, o contador aumenta uma unidade.
5. Execução passo a passo
Vamos acompanhar:
Primeira iteração
Segunda iteração
O processo continua:
Depois:
O ciclo termina.
6. Representação do ciclo for
Podemos representar o funcionamento assim:
Existe uma ideia fundamental:
O ciclo continua enquanto a condição for verdadeira.
7. Contar de forma crescente
Podemos utilizar:
Resultado:
É importante observar sempre o valor inicial e a condição.
8. Contagem decrescente
Também podemos diminuir o contador:
Resultado:
Neste caso:
9. Saltar valores
Não precisamos de aumentar sempre uma unidade.
Por exemplo:
Resultado:
Aqui estamos a aumentar de 2 em 2 através de:
10. Exemplo - Tabuada
Os ciclos são excelentes para problemas como uma tabuada.
Resultado:
Repare que não escrevemos dez cálculos diferentes.
Escrevemos um cálculo que foi executado dez vezes.
Se alterarmos:
obtemos automaticamente a tabuada do 8.
11. Gerar HTML através de um ciclo
Os ciclos tornam-se particularmente interessantes em PHP quando começamos a utilizá-los para gerar HTML.
Por exemplo:
O PHP irá produzir:
Isto aproxima-nos bastante daquilo que faremos mais tarde com uma base de dados.
Em vez de repetirmos manualmente:
o PHP poderá repetir automaticamente a estrutura para cada produto existente no MySQL.
12. O ciclo while
Outra estrutura de repetição muito utilizada é o while
A sua estrutura é:
Podemos traduzir while como:
enquanto
Ou seja:
Enquanto determinada condição for verdadeira, executa estas instruções.
13. Primeiro exemplo com while
Vamos apresentar novamente os números de 1 a 5:
Resultado:
Observe que agora as três partes estão separadas.
Primeiro:
Depois:
E dentro do ciclo:
14. Como funciona o while?
Temos:
Antes de cada repetição, o PHP verifica a condição.
Se for:
true
executa o bloco.
Se for:
false
termina o ciclo.
15. for ou while?
Os dois conseguem resolver muitos dos mesmos problemas.
Por exemplo:
e:
produzem resultados semelhantes.
Mas existe uma diferença prática.
Utilizamos normalmente for
quando sabemos antecipadamente o número de repetições.
Por exemplo:
Repetir 10 vezes.
Apresentar os números de 1 a 100.
Criar a tabuada de 1 a 10.
Utilizamos normalmente while
quando a repetição depende principalmente de uma condição e não sabemos necessariamente à partida quantas iterações serão necessárias.
Por exemplo:
Enquanto existir stock...
Enquanto o valor for inferior ao limite...
Enquanto ainda existirem dados para processar...
16. Cuidado com os ciclos infinitos
Observe:
Temos um problema.
$i começa em 1 e nunca é alterado.
Logo:
1 <= 5 → true
sempre.
O ciclo nunca termina.
Chamamos a isto um ciclo infinito.
O correto seria:
Agora $i aproxima-se progressivamente do momento em que a condição passa a ser falsa.
Sempre que criarmos um ciclo devemos conseguir responder:
O que vai fazer esta condição deixar de ser verdadeira?
17. O ciclo do...while
Existe ainda outra estrutura: do..while
A estrutura é:
Por exemplo:
Resultado:
À primeira vista parece muito semelhante ao while.
Mas existe uma diferença importante.
18. while vs. do...while
No while, a condição é verificada antes de executar o código.