Linguaggio di programmazione - Wikipedia
La teoria dei linguaggi di programmazione è il sottocampo dell'informatica che studia la progettazione, l'implementazione, l'analisi, la caratterizzazione e la ...
assegnamento
Nei linguaggi imperativi l'istruzione è un comando esplicito, che opera su una o più variabili oppure sullo stato interno della macchina, e le istruzioni vengono eseguite in un ordine prestabilito. Scrivere un programma in un linguaggio imperativo significa essenzialmente occuparsi di cosa la macchina deve fare per ottenere il risultato che si vuole, e il programmatore è impegnato nel mettere a punto gli algoritmi necessari a manipolare i dati. Le strutture di controllo assumono la forma di istruzioni di flusso (GOTO, FOR, IF/THEN/ELSE ecc.) e il calcolo procede per iterazione piuttosto che per ricorsione. I valori delle variabili sono spesso assegnati a partire da costanti o da altre variabili ( <anchor>assegnamento</anchor>) e raramente per passaggio di parametri (istanziazione).
Operatore di assegnamento - Wikipedia
# Operatore di assegnamento

Da Wikipedia, l'enciclopedia libera.

Questa voce o sezione sull'argomento programmazione non cita le fonti necessarie o quelle presenti sono insufficienti.

Questa voce o sezione sull'argomento informatica non è ancora formattata secondo gli standard.

In informatica l' operatore di assegnamento imposta o reimposta il valore memorizzato nella posizione di memoria associata a una variabile "Variabile (informatica)").[1] Nella maggior parte dei linguaggi di programmazione imperativa l' istruzione di assegnamento è una delle istruzioni "Istruzione (informatica)") fondamentali.

L'operatore di assegnamento consente normalmente di assegnare alla stessa variabile valori diversi in tempi diversi durante l'esecuzione del programma.

## Indice

## Notazioni

Le 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 "C (linguaggio di programmazione)"), nei quali l'operatore di assegnamento è un operatore "Operatore (informatica)") infisso (occupa una posizione intermedia fra i due operandi).

`variabile = espressione`BASIC, Fortran, [C](/wiki/C(linguaggio_di_programmazione) "C (linguaggio di programmazione)"), Java "Java (linguaggio di programmazione)"), Windows PowerShell, Bourne shell, …`variabile := espressione`ALGOL, Pascal "Pascal (linguaggio di programmazione)"), Ada "Ada (linguaggio di programmazione)"), Dylan "Dylan (linguaggio di programmazione)"), PL/SQL, …_

Altre possibilità sono una freccia, una parola chiave ( keyword), una combinazione di keyword e operatore.

`variabile &lt;- espressione`Objective Caml, [S](/wiki/S(linguaggio) "S (linguaggio)"), R "R (linguaggio di programmazione)"), ...
`espressione -&gt; variabile`R "R (linguaggio di programmazione)")`variabile ← espressione`APL`LET variabile = espressione`BASIC`MOVE espressione TO variable`COBOL`set variabile to espressione`AppleScript`set variabile = espressione`C shell`Set-Variable variabile (espressione)`Windows PowerShell_variabile <= espressione
VHDL

Alcuni linguaggi orientati alle espressioni, come il Lisp e il Tcl, usano uniformemente una sintassi prefissa per tutti gli statements, incluso l'assegnamento.

`(setq variabile espressione)`Lisp, Scheme ( `set!`), …`set variabile espressione`Tcl

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'' `-&gt;` di R, costrutto `MOVE...TO` del COBOL).

In ogni caso, qualunque sia la convenzione, la direzione dell'assegnamento è prefissata ed è un errore scambiare le posizioni di `variabile` ed `espressione`.

## Operazioni

Dal 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:

- L' `espressione` è valutata nello stato attuale del programma.
- Alla `variabile` è assegnato il valore calcolato, sostituendo il valore precedente della variabile.

Esempio: assumendo che `a` sia una variabile numerica, l'assegnamento `a := 2*a` significa che il contenuto della variabile `a` è raddoppiato dopo l'esecuzione dell'istruzione.

Un esempio in codice C "C (linguaggio di programmazione)"):

In questo esempio, la variabile `x` è prima dichiarata come un `int`, e gli è assegnato il valore 10. Si noti che la dichiarazione e l'assegnamento avvengono nella stessa istruzione. Nella seconda linea `y` è dichiarata senza assegnazione. Nella terza riga alla variabile `x` è riassegnato il valore 23. Infine, a `y` è assegnato il valore 32.4.

In un'operazione di assegnamento è necessario che il valore dell' `espressione` sia ben definito (deve essere un valido rvalue) e che `variabile` rappresenti un'entità modificabile (cioè sia un valido lvalue non-const). In alcuni linguaggi, come il Perl, non è necessario dichiarare una variabile prima di assegnargli un valore.

### Assegnamento parallelo

Alcuni linguaggi di programmazione, come il Python, Perl, Ruby "Ruby (linguaggio di programmazione)"), Windows PowerShell, e JavaScript (dalla 1.7), consentono a diverse variabili di essere assegnate in parallelo. In pseudocodice:

che assegna simultaneamente 0 a `a` e 1 a `b`. Se la parte destra di un assegnamento è un tipo di array di variabili, questa caratteristica è chiamata sequence unpacking:

La lista è spacchettata in modo che 0 sia assegnato a `a` e 1 a `b`. Più interessante,

Scambia i valori di `a` e `b` . In un linguaggio senza l'assegnazione parallela, questo avrebbe dovuto essere implementato con l'uso di una variabile temporanea:

poiché `a:=b ; b:=a` lascia sia `a` che `b` con il valore originario di `b`.

### Valore di un assegnamento

Nella 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 `x = y = a` che assegna il valore di `a` sia a `x` che a `y`, e `while (f = read()) {…}`, che assegna il valore restituito da una funzione a una variabile, e nello stesso tempo lo usa per controllare un ciclo.

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 "ML (linguaggio di programmazione)") e in Haskell "Haskell (linguaggio)"), non c'è nessun operatore di assegnamento

## Assegnamento e assegnamento singolo

In 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 `let nome = valore`; tuttavia, il vero assegnamento può essere usato sugli elementi degli array e delle strighe con l'operatore `&lt;-`.
.

## Assegnamento e uguaglianza

I programmatori inesperti a volte confondono l'operatore di assegnamento con l'operatore relazionale di uguaglianza, poiché "=" in matematica significa uguaglianza "Uguaglianza (matematica)"), 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 "C (linguaggio di programmazione)"), 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 `if`, l'operatore di assegnamento ritornerà un valore che è molto probabile che venga valutato come `TRUE`, e sarà quindi valutata la clausola `then`, facendo comportare il programma in modo inatteso. Alcuni compilatori possono trovare queste situazioni, e avvisare il programmatore per un potenziale errore.

## Note

Categorie nascoste:

## Menu di navigazione

### Strumenti personali

### Namespace

italiano

### Visite

Altro

### Ricerca

### Navigazione

### Comunità

### Strumenti

### Stampa/esporta

### In altri progetti

### In altre lingue