Skip to content

Expression Statements e Blocchi

Ogni funzione C++ è costituita da una sequenza di Statements (Istruzioni), ovvero costrutti di programmazione che specificano l’ordine di esecuzione. Esploreremo diverse categorie di statement.

“Progress doesn’t come from early risers—progress is made by lazy men looking for easier ways to do things.” — Robert A. Heinlein

Un Expression Statement è semplicemente un’espressione seguita da un punto e virgola (;). L’aggiunta del punto e virgola trasforma una mera valutazione matematica in un comando eseguibile. Rappresentano la fetta predominante del codice in un programma C++.

int main() {
int x{};
++x; // Expression Statement utile (ha un side-effect)
42; // Expression Statement valido sintatticamente, ma totalmente inutile
printf("Risultato: %d\\n", x); // La chiamata a funzione è un Expression Statement
}

Qualsiasi espressione può diventare un’istruzione, ma è utile farlo unicamente se valutare tale espressione scatena un Side Effect (effetto collaterale), come alterare lo stato della memoria (es. ++x) o interfacciarsi con il sistema (es. stampare su console). Un calcolo matematico privo di side-effect (es. 42; o x + 5; senza assegnazione) verrà scartato e brutalmente rimosso dal compilatore.

I Compound Statements, noti più amichevolmente come Blocchi (Blocks), sono una sequenza di istruzioni racchiuse tra parentesi graffe { }. I blocchi sono il mattone fondamentale delle strutture di controllo (come gli if o i for), in quanto permettono di eseguire molteplici istruzioni lì dove la grammatica del C++ ne richiederebbe teoricamente una sola.

La caratteristica essenziale dei blocchi è che ciascun blocco dichiara un nuovo Scope (Ambito), comunemente chiamato Block Scope.

Come abbiamo studiato nel Ciclo di Vita degli Oggetti (Capitolo 4), le variabili automatiche dichiarate all’interno di un blocco hanno una durata di vita (lifetime) vincolata al blocco stesso. Quando l’esecuzione esce fisicamente dalla parentesi graffa di chiusura }, tutte le variabili locali vengono distrutte (distruttori chiamati) nell’ordine inverso rispetto a quello in cui sono state dichiarate.