Lo Scambio di Valore (Swap) tra Variabili
Argomenti: algoritmo di Swap, variabile temporanea, sovrascrittura distruttiva, traccia della RAM
Lo scambio di valore (o Swap) è l'operazione con cui si invertono i contenuti di due variabili dello stesso tipo (ad esempio far passare il valore di a in b e quello di b in a).
1. Perché lo Scambio Diretto NON Funziona?
L'errore più comune tra i principianti è pensare di poter invertire i valori eseguendo due assegnazioni dirette:
❌ Tentativo Errato: a = b; b = a;
Che cos'è una Variabile di Appoggio (o Ausiliaria)?
Una variabile di appoggio (spesso chiamata temp, abbreviazione di temporanea) è una variabile speciale usata come "parcheggio momentaneo" durante l'esecuzione di un algoritmo.
A differenza delle variabili principali del programma (che contengono i dati di lavoro), la variabile di appoggio:
- Ha vita breve: serve unicamente per conservare una copia di backup di un dato per pochissimi istanti.
- Stesso Tipo di Dato: deve essere dichiarata dello **stesso identico tipo** della variabile che deve ospitare (es. se dobbiamo scambiare due numeri interi, anche
tempdeve essere di tipo intero). - Viene svuotata o ignorata: una volta completata l'operazione di scambio, il valore contenuto in
tempnon serve più al programma.
Definizione: Variabile Ausiliaria
Una variabile ausiliaria o di appoggio è una celletta di memoria temporanea creata dal programmatore per salvare transitoriamente un dato a rischio sovrascrittura. Non partecipa all'output finale del programma, ma è essenziale per la logica interna dell'algoritmo.
A causa della sovrascrittura distruttiva, eseguendo a = b la variabile a riceve il valore di b, ma il suo valore originario viene cancellato per sempre dalla RAM. La riga successiva b = a si limiterà a ricopiare il valore appena sovrascritto, ritrovandoci con due variabili identiche!
L'Analogia dei Due Bicchieri
Immagina di avere un bicchiere di Acqua (A) ed uno di Aranciata (B). Per versare l'Aranciata nel bicchiere dell'Acqua senza mescolarle o rovesciarle, hai necessariamente bisogno di un terzo bicchiere vuoto di appoggio (Temp).
2. L'Algoritmo di Swap Corretto (in 3 Passi)
Per scambiare correttamente i dati dobbiamo introdurre una terza variabile ausiliaria di supporto, comunemente chiamata temp (temporanea):
1. temp = a | 2. a = b | 3. b = temp
- Passo 1 (
temp = a): Salviamo una copia del valore di a dentro la variabile di appoggiotemp. - Passo 2 (
a = b): Sovrascriviamo a copiandovi dentro il valore di b (possiamo farlo in sicurezza perché a è salvata intemp). - Passo 3 (
b = temp): Copiamo in b il valore originale di a recuperandolo datemp.
3. Traccia della Memoria RAM Passo-Passo
Inizializziamo a = 5 e b = 10. Osserva come cambiano le celle di memoria RAM ad ogni singolo passo dell'algoritmo:
Stato 0: Inizializzazione delle Variabili
| Indirizzo RAM | Nome Variabile | Tipo | Valore in RAM |
|---|---|---|---|
0x00A1 |
a | Intero | 5 |
0x00A5 |
b | Intero | 10 |
0x00A9 |
temp | Intero | INDEFINITO |
Passo 1: Salvataggio in Appoggio temp = a
temp = a
| Indirizzo RAM | Nome Variabile | Tipo | Valore in RAM |
|---|---|---|---|
0x00A1 |
a | Intero | 5 |
0x00A5 |
b | Intero | 10 |
0x00A9 |
temp | Intero | 5 Copia di 'a' Salvata |
Passo 2: Copia di B in A a = b
a = b
| Indirizzo RAM | Nome Variabile | Tipo | Valore in RAM |
|---|---|---|---|
0x00A1 |
a | Intero | 10 Riceve 10 da 'b' |
0x00A5 |
b | Intero | 10 |
0x00A9 |
temp | Intero | 5 |
Passo 3: Recupero da Appoggio in B b = temp
| Indirizzo RAM | Nome Variabile | Tipo | Valore in RAM |
|---|---|---|---|
0x00A1 |
a | Intero | 10 |
0x00A5 |
b | Intero | 5 Riceve 5 da 'temp' |
0x00A9 |
temp | Intero | 5 |
Risultato Finale: Ora la variabile a contiene 10 e la variabile b contiene 5. Lo scambio si è concluso con successo!
Quiz di Verifica: Lo Scambio di Valore
Rispondi alle 5 domande per verificare se hai compreso la logica dell'algoritmo di Swap e l'uso della variabile temporanea.
In sintesi
Argomenti: concetti principali, riepilogo, competenze
- Lo scambio diretto tra due variabili (a = b) causa la perdita distruttiva del primo valore a causa della sovrascrittura.
- L'algoritmo di Swap corretto richiede l'uso di una terza variabile temporanea (temp) per salvare momentaneamente il primo dato durante lo scambio.
- Comprendere perché non è possibile scambiare direttamente il valore di due variabili.
- Applicare la sequenza formale in 3 passi dell'algoritmo di Swap con variabile temporanea.
- Tracciare l'evoluzione della memoria RAM passo-passo durante l'esecuzione dello scambio.