爱因斯坦语惊四座,从陋就简起步编程

编程爱好者

上一回讲到哥伦布对程序的发现起了重大影响,而对于程序起到奠基性作用的人物,还不能不提到一位科学巨人,他就是爱因斯坦。他的奠基性作用和他伟大的相对论和其他物理学原理关系不大,而和一种小家具很有关系,板凳。板凳是我们家中常用的小玩意,四条腿一个面,根本没什么创意,但是,谁的板凳最有名呢?还是大科学家爱因斯坦。

19-f16-1.jpg

爱因斯坦(Albert Einstein,1879-1955),举世闻名的德裔美籍科学家,现代物理学的开创者和奠基人,他是当代最伟大的物理学家。

但是,相传,爱因斯坦的童年远没有上面那么光辉,小时候显得非常愚钝。在学校里,经常受到老师和同学的嘲笑。一次工艺课上,老师从学生的作品中挑出一张做得很不像样的方凳对大家说:“我想,世界上也许不会有比这更糟糕的凳子了!”全班同学哄堂大笑,在笑声中,爱因斯坦红着脸站起来说:“我想,这种凳子是有的!”说着,他从课桌里拿出两张更不像样的凳子,说:“这是我前两次做的,交给您的是第三次做的,虽然还不行,却比这两个强得多!”老师目瞪口呆,坐在那里不知说什么好。

我们的问题是,你能不能告诉他,做方凳需要多大面积的木板?需要多长的皮条包着板凳边?

爱因斯坦的板凳问题需要我们做的,就是求一个正方形的面积,外加周长。如何走出第一步呢?像爱因斯坦做板凳那样,先做出一个地球上最简陋的板凳。问题成了?有没有比爱因斯坦的第一个小板凳还糟糕的板凳呢?

有!下面我们就用它来帮助我们编程。这种方法叫做:五步树梯法。

五步树梯法解题:

第一步:树梯子

这是最简单的一个框框(如图1),但却是我们开始的第一步,由图我们可以看出,一个大问题分成了三部分,你什么都可以不考虑,但这步却不可能不会:)为什么选择这么个图呢?因为再简单的小问题,都可以分为三部分,已知条件(第一框),想得到的结果(第三框)和将已知和结果结合起来的中间部分(第二部分)。通过电脑解题,要有一个大致的前后关系。

19-f16-2.jpg
图1

第二步:做头尾

19-f16-3.jpg
图2

上面的三部分,先分析开头和结尾部分,开头是什么呢?题中的输入条件,也就是需要输入电脑的原始数据。结尾是什么呢?处理完成后的结果。具体到我们的题目中,开头是输入板凳的边长a,输出则有两个,一个是板凳的面积,一个是板凳的周长,即皮条长度,分别用s和l来表示。

第三步:连头尾

19-f16-4.jpg
图3

如何将开头和结尾连接起来呢?这就是下面的很重要的问题,问题又可分成两个小问题(图3),要么先求周长后求面积,要么先求面积后求周长。我们选择第一个办法,这一部分又分成了两部分。怎样求呢?一部分一部分地通过公式解决(如图4)。

19-f16-5.jpg
图4

第四步:贴语法

各个语句和具体语言的语法还有一定的差距,根据相应语言,还要再将相应语句转化(如图5示)。

19-f16-6.jpg
图5

第五步:写代码

下面可以写代码了。

Input a

s=a*a

l=4*a

print s,l

(以上用QBASIC语言写成)

我们上面启用的方法是对N—S图的综合。为什么要画图呢?通过图形化的方式,可以有效地控制我们的思路,找出当前问题处理的关键点,通过对关键点的突破,实现问题的最终解决。N-S图正可以起到这个作用,让我们像爱因斯坦那样,看到我们前进路上的前一个小板凳。

阿兰开讲:

有人会问,也有人会笑,这样简单的题目,编出来有什么意义吗?有爱因斯坦的前两张板凳就是很好的回答。程序需要步骤,学习编程序更需要步骤。

爱因斯坦的小板凳告诉我们的最重要的是:大胆走出最容易的第一步,只有走出这第一步,后面才会越来越光明。拿出笔来,动起手来,大胆地走出第一步!

小测验:

一只熊,向南走一里,又向东走一里,然后又向北走一里,结果回到了起点。问这只熊是什么颜色?

上期小测验参考答案:

酋长问题中的关键是:一副手套的一面只能一个人使用,这样就能保证四个人不会交叉感染,怎样才能实现呢?具体到题中即一人一面。

四个人的关系通过三次检查确定下来,所以检查可分成三步:

1.甲医生给酋长检查;

2.乙医生给酋长检查;

3.丙医生给酋长检查。

但检查的过程中还要保证一人一面,因为两副手套只有四个面,所以酋长的面用了三次,其他各人的只能用一次,在上面三个步骤中必须保证这一点。用A和B分别表示两副手套,用1,2表示内外两面。操作的步骤如下:

1.甲医生用B1给酋长面A2检查,检查时须将手套套起来。

2.乙医生用A1给酋长面A2检查,检查之前须将B手套脱下。

3.丙医生给B2给酋长面A2检查,检查之前须将B手套内外翻转,然后套在A手套中。