Per controllo del flusso si intende tutti quei sistemi usati per gestire Espressioni, comandi, comandi iterativi e ricorsione. Andiamo per ordine.
Un’espressione è un’entità sintattica la cui valutazione produce un valore oppure non termine (in tal caso l’espressione è indefinita).
La sintassi delle espressioni può essere di tre tipi:
a + b
;+ a b
;a b +
.Gestendo gli operatori si presenta subito il problema di stabilire la precedenza e l’associatività fra di essi, di solito con le notazioni infisse (ma non sempre, dipende dal linguaggio) si usano le stesse dell’aritmetica (quindi * / + -, tanto per dirne una); mentre con le notazioni post-fisse la gestione è semplice: si legge il simbolo, se è un operatore si tolgono dalla pila gli operandi immediatamente precedenti e si esegue il calcolo; anche la notazione prefissa è più semplice da gestire della infissa, basta contare gli operandi che vengono letti (quindi è un po’ più complicata della postfissa).
Un comando è un’entità sintattica la cui valutazione non necessariamente restituisce un valore, ma può modificare lo stato della computazione.
I comandi sono tipici dei linguaggi imperativi, mentre sono assenti nei paradigmi funzionali e logici.
Nei linguaggi imperativi una variabile è un contenitore di valori, modificabile, che ha un nome. La modifica del contenitore può avvenire tramite il comando di assegnamento.
L’assegnamento è un comando che modifica il valore di una variabile. Ad esempio:
int x = 2;
x = x + 1;
Normalmente l’assegnazione non restituisce un valore ma produce un cambiamento nello stato della computazione, questo è il comportamento tipico dei linguaggi imperativi.