如果变量是玻璃杯

2009-03-31 07:23
中国信息技术教育 2009年5期
关键词:中水水槽玻璃杯

陈 凯

许多教师喜欢用盛水的玻璃杯来给学生演示两个变量间交换值的过程,一般是取三只杯子,姑且称之为杯子A、杯子B、杯子C,其中杯子A和B盛水,杯子C空着,可通过杯子C的临时存储,实现杯子A和B交换水的过程:杯子A的水倒给杯子C,杯子B的水倒给杯子A,杯子C的水倒给杯子B。不过,假如变量是玻璃杯,情况还真不是那样简单,以Ruby代码为例,借助第三个变量实现变量A和变量B之间值的交换代码是C=A;A=B;B=C。注意其中的第一步,当把变量A中的值赋予C之后,A的值仍然保持原样。而在用玻璃杯交换水的操作过程中,当杯子A中的水倾倒给杯子C后,杯子A就“自动”清零了。

显然,通过杯子交换的是一种物质实体,用变量交换的是信息,两者的不同通过一个简单的换水实验就显现出来了,这恰巧就是信息技术课程基础部分的内容之一。不过再深入一层,假如程序语言中的变量的确就是一些没有刻度且大小一致的玻璃杯,而允许操作者可做的事情只有放水、倒水、在两个杯子间比较水位,那么,这个程序语言系统还能做哪些事情呢?下面描述的就是这样一个假想中的玻璃杯程序语言系统。

● 玻璃杯程序代码

倒水符“<<<”:这是必然要新添加的程序保留字,用来描述将一只杯子里的水全部注入到另一只杯子中的情况,例如C<<

赋值符“=”:用来描述通过水龙头向杯子放水,使之水位与另一只杯子持平,当然,也可通过向水槽倒走多余的水达到同样的目的。假如C杯初始状态是空的,那么C=A就表示,向C注水直至其水位与A持平。通过水龙头放水以及向水槽倒水的方法,就能比较真实地通过玻璃杯模拟两个变量之间交换值的过程了。

减水符“-”:有两只杯子,要从水多的杯子中减去水少的杯子中的水量,但减走的水并不是抛弃到水槽里,而是倒给第三个空杯,则借用符号“-”,但必然在一个联合的过程中使用此符号,如C<<<(A-B)。

● 代码示范

A中的水增加到B中,但A保持原样:C=A;B<<

A中的水与B中的水相加,结果存于C,A和B清空:C=0;C<<

A中的水与B中的水相加,结果存于C,A和B维持原样:D=A;C=B;C<<

小测验

1.A=B操作与A<<

2.A中水多于B中水,要求从A中倒走部分水,使A中水与B持平,但减走的水不能丢弃,必须保存于C,这个过程的玻璃杯代码可能是怎么样的?

3.某一个非常重要且可行的玻璃杯运算符被漏掉了,谁能找出来呢?(答案本期找)

注:部分读者可能会对本期文章的教学目的产生一些困惑,特意在此附加一些说明。信息技术的一个很鲜明的特点,就是使用某个符号系统对现实对象的某些侧面进行描述。对于学生来说,他们通常只是被动地接受这些描述规则,并训练如何使用这些规则。而玻璃杯程序语言系统则提供了一个自行建立并优化符号系统的机会。显然,这是一个发散性很强的任务,要鼓励学生用非常规的思路去“杜撰”,但又要通过具体实验,检验这个“杜撰”的系统是否能有效地工作。

猜你喜欢
中水水槽玻璃杯
可升降折叠的饮水机水槽
“粘”在一起的玻璃杯
城市中水回用的问题研究及对策探讨
为什么水槽管要做成弯曲状
水槽过滤片
中水是一种什么样的水?
中水回用技术在丹东金山电厂的应用
穿越玻璃杯
化学反应中水的多种角色