Omissão e aninhamento no loop for



Podemos deixar de incluir uma ou mais instruções no cabeçalho do loop for. Caso isso ocorra, não podemos nos esquecer de colocar o ponto e vírgula respectivo:


for( ; ; )


Dependendo da forma que construímos o laço for, o mesmo poderá funcionar como se fosse um loop while:

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
int i = 1;
for(;i < 10;)
        {
             ShowMessage((String)"laço for com alguns comandos nulos.  " +  
                         i + "°" + " loop");
             i++;
        }
}
//---------------------------------------------------------------------------


É possível construir um loop for com todos os comandos nulos:


//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
int i = 1;
for(;;)
        {
             if(i<10)
             {
             ShowMessage((String)"laço for com todos os comandos nulos.  " +  
             i + "°" + " loop");
             i++;
             }
             else
             break;
        }
}
//---------------------------------------------------------------------------

Por incrível que pareça, às vezes podemos colocar instruções que estariam no corpo do loop dentro do cabeçalho. Nessas situações, se o corpo do loop não for usado pelo comando, será necessário colocar-se a instrução de nulo (um ponto e vírgula) no corpo do laço.


//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{

for(int i = 1;
    i<10;
    ShowMessage((String)"laço for com instruções no corpo do laço.  " +
             i++ + "°" + " loop"));

}
//---------------------------------------------------------------------------



loops for aninhados


Os laços for também podem ser aninhados (um dentro do outro):


//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
StringGrid1->ColCount = 10;
StringGrid1->RowCount = 10;

  int coluna, linha, celula;

  celula = 0;

  for (coluna = 0; coluna < StringGrid1->ColCount; coluna++)
  {
    for (linha = 0; linha < StringGrid1->RowCount; linha++)
      StringGrid1->Cells[coluna][linha] = IntToStr(++celula);
  }
}
//---------------------------------------------------------------------------



anterior

índice

próxima


HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO