Referência Linguagem (Estendida) | Bibliotecas | Comparações

For

Descrição

A instrução for é usada para repetir um bloco de instruções definido entre as chaves. Geralmente utiliza-se um contador para incrementar e finalizar o loop. A instrução for é útil para quaisquer operações repetitivas, e é normalmente combinada com arrays para operar em uma coleção de dados ou pinos.

O header para o loop com for é composto por três partes:

for (inicialização; condição; incremento) 
{
   //instrução(ou instruções);

}

A inicialização ocorre primeiramente e somente uma vez. A cada interação do loop, a condição é testada; se for verdadeira a instrução dentro do bloco e o incremento são executados, caso contrário , se a condição for falsa o loop é terminado.

Exemplo

// Dimmer de um LED usando um pino PWM como saída

int pinoPWM = 10; // LED ligado em série com um resistor de 1k ao pino 10

void setup()
{
   // não é necessário setup
}

void loop()
{
   for (int i= 0; i <= 255; i++){
   // a variável i é incrimentada até que valha 255,
   //depois o loop é terminado
      analogWrite(pinoPWM, i);
   //o valor de i é escrito no pinoPWM
      delay(10);
   }
}

Dicas

Em C, o loop com for é muito mais flexível do que loops encontrados em algumas outras linguagens, como BASIC. Qualquer um ou todos os três componentes do header podem ser omitidos, no entanto o uso de ponto-e-vírgula é necessário. As instruções para inicialização, condição e incremento também podem ser quaisquer uma das instruções C válidas, com variáveis não relacionadas e uso de quaisquer outros tipos de dados incluindo variáveis do tipo float. Esses recursos podem ser muito uteis na solução de diversos problemas com programação.

Por exemplo, utilizando uma multiplicação como incremento gerará uma progressão aritmética:

for(int x = 2; x < 100; x = x * 1.5){
   Serial.println(x);
}

Saída: 2,3,4,6,9,13,19,28,42,63,94

Outro exemplo, dimmer de um LED com só um loop:

void loop()
{
   int x = 1;
   for (int i = 0; i > -1; i = i + x){
      analogWrite(pinoPWM, i);
      if (i = 255) x = -1;   // muda a direção quando antigir o máximo
      delay(10);
   } 
}


Ver também

Voltar para a Referência

Share