O tipo enum


O tipo enum cuida tratar de um tipo cuja sintaxe é bastante elaborada, para conter um conjunto de valores definidos pelo usuário chamados dados de tipos enumerados ou enumeração.


Usando a palavra-chave enum, podemos definir um conjunto de constantes agrupadas sob um nome como um novo tipo de dados, somando-se uma nova maneira às duas formas apresentadas anteriormente para definição de constantes. A essa coleção de constantes, dá-se o nome de constantes enumeradas.


As constantes enumeradas possibilitam-nos a criação de novos tipos de dados, bem como a definição de variáveis desses tipos, sendo que os valores assumidos ficam restritos a determinada coleção de valores. Podemos, por exemplo, declarar uma enumeração representando os meses do ano:


enum Meses_do_Ano
{
janeiro,
fevereiro,
marco,
abril,
maio,
junho,
julho,
agosto,
setembro,
outubro,
novembro,
dezembro
}; // Fim de enum Meses_do_Ano

Feito isso, podemos definir variáveis do tipo Meses_do_Ano, que podem assumir apenas valores inteiros:


enum Meses_do_Ano
{
janeiro = 0, 
fevereiro = 1, 
marco = 2,
abril = 3, 
maio = 20, 
junho = 21, 
julho = 22, 
agosto = 56, 
setembro = 57, 
outubro = 58, 
novembro = 200, 
dezembro = 201
}


Observe que cada constante enumerada possui um valor inteiro e que podemos atribuir um valor específico a determinada constante. Todavia se não especificarmos tal valor, a primeira constante assumirá o valor 0; a segunda, 1; a terceira, 2; a quarta, 3; e assim sucessivamente. Como, em nosso exemplo optamos por atribuir valores aleatórios às constantes, percebemos que as constantes subseqüentes assumem valores com incremento de 1 a partir das que receberam um valor qualquer (em nosso exemplo, os meses de maio, agosto e novembro).


Internamente as constantes enumeradas são representadas como sendo do tipo int.


O exemplo a seguir contém um Label no Form. Quando o usuário dá um clique no Label, uma caixa de inserção de dados aparece para que seja digitado um valor entre 1 e 12. Dependendo do valor digitado, teremos a resposta dos mês correspondente no Label:

//---------------------------------------------------------------------------
void __fastcall TForm1::Label1Click(TObject *Sender)
{
enum Meses_do_Ano
{
janeiro = 1, // especifica o valor 1 para a primeira constante
fevereiro,   // vale 2
marco,       // vale 3 ...
abril,
maio,
junho,
julho,
agosto,
setembro,
outubro,
novembro,
dezembro
}; // Fim de enum Meses_do_Ano

// declara variável do tipo Meses_do_Ano
Meses_do_Ano Mes;
//declara variável int
int iMes;

iMes = StrToInt(InputBox ("Caixa para colheita de Valores",
"Digite um número entre 1 e 12", ""));
Mes = Meses_do_Ano(iMes);
switch(Mes)
     {
        case 1:
          Label1 -> Color = clGreen; /*escolha uma cor diferente para cada mês*/
          Label1 -> Font -> Name = "Arial"; /*e uma font para cada mês*/
          Label1 -> Font -> Color = clYellow; /*e uma cor de font para cada mês*/
          Label1 -> Caption = AnsiString(iMes) + " equivale a janeiro...";
          break;

        case 2:
          Label1 -> Color = clGreen;
          Label1 -> Font -> Name = "Arial";
          Label1 -> Font -> Color = clYellow;
          Label1 -> Caption = AnsiString(iMes) + " equivale a fevereiro...";
          break;

        case 3:
          Label1 -> Color = clGreen;
          Label1 -> Font -> Name = "Arial";
          Label1 -> Font -> Color = clYellow;
          Label1 -> Caption = AnsiString(iMes) + " equivale a março...";
          break;

        case 4:
          Label1 -> Color = clGreen;
          Label1 -> Font -> Name = "Arial";
          Label1 -> Font -> Color = clYellow;
          Label1 -> Caption = AnsiString(iMes) + " equivale a abril...";
          break;

        case 5:
          Label1 -> Color = clGreen;
          Label1 -> Font -> Name = "Arial";
          Label1 -> Font -> Color = clYellow;
          Label1 -> Caption = AnsiString(iMes) + " equivale a maio...";
          break;

        case 6:
          Label1 -> Color = clGreen;
          Label1 -> Font -> Name = "Arial";
          Label1 -> Font -> Color = clYellow;
          Label1 -> Caption = AnsiString(iMes) + " equivale a junho...";
          break;

        case 7:
          Label1 -> Color = clGreen;
          Label1 -> Font -> Name = "Arial";
          Label1 -> Font -> Color = clYellow;
          Label1 -> Caption = AnsiString(iMes) + " equivale a julho...";
          break;

        case 8:
          Label1 -> Color = clGreen;
          Label1 -> Font -> Name = "Arial";
          Label1 -> Font -> Color = clYellow;
          Label1 -> Caption = AnsiString(iMes) + " equivale a agosto...";
          break;

        case 9:
          Label1 -> Color = clGreen;
          Label1 -> Font -> Name = "Arial";
          Label1 -> Font -> Color = clYellow;
          Label1 -> Caption = AnsiString(iMes) + " equivale a setembro...";
          break;

        case 10:
          Label1 -> Color = clGreen;
          Label1 -> Font -> Name = "Arial";
          Label1 -> Font -> Color = clYellow;
          Label1 -> Caption = AnsiString(iMes) + " equivale a outubro...";
          break;

        case 11:
          Label1 -> Color = clGreen;
          Label1 -> Font -> Name = "Arial";
          Label1 -> Font -> Color = clYellow;
          Label1 -> Caption = AnsiString(iMes) + " equivale a novembro...";
          break;

        case 12:
          Label1 -> Color = clGreen;
          Label1 -> Font -> Name = "Arial";
          Label1 -> Font -> Color = clYellow;
          Label1 -> Caption = AnsiString(iMes) + " equivale a dezembro...";
          break;

        default:
        ShowMessage(AnsiString(iMes) + " não é um valor válido...");
        break;
     }
}
//---------------------------------------------------------------------------



anterior

índice

próxima


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