Fondamenti Di Programmazione

Scambio Valore

Spiegazione dell'algoritmo di Scambio di Valore (Swap) tra due variabili in Pseudocodice e Flowgorithm: perché serve una variabile temporanea di appoggio per evitare la perdita del dato in RAM.

Durata

10 minuti

Software

Flowgorithm / Pseudocodice

Linguaggio

Diagrammi di Flusso

Le Variabili | Scambio Valore

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 temp deve essere di tipo intero).
  • Viene svuotata o ignorata: una volta completata l'operazione di scambio, il valore contenuto in temp non 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 appoggio temp.
  • Passo 2 (a = b): Sovrascriviamo a copiandovi dentro il valore di b (possiamo farlo in sicurezza perché a è salvata in temp).
  • Passo 3 (b = temp): Copiamo in b il valore originale di a recuperandolo da temp.

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

🧠 Stato Memoria RAM [Prima dello Swap]
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

🧠 Stato Memoria RAM dopo 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

🧠 Stato Memoria RAM dopo 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

🧠 Stato Finale Memoria RAM [Swap Completato!]
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.

1. Perché lo scambio diretto a = b; b = a; non funziona?

2. Qual è il ruolo della variabile ausiliaria temp nell'algoritmo di Swap?

3. Qual è la sequenza di istruzioni corretta per scambiare il valore tra 'a' e 'b'?

4. Se 'x' vale 20 e 'y' vale 50, cosa c'è dentro 'temp' subito dopo l'istruzione temp = x?

5. Di che tipo deve essere dichiarata la variabile temp rispetto alle variabili da scambiare?


In sintesi

Argomenti: concetti principali, riepilogo, competenze

  1. Lo scambio diretto tra due variabili (a = b) causa la perdita distruttiva del primo valore a causa della sovrascrittura.
  2. L'algoritmo di Swap corretto richiede l'uso di una terza variabile temporanea (temp) per salvare momentaneamente il primo dato durante lo scambio.

Cosa hai imparato
  1. Comprendere perché non è possibile scambiare direttamente il valore di due variabili.
  2. Applicare la sequenza formale in 3 passi dell'algoritmo di Swap con variabile temporanea.
  3. Tracciare l'evoluzione della memoria RAM passo-passo durante l'esecuzione dello scambio.


Variabili, Scambio di Valore, Swap, Variabile Temporanea, RAM, Pseudocodice,