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);
}
}
//---------------------------------------------------------------------------
|
HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO |