有一些操作(例如在排序的時候)會用到把兩個變數的內容交換的操作,有一些程式語言支援了交換變數內容的命令(例如BASIC的SWAP),也有一些語言直接在語法上操作就可以達成(例如Python的 a, b = b, a),但是如果都沒有這些支援的時候,該如何用變數的操作來達成交換兩個變數內容的目的呢?

假設我們有兩個變數,分別是a和b,其內容分別是10和20,一開始的程式積木設定如下:

如果我們想要交換a和b的內容,若是使用以下的積木,同學們覺得可以達成目標嗎?如果不行,在執行之後,a和b的內容又分別為多少呢?

結果是最後兩個數的內容都是20。為什麼?因為一開始a的內容被設定為b,也就是a的內容一開始就被覆蓋了,所以在第二個積木中的a已經不是原來的a了,因此就會變成大家都是b的內容。那麼該如何解決呢?解決的方法就是,一開始就要把原有a的內容先保存起來,等到要設定b的時候,再把保存的內容(原來的a)拿回來就好了。

我們的作法是,再增加一個變數temp用來保存舊的a值,然後就可以放心地把b的內容放到a,等到要設定b的時候再從temp裡面拿就可以了,程式積木如下:

是不是還滿簡單的?那麼,如果要交換的是清單中的資料項目,又該如何呢?請看下一篇文章的說明。

(1221)