Operatore di assegnamentoIn informatica l'operatore di assegnamento imposta o reimposta il valore memorizzato nella posizione di memoria associata a una variabile.[1] Nella maggior parte dei linguaggi di programmazione imperativa l'istruzione di assegnamento è una delle istruzioni fondamentali. L'operatore di assegnamento consente normalmente di assegnare alla stessa variabile valori diversi in tempi diversi durante l'esecuzione del programma. NotazioniLe rappresentazioni testuali più comuni per l'assegnamento sono il simbolo di uguale (“=”) e “:=”. Queste due forme sono tipiche nei linguaggi di programmazione, come il C, nei quali l'operatore di assegnamento è un operatore infisso (occupa una posizione intermedia fra i due operandi).
Altre possibilità sono una freccia, una parola chiave (keyword), una combinazione di keyword e operatore.
Alcuni linguaggi orientati alle espressioni, come il Lisp e il Tcl, usano uniformemente una sintassi prefissa per tutti gli statements, incluso l'assegnamento. In molti degli esempi precedenti l'assegnazione ''procede'' da destra verso sinistra, ovvero la variabile si trova sul lato sinistro dell'espressione di assegnamento, mentre a destra si trova il valore (o l'espressione) da assegnare. L'operatore = è sempre usato in questo modo. In alcuni casi invece si segue la convenzione opposta (operatore ''freccia a destra'' In ogni caso, qualunque sia la convenzione, la direzione dell'assegnamento è prefissata ed è un errore scambiare le posizioni di OperazioniDal punto di vista semantico, un operatore di assegnazione modifica lo stato corrente di un programma in esecuzione. Di conseguenza, un'assegnazione dipende dal concetto di variabile. In un'assegnazione:
Esempio: assumendo che Un esempio in codice C: int x = 10;
float y;
x = 23;
y = 32.4;
In questo esempio, la variabile In un'operazione di assegnamento è necessario che il valore dell' Assegnamento paralleloAlcuni linguaggi di programmazione, come il Python, Perl, Ruby, Windows PowerShell, e JavaScript (dalla 1.7), consentono a diverse variabili di essere assegnate in parallelo. In pseudocodice: a,b := 0,1 che assegna simultaneamente 0 a var list := 0,1 a,b := list La lista è spacchettata in modo che 0 sia assegnato a a,b := b,a Scambia i valori di var t := a a := b b := t poiché Valore di un assegnamentoNella maggior parte dei linguaggi di programmazione orientati alle espressioni, un'istruzione di assegnamento è anche un'espressione, il cui valore è il valore assegnato. Questo consente costrutti tipici, come per esempio in C In altri linguaggi di programmazione, un'istruzione di assegnamento non è un'espressione, e quindi non ha un valore: in questi casi costrutti di questo genere non sono possibili. Un caso di questo tipo è rappresentato da Scheme. Anche in Python l'assegnamento non è un'espressione, e quindi non ha nessun "valore". In ML e in Haskell, non c'è nessun operatore di assegnamento Assegnamento e assegnamento singoloIn programmazione funzionale l'assegnamento è sconsigliato in favore del singolo assegnamento, anche chiamato name binding o inizializzazione. L'assegnamento singolo è diverso dall'assegnazione descritta in quanto può essere fatto solo una volta, tipicamente quando la variabile è creata; non sono consentite ulteriori assegnazioni. Una volta creato per assegnamento, il nome della variabile non è una variabile ma un oggetto immutabile. Il singolo assegnamento è l'unica forma di assegnamento disponibili nei linguaggi funzionali puri, come l'Haskell, che non ha il concetto di variabili nel senso dei linguaggi imperativi. Linguaggi funzionali impuri consentono sia l'assegnamento singolo che l'assegnamento normale (anche se è usato meno che nella programmazione imperativa).
Per esempio, in Scheme, si può usare sia il singolo assegnamento che l'assegnamento vero per tutte le variabili. In OCaml, solo il singolo assegnamento è consentito con la sintassi Assegnamento e uguaglianzaI programmatori inesperti a volte confondono l'operatore di assegnamento con l'operatore relazionale di uguaglianza, poiché "=" in matematica significa uguaglianza, ed è usato come operatore di assegnazione in molti linguaggi. Tuttavia l'assegnamento modifica il valore di una variabile, mentre l'uguaglianza è un test che verifica se due espressioni hanno lo stesso valore. In molti linguaggi l'operatore di assegnamento è un singolo simbolo di uguale ("=") mentre l'operatore di uguaglianza è una coppia di uguali ("=="); in alcuni linguaggi, come il BASIC, un unico simbolo è usato per entrambi, e sono discriminati in base al contesto. Questo può portare errori se non viene usata la forma appropriata (=, ==, :=). Questo è un problema comune con i linguaggi come il C, nei quali l'operatore di assegnamento ritorna il valore assegnato, e può essere annidato in modo valido dentro un'espressione (come una funzione che ritorna un valore). Se per esempio l'intenzione era di confrontare due valori in un'istruzione Note
|