LOGO编程中方向感空间感十分重要

LOGO语言编程至今仍是多个省份小学生法定《信息技术》编程的学习内容。但是目前可供LOGO编程参考的资料十分匮乏。学生有了疑问到处都查不到解答。前日木1木读者求问一个三角形递归图形题应如何理解。现在说明如下。
A.
LOGO作图中除了“向前”、“向后”多少“步”这样的长度尺寸概念外,还包括了“左转”、“右转”这样的方向空间概念。这样的方向空间概念在小学的数学中是较少接触到的。而要理解木1木读者所提出的三角形递归图形编程题,离开“方向感”和“空间感”是无法正确理解的。
B.
在这个题目中涉及到三重中间递归。对于任何一个LOGO图形递归问题,都可以用“递归模式图”来阐明递归的规律。越是复杂的题目,用“递归模式图”越是能够清晰地描述其形成的原因。

上述图形及使用方法可以在电子书《新编PCLogo教程-习题集》上册P115-P129,或《MSWLogo讲义Plus》P130-P143找到。
木1木读者所提供的试题程序可分为PCLogo版本或MSWLogo-FMSLogo版本。
PCLogo编程系统版本:
TO DG :H
IF :H<=0
THEN STOP
IF :H=2
STAMPOVAL 10 10 ;这里包含了画圆圈的命令
REPEAT 3[FD 50 DG :H-1 RT
120]
END
MSWLogo-FMSLogo编程系统版本:
to dg :h
if :h=0
[stop]
if :h=2
[circle 10] ;这里也有一个画圆圈命令
repeat 3[fd 50 dg :h-1 rt
120]
end
两种版本的程序其实是一样的,程序大小写都是“等价”的。根据木1木读者的要求,这里以MSWLogo-FMSLogo编程系统版本的进行分析。
原版本的程序使用了一个“障眼法”
repeat 3[
]
将repeat 3展开来就变成如下的三重中间递归程序:
to dg :h
if
:h=0[stop]
if
:h=2[circle 10]
fd
50
dg
:h-1 ;A点的递归
rt
120
fd
50
dg
:h-1 ;B点的递归
rt
120
fd
50
dg
:h-1 ;C点的递归
rt
120
end
将这个程序的递归模式图画出来,如下图(将递归程序转换成递归原理图的方法在上述教材中有更详细的说明):

递归的起点在 C 处,在A、B 、C三处各有一个递归。
当参数变量 :h 等于1时,执行 dg :h-1 等于执行
:dg 0 ,等于没有操作,这时程序被简化为:
to
dg
fd
50
rt
120
fd
50
rt
120
fd
50
rt
120
end
这明显是一个画正三角形的程序。所以整个程序的基调都是正三角形。
林老师关于图形-字表-数值递归的理论认为,所谓“递归”都是按规律在复制、重现上一代的图形-字表-数值。
如过程执行dg 1输出如下的图形:
如果执行dg 2,将会在A、B、C点的位置上复制dg
1的图形。请注意:这些被复制的图形是遵从递归模式图上箭头的方向的(就是我们强调的空间感好方向感)。用如下图来表示:
这里有一个细节要注意,因为是执行 dg 2,:h
的值已经达到2,所以一开始就得执行 if :h=2[circle 10]
所以一开始就有了那个小圆圈。能理解上面的图形所表达的意思吗?
同理,执行 dg 3,就会在 dg 2
图形的基础上,继续在A、B、C三个点上复制三个 dg 2 图形(尤其要注意三角形起始方向的朝向)。原理示意图如下:
这个原理图的动态图形如题头图。这个动画图形慢动作再现了递归中各个步骤的分步作图,看懂了这些步骤,就理解了3重中间递归的作图操作。事实上的作图中A
、B、C
三个图形的“复制”确实是有先后顺序的。但是计算机运行得太快了,人的肉眼看到是一瞬间已经被叠加画好的最后的图形。
有了以上的认识,在考场上要求考生的脑海里一开始就必须有
dg 1、dg 2的图形影像,再有A、B、C三个点递归的方向,就能从dg 1合成出dg 2,从dg 2合成出dg
3。具备这样抽象的方向-空间思维能力的大脑是十分强大的——这样的能力有赖于平时的理解推敲及大量的练习。所有的计算机竞赛考试都在用类似的方法来检测谁平时功课做得更多,谁的大脑更强、或最强。难怪这道题作为压轴题。任何一个小学生,在乍一见到这样的题目就能在短时间里完成以上思维,其功力不容小觑。理解了其中的递归原理,考试题中的第43、44个答题也必然会做了。
厦门市教育局-科协2010年官办初赛题的这一部分原题:
希望林老师的说明能够解答学习者的疑惑。
加载中,请稍候......