Declarando e Usando Enums
Parte da seção Lógica e Fluxo do Journey de C da Coddy. Lição 56 de 63.
Agora que você definiu um enum, pode criar variáveis desse tipo de enum e atribuir a elas valores significativos. É aqui que os enums realmente se destacam — em vez de trabalhar com números confusos, você usa nomes descritivos.
Para declarar uma variável de um tipo enum, você usa a mesma sintaxe de declarar qualquer outra variável:
enum DayOfWeek today;
enum DayOfWeek weekend_day;Você pode então atribuir valores a essas variáveis usando as constantes nomeadas do seu enum:
today = WEDNESDAY;
weekend_day = SATURDAY;Compare isso ao uso de números brutos: today = 2; e weekend_day = 5;. A versão com enum informa imediatamente com qual dia você está trabalhando, enquanto os números exigem que você se lembre do que cada valor representa. Isso torna seu código muito mais legível e menos propenso a erros.
Desafio
FácilCrie um programa em C que demonstre a declaração e o uso de variáveis enum para um sistema simples de gerenciamento de tarefas. Seu programa deve:
- Definir um
enumchamadoTaskStatuscom as seguintes constantes nesta ordem exata:PENDINGIN_PROGRESSCOMPLETEDCANCELLED
- Na função principal:
- Declarar três variáveis do tipo
enum TaskStatuschamadastask1,task2etask3 - Ler três números inteiros da entrada representando o status de cada tarefa (0, 1, 2 ou 3)
- Atribuir os valores enum correspondentes a cada variável de tarefa com base na entrada:
- Se a entrada for 0, atribua
PENDING - Se a entrada for 1, atribua
IN_PROGRESS - Se a entrada for 2, atribua
COMPLETED - Se a entrada for 3, atribua
CANCELLED
- Se a entrada for 0, atribua
- Imprimir o status de cada tarefa usando os valores enum neste formato exato:
Task 1 status: [numeric_value]Task 2 status: [numeric_value]Task 3 status: [numeric_value]
- Contar e imprimir quantas tarefas estão em cada categoria de status:
Pending tasks: [count]In progress tasks: [count]Completed tasks: [count]Cancelled tasks: [count]
- Calcular e imprimir o número total de tarefas ativas (tarefas que estão como
PENDINGouIN_PROGRESS) neste formato exato:Active tasks: [count]
- Declarar três variáveis do tipo
Este desafio demonstra como as variáveis enum tornam o código mais legível ao usar nomes significativos em vez de números brutos. Você praticará a declaração de variáveis enum, a atribuição de valores enum com base na entrada, o uso de constantes enum em comparações e a realização de cálculos com valores enum.
Experimente você mesmo
#include <stdio.h>
// TODO: Defina o enum TaskStatus aqui
int main() {
// Lê a entrada para três status de tarefa
int status1, status2, status3;
scanf("%d", &status1);
scanf("%d", &status2);
scanf("%d", &status3);
// TODO: Declare três variáveis enum TaskStatus (task1, task2, task3)
// TODO: Atribua valores ao enum com base na entrada
// TODO: Imprima os status das tarefas
// TODO: Conte as tarefas em cada categoria
// TODO: Calcule e imprima a contagem de tarefas ativas
return 0;
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Fundamentos de Ponteiros
O que é um Ponteiro?Declarando PonteirosO Operador de Endereço (&)O Operador de Desreferência (*)Ponteiros NULLRecapitulação: Fundamentos de Ponteiros4Projeto: Utilitário de Texto Simples
Visão Geral do ProjetoContando Caracteres7Estruturas (structs)
O que é uma Struct?Declarando uma StructCriando Variáveis de StructAcessando Membros de uma StructInicializando StructsRecapitulação: Struct de Dados de Aluno10Enums e Typedef
enum para Constantes NomeadasDeclarando e Usando EnumsEnums em Instruções SwitchUsando typedef para Aliases de Tipotypedef com StructsRecapitulação: Prática de Typedef e Enum2Ponteiros e Arrays
Nomes de Arrays como PonteirosElementos de Array - PonteirosAritmética de PonteirosComparando PonteirosRecapitulação: Percorrendo Arrays com Ponteiros5Ponteiros e Funções
Passagem por ValorPassando Ponteiros para FunçõesModificando Variáveis via PonteirosUm Exemplo Clássico: SwapPassando Arrays para FunçõesRecapitulação: Ponteiros como Argumentos3Arrays de Caracteres e Strings
Strings como Arrays de charO Terminador NuloEntrada de Strings com scanfUsando strlen()Usando strcpy()Usando strcat()Usando strcmp()Recapitulação: Funções Básicas de Strings6Gerenciamento de Memória
Memória Stack vs. HeapAlocação Dinâmica - malloc()Usando sizeof() para AlocaçãoVerificando Falhas de AlocaçãoLiberando Memória com free()Alocando com calloc()Recapitulação: Array Dinâmico9Projeto: Cadastro Simples de Contatos
Projeto: Definir a Struct de ContatoFunção para Criar um ContatoPratique por conta própria: Compilador de C online