if ...else - Continuação


O comando if ... else comporta em seu interior quaisquer outros comandos, incluindo combinações else if, if ... else:

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

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(StrToInt(Edit1 -> Text) >= StrToInt(Edit2 -> Text))
{
        if((StrToInt(Edit1 -> Text) % StrToInt(Edit2 -> Text)) == 0)
        {
                if(StrToInt(Edit1 -> Text) == StrToInt(Edit2 -> Text))
                        Label1 -> Caption = "O número de Edit1 é igual ao de Edit2!!!";
                else
                        Label1 -> Caption = "O número de Edit1 é multiplo do de Edit2";
        }
        else
                Label1 -> Caption = "O número de Edit1 não é múltiplo do de Edit2";
}
else
        Label1 -> Caption = "O número de Edit2 é maior que o de Edit1";

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

Nota: O comando else nem sempre estará associado ao comando if mais recente. Um comando if contido com todas as suas instruções num bloco de chaves {} deverá remeter o else (fora desse bloco) para o if antecedente. Um bloco de código, em virtude de "pequenas" alterações, poderá apresentar resultados totalmente diferentes. Por exemplo:

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

int x = 45, y = 200, z = 10;
 if (x == 1)
   {      // início do bloco
   if (y == 200)
      z = y - x;
   }     //fim do bloco sem else
   else  // a instrução desse comando será aplicada se x for diferente de 1
      z = y + x;
Label1->Caption = z; /*Resultado: z = 245, pois o comando else, em virtude das chaves {},
está relacionado com o primeiro if, cuja condição é falsa, porque x é diferente de 1 */

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

int x = 45, y = 200, z = 10;
 if (x == 1); //o ponto e vírgula faz a diferença. Não existe instrução para essa condição
   if (y == 200)
      z = y - x; // Ok. y é igual a 200
   else
      z = y + x; // essa instrução seria aplicada se y fosse diferente de 200
Label1->Caption = z; /*Resultado: z = 155, porque o primeiro if não é levado em
consideração em virtude do ponto e vírgula que deixa a instrução deste comando vazia */

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

int x = 45, y = 200, z = 10;
 if (x == 1) 
   if (y == 200)
      z = y - x;
   else
      z = y + x;
Label1->Caption = z; /*Resultado: z = 10, pois o programa avalia as duas condições e não
encontra uma opção (um segundo else) para o fato de a primeira condição ser falsa */

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

int x = 45, y = 200, z = 10;
 if (x == 1)
   if (y == 200)
      z = y - x;
   else
      z = y + x;
   else
   z = 300;
   Label1 -> Caption = z; /* Resultado: z = 300, pois esse segundo else vai de encontro
com o fato de a primeira condição ser falsa */

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

int x = 45, y = 200, z = 10;
 if (x == 45)
   if (y == 200)
      z = y - x;
   else
      z = y + x;
Label1 -> Caption = z; // Resultado: z = 155, porque as duas condições são verdadeiras.

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

anterior

índice

próxima


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