enum per costanti denominate
Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 55 di 63.
Quando scrivi programmi in C, spesso hai bisogno di lavorare con insiemi di valori costanti correlati. Per esempio, potresti dover rappresentare i giorni della settimana, i mesi dell'anno o diversi stati in un programma. Invece di usare numeri grezzi come 0, 1, 2, puoi usare enum per creare nomi significativi per queste costanti.
Un tipo enumerato, o enum, ti permette di definire un gruppo di costanti intere con nome. Questo rende il tuo codice molto più leggibile e facile da mantenere. Ecco la sintassi di base:
enum DayOfWeek {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};Per impostazione predefinita, il primo nome riceve il valore 0, il secondo 1 e così via. Quindi MONDAY è uguale a 0, TUESDAY è uguale a 1 e SUNDAY è uguale a 6. Questo approccio è molto più chiaro che ricordare che il giorno 0 significa lunedì o che il giorno 6 significa domenica.
L'uso di enum rende il codice autoesplicativo e aiuta a prevenire gli errori che possono verificarsi quando si usano numeri magici nel programma.
Puoi dichiarare variabili di tipo enum e assegnare loro valori enum:
enum DayOfWeek today;
today = MONDAY; // assegna 0 a todaySfida
FacileCrea un programma in C che definisca un enum per i colori del semaforo e ne dimostri l’uso. Il programma deve:
- Definire un
enumdenominatoTrafficLightcon le seguenti costanti in quest’ordine esatto:REDYELLOWGREEN
- Nella funzione principale:
- Dichiarare una variabile di tipo
enum TrafficLightdenominatacurrentLight - Leggere un intero dall’input che rappresenti lo stato del semaforo (0, 1 o 2)
- Assegnare il valore enum corrispondente a
currentLightin base all’input:- Se l’input è 0, assegnare
RED - Se l’input è 1, assegnare
YELLOW - Se l’input è 2, assegnare
GREEN
- Se l’input è 0, assegnare
- Stampare lo stato attuale del semaforo in questo formato esatto:
Current light: [enum_name] - Stampare il valore numerico del semaforo attuale in questo formato esatto:
Numeric value: [number] - Determinare e stampare l’azione in base al colore attuale del semaforo:
- Se
RED: stampareAction: Stop - Se
YELLOW: stampareAction: Caution - Se
GREEN: stampareAction: Go
- Se
- Calcolare e stampare il colore successivo del semaforo nella sequenza:
- Se il colore attuale è
RED(0), il successivo èGREEN(2) - Se il colore attuale è
YELLOW(1), il successivo èRED(0) - Se il colore attuale è
GREEN(2), il successivo èYELLOW(1)
- Se il colore attuale è
- Stampare il colore successivo in questo formato esatto:
Next light: [enum_name]
- Dichiarare una variabile di tipo
Questa sfida dimostra come le costanti enum rendano il codice più leggibile rispetto all’uso di numeri grezzi. Invece di ricordare che 0 significa rosso, 1 significa giallo e 2 significa verde, puoi usare nomi significativi come RED, YELLOW e GREEN. Ti eserciterai a definire un enum, a usare le costanti enum nelle assegnazioni e nei confronti e ad accedere ai valori interi sottostanti delle costanti enum.
Provalo tu
#include <stdio.h>
// TODO: Definisci qui l'enum TrafficLight
int main() {
// Leggi l'input
int input;
scanf("%d", &input);
// TODO: Dichiara la variabile currentLight e assegnale un valore enum in base all'input
// TODO: Stampa lo stato del semaforo corrente
// TODO: Stampa il valore numerico
// TODO: Stampa l'azione in base al semaforo corrente
// TODO: Calcola e stampa il prossimo stato del semaforo
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