◆ 、

案例1:正方体的堆积

目标是要得到下面的正方体堆积(来自七年级数学课本)

解决方法1:一个一个的利用向量平移绘制,如

中间多画了一个

方法2:立体几何的迭代

方法3:ggb三行指令搞定

说明:这个点A:(1,1,0)

孙生富老师做了下面的这个:

颜色调节得很美!但是对比原图,还是多了中间的部分

笔者把上面的指令稍微拆分了一下:

并且提出问题:

如何把多的这一块去掉

大神级别的萧若茂和赵林老师给出了一个非常漂亮的指令:条件子列

如果不用条件子列,也可以直接在第一个列表中修改,如下:

赵林老师还提出:第一列表指令可以修改为

去除未自定义对象(扁平列表(序列(序列(序列(if(i j==0,(i,j,k)),k,0,n-i-j),j,0,n-i),i,0,n)))

然后提出更加简化的:
扁平列表(序列(序列(序列((i, j, k), k, 0, 4 - i - j), j, 0, (i 0) (4 - i)), i, 0, 4))

萧若茂继续修改简化:
扁平列表(映射(序列(序列((p; q; 0) + (0, 0, r), p, 0, n - r), r, 0, n), q, {0, π / 2}))

笔者提出:

这道题,有没有去除未定义对象,结果是一样的。

所以其实没有多余的未定义对象。

宗师江苏的孙生富还提出:

扁平列表(映射(序列(序列((pq,p(1-q),0)+(0,0,r),p,0,n-r),r,0,n),q,{0,1}))

大家都可以尝试一下。

反思1:

软件设计者可能从编程的角度为我们设计了一系列的指令,每个指令其实就是包含了一系列的程序,但是我们不需要懂程序里面的事情,我们只要符合指令的规范,就能做出相应的事情,我们应用者的难点在于何时何地要用这个指令,通过案例学习指令还是基本方法,而不是一条条的指令的去背。我觉得初学者还是一步步来比较好,逐渐理解嵌套指令的好处。

反思2:

学ggb确实有三种层次,第1层次是菜单工具,这样每个人都可以入门,然后第2层次是指令层次,指令层次这里要待很久时间,因为指令太丰富,本来就包含了四五百个指令,然后指令之间还可以嵌套,有可能软件设计者都没想到可以这么丰富。这样就增加了学习的困难,也有可能激发学习的乐趣!

反思3:

浙江潘立强老师还指出:把指令看成黑箱子,不必理解是如何实现的,只要明白输入什么,生成什么,也就是指令的功能。

指令的嵌套有很多情况是可以避免的,只有极少情况是必须的。

也就是说,上面的指令嵌套是可以分解成不需要嵌套的,对于初学者好理解的。

对于大部分使用ggb的老师而言,或者希望的是通过简单的指令操作(或者工具操作)辅助课堂教学。然而笔者也建议,多体会一些指令的嵌套,对于熟悉指令的用途也非常有好处。

……

【来源】公众号:初中数学综合题的教与学。