Aula 08 – Estrutura de repetição
Objetivo
Trabalhamos até agora com estruturas que permitiram a execução de nossos códigos linha a linha e apenas uma vez. A execução de um conjunto de linhas poderia ser controlada única e exclusivamente através da estrutura condicional (if). Para que se executasse um conjunto de linhas diversas vezes, a cada frame, utilizamos o bloco draw.
Entretanto, muitas vezes será necessário executar um conjunto de linhas dentro de um mesmo frame. Para isto, podemos utilizar a estrutura de repetição.
Estrutura de Repetição
É a estrutura de controle do fluxo lógico que permite executar diversas vezes um mesmo trecho do algoritmo até que uma certa condição seja satisfeita. Existem diversos tipos de estruturas de repetição, o que as diferencia é o local no qual a condição é tratada. Assim, existem os tipos de estrutura de repetição:
- Estrutura de Repetição com teste no início;
- Estrutura de Repetição com teste no final;
- Estrutura de Repetição com variável de controle;
- Estrutura de Repetição com teste no meio.
Estrutura de Repetição com teste no início
Nessa estrutura, um fluxo de execução será repetido enquanto uma certa condição esteja sendo satisfeita.
while (condição)
comando a ser executado
Caso haja mais de um comando a ser executado, eles devem ser separados linha a linha ou por ponto e vírgulas. Para delimitar o bloco, todos os comandos a serem executados devem estar entre colchetes ({}).
while (condição)
{
primeiro comando a ser executado
segundo comando a ser executado
...
comando n a ser executado
}
Dessa forma, a condição é testada antes de executar o trecho de código. Ou seja, se, da primeira vez o resultado for falso, os comandos não são executados nenhuma vez.
Observe que se a condição for sempre verdadeira, a estrutura de repetição se repete indefinidamente e o programa fica travado em um loop infinito. Neste caso, o processamento fica travado nesta linha.
Estrutura de repetição com teste no final
Nessa estrutura, um fluxo de execução será repetido pelo menos uma vez. Cada vez que terminar a execução de um dos fluxos, o teste condicional é feito para verificar se o fluxo é executado novamente.
do comando a ser executado
while (condição)
Caso haja mais de um comando a ser executado, eles devem ser separados linha a linha ou por ponto e vírgulas. Para delimitar o bloco, todos os comandos a serem executados devem estar entre chaves ({}).
do
{
primeiro comando a ser executado
segundo comando a ser executado ...
comando n a ser executado } while (condição)
Dessa forma, a condição é testada depois de executar o trecho de código. Ou seja, se, da primeira vez o resultado da condição for falso, mesmo assim os comandos são executados pelo menos uma vez.
Estrutura de Repetição com variável de controle
Ocorrem casos que é difícil determinar quantas vezes um bloco será executado. Sabe-se que ele será executado quando uma certa condição for satisfeita. Às vezes, não é intuitivo determinar quantas vezes um bloco vai ser executado. Nestas vezes, os comandos while e do while são recomendados.
No caso de se saber quantas vezes um bloco deve ser executado, o comando for permite a execução de um bloco um número determinado de vezes.
for (inicialização;condição;incremento) comando
Caso haja mais de um comando a ser executado, eles devem ser separados linha a linha ou por ponto e vírgulas. Para delimitar o bloco, todos os comandos a serem executados devem estar entre chaves ({}).
for (inicialização;condição;incremento)
{
comando 1
...
comando n }
O comando for é equivalente a:
inicialização
while (condição)
{
comando 1
...
comando n
incremento }
Por exemplo:
for (num=1;num<=10;num=num+1) comando
É equivalente a:
num=1
while (num<=10) {
comando
num = num + 1
}
Estrutura de repetição com teste no meio
Às vezes, trabalha-se com condições complexas que são difíceis de serem representadas no início ou no final de um bloco. Dessa forma, a estrutura de repetição com teste no meio utiliza-se do comando break que é útil para interromper a repetição a qualquer momento da execução. Quando o fluxo é interrompido, passa-se, diretamente, para o fluxo imediatamente superior.
while (true) //Ou outra condição
{
primeiro comando a ser executado
segundo comando a ser executado if (condição)
break terceiro comando a ser executado
n comando a ser executado }
O comando continue
O comando continue interrompe a execução de uma iteração do laço e passa para a próxima. Quando o comando continue é chamado dentro de um “for” o controle passa para o comando de incremento.
Comparação entre as estruturas de repetição
| Estrutura | Quando é testada a condição | Quantidade de execuções |
Efeito do comando continue |
|---|---|---|---|
| while | início | 0 ou mais | Passa para a próxima iteração, ou seja, testa a condição |
| do while | fim | 1 ou mais | Passa para a próxima iteração, ou seja, testa a condição |
| for | início | 0 ou mais | Faz o incremento e depois testa a condição |
| Teste no meio | Qualquer lugar | Depende se utiliza while, do while ou for |
Depende se utiliza while, do while ou for. |
Exemplos em Processing
No exemplo abaixo, um conjunto de linhas é desenhado através da estrutura de repetição for.
Neste exemplo, uma elipse tem seu tamanho alterado a partir de uma variável i.
É possível misturar a estrutura de repetição com a estrutura condicional.
Em mais um exemplo, o degradê é obtido através do desenho de uma linha e alteração de cor ao mesmo tempo.
Observe que este exemplo já foi tratado anteriormente.
Por padrão, a estrutura for produz repetições em uma dimensão. Colocando uma estrutura for dentro da outra, pode-se iterar por duas dimensões. No exemplo a seguir, o ponto percorre as linhas e colunas durante a execução.





Comentários