第48章:10岁的小老师
    他象一块干燥的海绵,疯狂吸收着关于这两台机器的知识。

    苹果II上,他用BASIC写简单的图形程序,画会动的星星、跳动的音符;8086上,他学DOS命令,用DEBUG工具看内存,甚至尝试用汇编语言写几行小程序(虽然语法生涩,但逻辑清淅)。

    他的进步快得惊人。

    两周后,他就能用苹果II的BASIC写一个贪吃蛇游戏——用方向键控制小方块移动,吃到随机出现的食物后变长,撞到边界或自己身体则游戏结束。

    虽然画面是粗糙的字符和简单图形,但逻辑完整,运行流畅。

    张老师看到后,惊讶得半天说不出话:“这……这得学多久才能写出来?”

    “三天,每天放学后练两小时。”陆沉说。

    张老师沉默了。

    他知道陆沉没说谎,但三天写出一个可运行的贪吃蛇,在任何一本编程教材里都是进阶案例,而这个十岁的孩子,只用了三天。

    陆沉的计算机能力很快在实验班传开。

    孙鹏缠着他教怎么改游戏参数,陈浩想了解硬件原理,刘宇则和他讨论算法优化。

    陆沉从不藏私,但也不会主动眩耀。

    他帮孙鹏修改了贪吃蛇的移动速度,给陈浩解释了8086的寄存器结构(用修农机时齿轮传动打比方),和刘宇一起用数学公式优化了图形绘制效率。

    ——

    特权带来的意料之中的副作用,就是学霸三人组的请教越来越频繁。

    每天下午放学后,陆沉钻进里间机房没多久,外间就会响起试探性的敲门声,或者干脆是孙鹏那标志性的大嗓门隔着门板传来:“沉子!开门!救命!”

    这天周四,陆沉正在8086 PC机上,尝试用DEBUG工具查看一段简单的汇编程序在内存中的加载情况。

    门又被敲响了,节奏急促。

    陆沉保存好进度,起身开门。

    门口站着三个人:一脸苦相的孙鹏,眉头紧锁的陈浩,还有抱着本厚厚《数学物理方法》的刘宇。

    “沉子,江湖救急!”孙鹏率先挤进来,指着外间一台中华学习机,“我的坦克大战,好不容易改了参数,坦克跑得飞快,可一开火就死机!肯定是哪个数据溢出搞崩了!”

    陈浩则递过来一张手绘的草图,上面画着8086 CPU的方块图,用箭头标注着数据流,旁边写着密密麻麻的问题:“你上次说AX、BX这些寄存器像齿轮箱里的不同齿轮,负责传递不同力道的的数据。那如果同时有多个力道要处理,CPU怎么知道先转哪个齿轮?还有这个时钟周期,是不是就象柴油机的曲轴转一圈,完成一个动作?”

    刘宇没说话,只是把手里那本《数学物理方法》翻到某一页,指着上面一个用级数展开近似计算积分的公式,又指了指里间那台苹果II:“我在想,如果要用计算机数值求解这个积分,是不是得把这个连续过程离散化?离散的步长怎么取,才能在精度和计算量之间取得平衡?我用BASIC写了个循环试算,但结果不太对,感觉是舍入误差累积了。”

    陆沉看着眼前三位同学,一个游戏崩溃,一个刨根问底钻研硬件原理,一个试图用计算机解决高阶数学问题。

    他忽然觉得这场面有点熟悉,仿佛回到了前世的实验室,同事们拿着各自的问题来找他讨论。

    “一个个来。”陆沉把门完全打开,让三人进来。

    里间空间不大,一下子显得有点拥挤。

    他先走到孙鹏的机器前。

    孙鹏的坦克大战是他用BASIC模仿的,图形极其简陋,用字符表示坦克和墙壁。

    陆沉调出源码,快速浏览。

    “你这里,”。你想让子弹发射位置靠前一点,想法没错。会不会超过屏幕边界。当坦克贴边时,这个计算值可能为负或超过最大值,导致数组越界,访问了不该访问的内存地址,程序就崩了。”

    “边界检查……”孙鹏恍然大悟,“我光想着让坦克跑得快,忘了子弹出生点也可能出界!那怎么办?每发一颗子弹都判断一下?”

    “加个IF语句判断计算后的坐标是否在有效范围内,如果非法,就修正到边界值,或者干脆不允许发射。”陆沉说着,接过键盘,快速加了四行条件判断。

    运行,坦克贴边开火,子弹稳稳出现在边界处,不再死机。

    “神了!”孙鹏一拍大腿,“就这么简单?我怎么就没想到!”

    “经验问题。多写多崩几次,就有感觉了。”陆沉笑了笑。

    这确实是经验,前世调试程序时,边界条件是最容易出错的角落之一。

    接着是陈浩。

    陆沉拿过他那张手绘的CPU图,看了几眼,发现陈浩的理解已

本章未完,请点击下一页继续阅读>>