Dichiarare e usare gli enum
Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 56 di 63.
Ora che hai definito un enum, puoi creare variabili di quel tipo enum e assegnare loro valori significativi. È qui che gli enum danno il meglio: invece di lavorare con numeri confusi, usi nomi descrittivi.
Per dichiarare una variabile di tipo enum, usi la stessa sintassi che useresti per dichiarare qualsiasi altra variabile:
enum DayOfWeek today;
enum DayOfWeek weekend_day;Puoi quindi assegnare valori a queste variabili usando le costanti con nome del tuo enum:
today = WEDNESDAY;
weekend_day = SATURDAY;Confronta questo con l’uso di numeri grezzi: today = 2; e weekend_day = 5;. La versione con enum ti dice subito con quale giorno stai lavorando, mentre con i numeri devi ricordare cosa rappresenta ogni valore. Questo rende il tuo codice molto più leggibile e meno soggetto a errori.
Sfida
FacileCrea un programma in C che dimostri come dichiarare e usare variabili enum per un semplice sistema di gestione delle attività. Il programma deve:
- Definire un
enumchiamatoTaskStatuscon le seguenti costanti in questo ordine esatto:PENDINGIN_PROGRESSCOMPLETEDCANCELLED
- Nella funzione principale:
- Dichiarare tre variabili di tipo
enum TaskStatuschiamatetask1,task2etask3 - Leggere dall'input tre numeri interi che rappresentano lo stato di ciascuna attività (0, 1, 2 o 3)
- Assegnare i valori enum corrispondenti a ciascuna variabile dell'attività in base all'input:
- Se l'input è 0, assegnare
PENDING - Se l'input è 1, assegnare
IN_PROGRESS - Se l'input è 2, assegnare
COMPLETED - Se l'input è 3, assegnare
CANCELLED
- Se l'input è 0, assegnare
- Stampare lo stato di ciascuna attività usando i valori enum in questo formato esatto:
Task 1 status: [numeric_value]Task 2 status: [numeric_value]Task 3 status: [numeric_value]
- Contare e stampare quante attività rientrano in ciascuna categoria di stato:
Pending tasks: [count]In progress tasks: [count]Completed tasks: [count]Cancelled tasks: [count]
- Calcolare e stampare il numero totale di attività attive (attività che sono
PENDINGoIN_PROGRESS) in questo formato esatto:Active tasks: [count]
- Dichiarare tre variabili di tipo
Questa sfida dimostra come le variabili enum rendano il codice più leggibile usando nomi significativi invece di numeri grezzi. Ti eserciterai a dichiarare variabili enum, assegnare valori enum in base all'input, usare costanti enum nei confronti ed eseguire calcoli con valori enum.
Provalo tu
#include <stdio.h>
// TODO: Definisci qui l'enum TaskStatus
int main() {
// Leggi l'input per gli stati di tre attività
int status1, status2, status3;
scanf("%d", &status1);
scanf("%d", &status2);
scanf("%d", &status3);
// TODO: Dichiara tre variabili di tipo enum TaskStatus (task1, task2, task3)
// TODO: Assegna i valori dell'enum in base all'input
// TODO: Stampa gli stati delle attività
// TODO: Conta le attività in ogni categoria
// TODO: Calcola e stampa il numero di attività attive
return 0;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Fondamenti dei puntatori
Che cos’è un puntatore?Dichiarare i puntatoriL’operatore di indirizzo (&)L’operatore di dereferenziazione (*)Puntatori NULLRiepilogo: nozioni di base sui puntatori4Progetto: Utility di testo semplice
Panoramica del progettoConteggio dei caratteri7Strutture (struct)
Che cos'è una struct?Dichiarare una structCreare variabili structAccedere ai membri di una structInizializzare le structRiepilogo: struct dei dati dello studente10Enum e typedef
enum per costanti denominateDichiarare e usare gli enumEnum nelle istruzioni switchUsare typedef per gli alias di tipotypedef con le structRipasso: esercizi su typedef ed enum2Puntatori e array
I nomi degli array come puntatoriElementi degli array e puntatoriAritmetica dei puntatoriConfrontare i puntatoriRiepilogo: attraversamento di un array con i puntatori5Puntatori e funzioni
Passaggio per valorePassare puntatori alle funzioniModificare le variabili tramite puntatoriUn esempio classico: scambiare valoriPassare array alle funzioniRiepilogo: argomenti puntatore nelle funzioni3Array di caratteri e stringhe
Stringhe come array di charIl terminatore nullInput di stringhe con scanfUso di strlen()Uso di strcpy()Uso di strcat()Uso di strcmp()Riepilogo: funzioni di base per le stringhe6Gestione della memoria
Memoria Stack vs. HeapAllocazione dinamica - malloc()Usare sizeof() per l'allocazioneVerificare il fallimento dell'allocazioneLiberare la memoria con free()Allocare con calloc()Riepilogo: array dinamico9Progetto: Inserimento semplice di un contatto
Progetto: Definire una struct ContattoFunzione per creare un contattoEsercitati da solo: Compilatore C online