Aula 06 - Estruturas de Repetição - for - while - do...while.

article featured image

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.

No do...while, o código é executado antes de verificar a condição.

Isto significa que o do...while executa sempre o código pelo menos uma vez.

 

19. Demonstrar a diferença

Considere:

A condição inicial é:

Resultado:

Nada é apresentado.

Agora:

Resultado:

Executado

Apesar de:

o bloco foi executado uma vez antes de a condição ser verificada.

Esta é a principal diferença que os alunos devem guardar.

 

20. Condições dentro dos ciclos

Podemos combinar aquilo que aprendemos nas aulas anteriores.

Por exemplo, apresentar os números de 1 a 10 e identificar os pares:

Resultado:

Aqui estamos a combinar:

Este é um bom exemplo de como os conceitos das aulas anteriores começam a trabalhar em conjunto.

 

21. Acumular valores num ciclo

Os ciclos também podem ser utilizados para realizar cálculos sucessivos.

Imagine que queremos somar os números de 1 a 5.

Começamos:

Depois:

Vamos acompanhar:

No final:

apresenta:

15

A variável $soma funciona como um acumulador.

 

22. Contador e acumulador

É importante distinguir estes dois conceitos.

Contador

Normalmente aumenta ou diminui um valor de forma regular:

Exemplo:

Acumulador

Vai guardando resultados sucessivos:

Por exemplo:

Estes dois conceitos irão aparecer muitas vezes em programação.

 

23. Que ciclo escolher?

Podemos resumir:

EstruturaQuando utilizar
forQuando sabemos normalmente quantas repetições queremos realizar
whileQuando queremos repetir enquanto uma condição for verdadeira
do...whileQuando o código deve ser executado pelo menos uma vez

Não significa que apenas exista uma solução possível.

Muitas vezes conseguimos resolver o mesmo problema utilizando diferentes ciclos.

O importante é escolher a estrutura que torna a solução mais simples e fácil de compreender.

 

 

Post Anterior