Definizione di Costanti in Linguaggio C

A differenza di una variabile, una costante rappresenta un valore che non cambia mai durante l'esecuzione di un programma.

Vediamo, in questa lezione, come definire costanti in linguaggio C e associare ad esse dei nomi simbolici.

Costanti

Spesso, nella stesura di programmi, sorge l'esigenza di introdurre dei valori che non cambiano mai durante l'esecuzione del programma stesso.

Ad esempio, supponiamo di voler realizzare un programma che calcoli l'area e il perimetro di un cerchio a partire dal raggio che viene inserito dall'utente. Possiamo realizzare il programma in questo modo:

#include <stdio.h>

int main() {
    /* Dichiarazioni */
    double raggio, area, perimetro;

    /* Input */
    printf("Inserisci il raggio del cerchio: ");
    scanf("%lf", &raggio);

    /* Calcolo dell'area e del perimetro */
    area = 3.14159 * raggio * raggio;
    perimetro = 2 * 3.14159 * raggio;

    /* Output */
    printf("L'area del cerchio è: %lf\n", area);
    printf("Il perimetro del cerchio è: %lf\n", perimetro);

    return 0;
}

In questo programma, per calcolare l'area e il perimetro abbiamo inserito direttamente il valore di π (pi greco): 3.14159. Non solo, ma abbiamo anche ripetuto due volte lo stesso valore.

In tal caso, il valore di pi greco è un numero fisso che non muta mai. In questi casi il linguaggio C mette a disposizione una funzionalità per la definizione di costanti a cui è possibile associare nomi simbolici.

In questo modo abbiamo due vantaggi:

  1. Il codice risulta più leggibile in quanto, al posto del valore numerico, possiamo usare un nome simbolico che ne descrive il significato;
  2. Non dobbiamo ripetere, ogniqualvolta ne abbiamo bisogno, il valore numerico.

La sintassi per definire una costante in linguaggio C è la seguente:

#define NOME_COSTANTE valore

Si tratta, a tutti gli effetti, di una direttiva di precompilazione che dice al compilatore di sostituire ogni occorrenza di NOME_COSTANTE con valore prima di compilare il codice. Nello specifico si tratta della definizione di una macro semplice che studieremo nel dettaglio più avanti. Per il momento ci accontentiamo di usare questo meccanismo per definire delle costanti.

Per cui, possiamo modificare il codice del programma di sopra in questo modo:

#include <stdio.h>

#define PI 3.14159

int main() {
    /* Dichiarazioni */
    double raggio, area, perimetro;

    /* Input */
    printf("Inserisci il raggio del cerchio: ");
    scanf("%lf", &raggio);

    /* Calcolo dell'area e del perimetro */
    area = PI * raggio * raggio;
    perimetro = 2 * PI * raggio;

    /* Output */
    printf("L'area del cerchio è: %lf\n", area);
    printf("Il perimetro del cerchio è: %lf\n", perimetro);

    return 0;
}

Abbiamo aggiunto la definizione di una costante prima del corpo main del nostro programma. Inoltre, abbiamo modificato le occorrenze di 3.14159 con PI. Il codice diventa più leggibile, in quanto il significato di PI è immediatamente chiaro.

Definizione

Definizione di Costanti in Linguaggio C

Per definire una costante in linguaggio C, è possibile utilizzare la direttiva di precompilazione #define. Questa direttiva permette di associare un nome simbolico a un valore costante, rendendo il codice più leggibile e manutenibile.

La sintassi generale per definire una costante è la seguente:

#define NOME_COSTANTE valore

Dove NOME_COSTANTE è il nome simbolico della costante e valore è il valore numerico associato alla costante.

Consiglio

Nomi delle Costanti

Una convenzione molto adoperata nella scrittura di programmi in linguaggio C è quella di scrivere i nomi delle costanti in maiuscolo. Questo permette di distinguerle facilmente dalle variabili e di renderle più visibili all'interno del codice.

Per cui, ad esempio, conviene scrivere una costante in questo modo:

/* Consigliato */
#define POLLICI_IN_UN_CENTIMETRO 2.54

Invece che in questo modo:

/* Sconsigliato */
#define pollici_in_un_centimetro 2.54

Esempio

Vediamo un altro esempio di applicazione delle costanti. Supponiamo di voler realizzare un programma che prende in ingresso una temperatura in gradi Celsius e la converte in gradi Fahrenheit. La formula di conversione è la seguente:

F = \frac{9}{5} \cdot C + 32 = 1.8 \cdot C + 32

Dove F è la temperatura in gradi Fahrenheit e C è la temperatura in gradi Celsius.

Possiamo pensare di definire due costanti. Una per il coefficiente di conversione e una per il termine noto. Possiamo, quindi, scrivere il programma in questo modo:

#include <stdio.h>

/* 9 / 5 = 1.8 */
#define COEFFICIENTE 1.8
#define TERMINE_NOTO 32.0

int main() {
    /* Dichiarazioni */
    double celsius, fahrenheit;

    /* Input */
    printf("Inserisci la temperatura in gradi Celsius: ");
    scanf("%lf", &celsius);

    /* Conversione */
    fahrenheit = COEFFICIENTE * celsius + TERMINE_NOTO;

    /* Output */
    printf("La temperatura in gradi Fahrenheit è: %lf\n", fahrenheit);

    return 0;
}

Provando ad eseguire il programma, otteniamo un output simile al seguente:

Inserisci la temperatura in gradi Celsius: 25
La temperatura in gradi Fahrenheit è: 77.000000

In Sintesi

Il succo di questa lezione è il seguente:

  • Le costanti sono valori che non cambiano durante l'esecuzione del programma;
  • Per definire costanti in linguaggio C si utilizza la direttiva di precompilazione #define;
  • La sintassi generale per definire una costante è #define NOME_COSTANTE valore;
  • È consigliato scrivere i nomi delle costanti in maiuscolo per distinguerle facilmente dalle variabili.

Le costanti sono uno strumento molto utile per rendere il codice più leggibile e manutenibile. Conviene adoperarle ogniqualvolta si ha il bisogno di introdurre valori fissi all'interno di un programma.

Nella prossima lezione studieremo un importante argomento della programmazione in C: gli identificatori.