荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: noid (奥运在北京), 信区: Program
标  题: 大厦是如何建起来的(初稿) *二*
发信站: 荔园晨风BBS站 (Mon Sep 30 13:22:19 2002), 站内信件

3.程序是如何“思考”的
    许多人不能把程序编好,主要的原因还是不能以电脑的思维方式去写程序。
很多问题看似非常简单,对于电脑来说则是非常困难的。要将心比心,以电脑的
角度去思考问题。
    那么,序大体是如何“思考”呢?
    实际上程序是不会思考的!!!可以这样认为,程序是一个木偶,你不要指望
它自己会怎么思考,他只会任你摆布,让你为所欲为(是不是很爽啊? ^_^).其实
不爽,因为这样就意味着你要一步步的教他怎么做,比如你要它走到饭堂,你不
能对它说“走到饭堂去”,你必须对它说:旋转身体到饭香增加梯度最大的方向,
先迈左腿,再迈右腿,如此循环,直到饭香大于某一特定值。当然,如果在函数库
里已经有了go(place *address)就不必如此麻烦,但函数库如果连“迈”都没有定
义或者函数库里的“迈”函数不符合你的要求就得连“迈”的动作都要解释清楚。
主体程序大体可以这样写:
for(u=0;u<360;u=u+0.1){
        if(grad(u)>max||u==0) {max=grad(u);maxu=u;}
}
turn(maxu);
while(饭香<a){
        迈(left);
        迈(right);
}

    要注意思考的严密性。
    因为,程序是坚定不移地执行你的命令的“红卫兵”。所以当你的逻辑有任何缺
陷,或者有考虑不周的地方,程序就会出现难以预料的错误。绝大多数bug都是因此
而产生的。
    比如上面那个程序,如果程序的应用环境中是有可能出现障碍物的,上面那个程
序就考虑不周,应该在每迈完一步后去探测前方有无障碍物,若有则把方向按顺时针
或逆时针转,直到没有障碍物为止。这样就改好了吗?如果你认为这样就把程序改
完,那你就大错特错了,因为你犯了刻舟求剑的错误(这种错误是经常发生的,所以
要十分注意),既然你把方向改了(即是“船”动了),你就应该在前方没有障碍物
的时候再把方向调整到饭香梯度增加最大的方向上(即把“船”开回掉剑的地方),
但在这里还必须要注意,这个梯度增加最大的方向并不是开始探测出来的maxu,因为
你已经偏离了原来的运行轨道(呵呵,又是刻舟求剑陷阱),所以这个方向必须重新
再探测一次。要时刻注意一些量的变化对另一些量的影响!

To be continued
--
勇敢的人不一定长命
但是懦弱的人等于没有活过

※ 修改:·noid 於 Sep 30 17:35:49 修改本文·[FROM: 192.168.32.243]
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.32.243]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店