Teoria

Introdução

Fala aí, aqui é o Guga do Responde Aí! Tudo bem com você?

No tópico anterior nós conversamos um pouco sobre variáveis e constantes, nesse tópico nós vamos falar sobre um novo tipo de dados capaz de unir esses dois recursos. Estamos falando do tipo enum, que é muito útil em programas que necessitam de enumerações.

O tipo enum

A melhor forma de entendermos o tipo enum é utilizarmos um exemplo do mundo real. Por conta disso, vamos criar um contexto em que esse tipo pode ser usado:

Imagine que estamos desenvolvendo um programa que trabalha com inúmeras datas, por exemplo: um calendário digital.

Você concorda comigo que quando falamos que estamos em janeiro é análogo a dizer que estamos no mês 1?

Faz bastante sentido, né!?

Isso acontece porque reconhecer um mês pelo seu nome é muito mais fácil do que por sua forma numérica. Porém, quando nos referimos a realizar operações, como por exemplo: contar quantos meses faltam para o Natal, o significado numérico se torna mais simples e útil para nós.

Algo parecido acontece quando estamos desenvolvendo um programa, para o nosso código se tornar mais limpo e possuir uma leitura menos complexa, utilizar constantes para representar valores que possuem relação com algum nome é mais fácil para nós. Por outro lado, para o programa, os nomes que nós colocamos para as constantes de nada importa e é mais fácil para ele trabalhar apenas com os valores associados a elas.

Então, o tipo enum nada mais é do que uma forma de definir constantes. A parte legal é que você pode não só definir uma constante, mas um conjunto de constantes que serão enumeradas automaticamente a partir de um valor inicial que você escolhe (caso você não escolha, esse valor inicial será 0).

Declaração de variável do tipo enum

Ainda no programa do calendário digital, imagine que nós tenhamos que definir constantes que representem os meses do ano. Para isso, podemos utilizar o tipo enum da seguinte forma:

Com isso, nós acabamos de criar um tipo enumerado chamado m e s e s e declarar uma variável desse tipo chamada m e s , essa variável por sua vez aceita como dados apenas as constantes enumeradas definidas por nós durante a criação do conjunto de constantes do tipo m e s e s , são elas: J A N E I R O , F E V E R E I R O , M A R C O etc.

Os tipos enumerados devem ser criados no mesmo local em que as constantes são definidas com base na anatomia dos programas que nós criamos, para isso basta escrever enum e em seguida colocar o nome do tipo enumerado que será criado, no caso acima foi esse nome foi m e s e s . Após isso, devemos definir entre chaves todas as constantes enumeradas que farão parte do conjunto desse tipo.

Mas por que chamamos elas de constantes enumeradas?

Porque a partir do momento que atribuímos um valor inicial, como foi feito com a constante J A N E I R O (atribuída com o valor 1), todas as outras constantes armazenarão os valores seguintes, então teremos: F E V E R E I R O armazenando o valor 2, M A R C O armazenando o valor 3 e assim por diante até D E Z E M B R O que armazenará o valor 12.

Caso o valor inicial 1 não fosse atribuído, J A N E I R O passaria a armazenar o valor 0 e a enumeração das constantes seguiria a partir disso.

A forma geral para criar um tipo enumerado é dada pelo seguinte trecho de código:

Na prática o que isso significa?

Que a variável declarada durante a criação do tipo enumerado aceita qualquer uma das constantes definidas na criação desse tipo, isso acontece da seguinte forma (utilizando o tipo m e s e s como exemplo):

Onde agora a variável do tipo enumerado m e s e s chamada m e s armazena o valor 3.

Eu sei que o conceito do tipo enum é denso, por isso, para que possamos melhorar o nosso conhecimento, devemos resolver alguns exercícios de fixação.

Espero te encontrar na página aqui do lado, até logo!

Declaração de variável do tipo enum

Exercícios Resolvidos

Exercício Resolvido #1

Utilize o tipo enum para realizar a enumeração dos meses de um ano.

Passo 1

O objetivo desse enunciado é definir um conjunto de constantes que representam os meses de um ano. Utilizando o tipo enum, temos:

Resposta

Com isso, acabamos de criar um tipo de constantes enumeradas chamado m e s e s _ a n o e declaramos uma variável desse tipo chamada m e s .

Exercício Resolvido #2

Durante o planejamento das olimpíadas, cada modalidade esportiva recebeu um código específico:

  1. Futebol;
  2. Ginástica;
  3. Natação;
  4. Atletismo.

Você foi contratado para ser o responsável pelo programa que irá organizar a ordem desses esportes durante o evento. Por esse motivo, desenvolva um código utilizando o tipo enum para enumerar as modalidades e crie uma variável capaz de receber o código apenas das modalidades presentes no evento.

Passo 1

Basicamente, o que o enunciado está pedindo é que utilizemos o tipo enum para criarmos um conjunto de constantes enumeradas juntamente com a declaração de uma variável desse tipo, faremos isso da seguinte forma:

Resposta

Com isso, acabamos de criar um tipo enumerado m o d a l i d a d e s e definir uma variável desse tipo chamada c o d _ m o d a l i d a d e , essa será responsável por receber os códigos definidos no conjunto de constantes.

Exercício Resolvido #3

Suponha que você está desenvolvendo o aplicativo de um festival de música muito famoso e para facilitar o trabalho com as lineups você decidiu enumerar as bandas que irão tocar no primeiro dia do festival.

As bandas confirmadas para esse dia são:

  • Foo Fighters;
  • Bon Jovi;
  • Iron Maiden.

Inicie essa enumeração em 1 e não se esqueça de criar uma variável denominada b a n d a que irá trabalhar com essas constantes.

Passo 1

Começando a enumeração pela constante F O O _ F I G H T E R S , podemos criar o tipo enumerado da seguinte forma:

Resposta

Com esse simples trecho de código, acabamos de criar um tipo enumerado b a n d a s e declarar uma variável desse tipo chamada b a n d a .

Exercício Resolvido #4

Um computador, no nível mais baixo de abstração, processa os seus dados através de números binários onde: 1 representa verdadeiro e 0 representa falso. Através desse conceito, algumas linguagens de programação criaram um tipo que é capaz de aceitar apenas os valores verdadeiro e falso, esse tipo é denominado booleano.

Sabendo que a linguagem C não possui esse tipo, crie a sua própria versão do tipo booleano utilizando os conceitos de enumeração presentes na linguagem através do tipo enum.

Passo 1

Para criar o nosso tipo booleano, nós temos que assimilar o valor 1 com uma constante V E R D A D E I R O e o valor 0 com uma constante F A L S O .

Resposta

Fazer isso é muito simples, basta criarmos um conjunto de constantes denominado b o o l e a n o e incluirmos apenas duas constantes: V E R D A D E I R O e F A L S O .

A imagem a seguir ilustra como isso pode ser feito:

Lembrete: nesse caso não é necessário definir um valor de início para a enumeração, pois a constante F A L S O irá armazenar o valor 0 , esse que por padrão é o valor que sempre inicializará uma enumeração caso nenhum outro valor esteja explicito durante a definição do tipo enum.