陳 凱
許多教師喜歡用盛水的玻璃杯來給學(xué)生演示兩個變量間交換值的過程,一般是取三只杯子,姑且稱之為杯子A、杯子B、杯子C,其中杯子A和B盛水,杯子C空著,可通過杯子C的臨時存儲,實(shí)現(xiàn)杯子A和B交換水的過程:杯子A的水倒給杯子C,杯子B的水倒給杯子A,杯子C的水倒給杯子B。不過,假如變量是玻璃杯,情況還真不是那樣簡單,以Ruby代碼為例,借助第三個變量實(shí)現(xiàn)變量A和變量B之間值的交換代碼是C=A;A=B;B=C。注意其中的第一步,當(dāng)把變量A中的值賦予C之后,A的值仍然保持原樣。而在用玻璃杯交換水的操作過程中,當(dāng)杯子A中的水傾倒給杯子C后,杯子A就“自動”清零了。
顯然,通過杯子交換的是一種物質(zhì)實(shí)體,用變量交換的是信息,兩者的不同通過一個簡單的換水實(shí)驗(yàn)就顯現(xiàn)出來了,這恰巧就是信息技術(shù)課程基礎(chǔ)部分的內(nèi)容之一。不過再深入一層,假如程序語言中的變量的確就是一些沒有刻度且大小一致的玻璃杯,而允許操作者可做的事情只有放水、倒水、在兩個杯子間比較水位,那么,這個程序語言系統(tǒng)還能做哪些事情呢?下面描述的就是這樣一個假想中的玻璃杯程序語言系統(tǒng)。
● 玻璃杯程序代碼
倒水符“<<<”:這是必然要新添加的程序保留字,用來描述將一只杯子里的水全部注入到另一只杯子中的情況,例如C<< 賦值符“=”:用來描述通過水龍頭向杯子放水,使之水位與另一只杯子持平,當(dāng)然,也可通過向水槽倒走多余的水達(dá)到同樣的目的。假如C杯初始狀態(tài)是空的,那么C=A就表示,向C注水直至其水位與A持平。通過水龍頭放水以及向水槽倒水的方法,就能比較真實(shí)地通過玻璃杯模擬兩個變量之間交換值的過程了。 減水符“-”:有兩只杯子,要從水多的杯子中減去水少的杯子中的水量,但減走的水并不是拋棄到水槽里,而是倒給第三個空杯,則借用符號“-”,但必然在一個聯(lián)合的過程中使用此符號,如C<<<(A-B)。 ● 代碼示范 A中的水增加到B中,但A保持原樣:C=A;B<<