Aula 08 – Estrutura de repetição

19 maio, 2009 (16:36) | aulas | Por: admin

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.

aula08ex01forlinhas

Executar!

 

Neste exemplo, uma elipse tem seu tamanho alterado a partir de uma variável i.

aula08ex02forellipse

Executar!

É possível misturar a estrutura de repetição com a estrutura condicional.

aula08ex03foreif

Executar!

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.

aula08ex04forelinhas2

Executar!

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.

aula08ex05forepontos

Executar!