Costanti e Variabili
💾 Dove vivono i dati?
Section titled “💾 Dove vivono i dati?”Ogni programma, anche il più semplice, ha bisogno di ricordare delle informazioni durante la sua esecuzione: la temperatura letta da un sensore, quante volte è stato premuto un pulsante, se un LED è acceso o spento, eccetera…
In C++, questi dati vengono salvati in due modi diversi a seconda di una domanda fondamentale: questo valore cambierà mai durante l’esecuzione del programma?
- Se la risposta è no -> si usa una Costante
- Se la risposta è sì -> si usa una Variabile
🔒 Costanti
Section titled “🔒 Costanti”Una costante è un valore fissato una volta per sempre. Arduino lo legge, lo usa, ma non può mai modificarlo durante l’esecuzione del programma.
Analogia: Il numero civico di casa tua
Section titled “Analogia: Il numero civico di casa tua”Il tuo indirizzo di casa non cambia mentre sei fuori a passeggiare. È scritto sul campanello ed è sempre quello. Una costante funziona allo stesso modo: è un’etichetta fissa che punta sempre allo stesso valore.
Sintassi: #define
Section titled “Sintassi: #define”Per definire una costante si usa la direttiva #define, che va scritta in cima al file, prima di tutto il resto.
📦 Variabili
Section titled “📦 Variabili”Una variabile è una “scatola” nella memoria di Arduino a cui diamo un nome. Il contenuto di questa scatola può essere letto e modificato quante volte si vuole durante l’esecuzione del programma.
Analogia: monete in un videogioco
Section titled “Analogia: monete in un videogioco”Pensa a un contatore di monete in un videogioco. Parte da 0, poi sale ogni volta che si raccoglie una moneta, scende se si compra qualcosa, eccetera. Il valore cambia continuamente: è una variabile.
Come si dichiara una variabile
Section titled “Come si dichiara una variabile”Per creare una variabile bisogna specificare tre cose:
- Il tipo di dato che conterrà (numero intero / decimale / vero o falso)
- Un nome per identificarla
- Un valore
🏷️ Data Types
Section titled “🏷️ Data Types”C++ vuole sapere che tipo di informazione si metterà in una variabile. Questo perché tipi diversi occupano quantità diverse di memoria, e le operazioni che si possono fare su di essi cambiano.
Numeri Interi: int
Section titled “Numeri Interi: int”Usato per numeri senza virgola, positivi o negativi. Occupa 2 byte di memoria, il che gli impone un range preciso di valori rappresentabili.
Numeri Interi Grandi: long
Section titled “Numeri Interi Grandi: long”Quando i valori da memorizzare superano i limiti di int, si usa long. Occupa 4 byte di memoria (il doppio di int) e può quindi contenere numeri molto più grandi.
Numeri Decimali: float
Section titled “Numeri Decimali: float”Usato per numeri con la virgola. Attenzione: in C++ il separatore decimale è il punto, non la virgola.
Logica: bool
Section titled “Logica: bool”Può contenere solo due valori: true (vero) oppure false (falso). Perfetto per tenere traccia di stati: il LED è acceso o spento? Il pulsante è premuto o no?
Carattere singolo: char
Section titled “Carattere singolo: char”Contiene un singolo carattere, scritto tra apici singoli ' '.
Stringa: char[]
Section titled “Stringa: char[]”Per memorizzare una sequenza di caratteri (una parola, una frase), si usa un array di char. Il testo va scritto tra virgolette doppie " ".
Gli array li tratteremo più avanti. Detta in breve, un array è un insieme di dati; in questo caso, una stringa è un insieme di caratteri.
📋 Riepilogo
Section titled “📋 Riepilogo”| Tipo | Cosa contiene | Range | Esempio |
|---|---|---|---|
#define | Costante fissa | - | #define LED_PIN 5 |
int | Numero intero | -32.768 -> 32.767 | int contatore = 0; |
long | Numero intero grande | -2.147.483.648 -> 2.147.483.647 | long ms = 100000; |
float | Numero decimale | ~3.4×10⁻³⁸ -> ~3.4×10³⁸ | float temp = 23.5; |
bool | Vero o falso | true / false | bool acceso = false; |
char | Un singolo carattere | - | char lettera = 'A'; |
char[] | Una stringa di testo | - | char msg[] = "Ciao"; |