数字阵列LOGO语言编程趣谈:先展示样本
前日有×湖读者求问林老师:在他们当地由市教育局-市科协官办的小学生LOGO语言编程选修班练习中一道数字阵列LOGO语言编程题应该怎么做(题目原样见稍后面的截图)。林老师发现这其实在常见的小学生编程练习中是花样十分繁杂、极其有趣,数量多得足够独立自成“一族”的练习题。这一类的题目不仅在LOGO语言编程中存在,在小学生学C语言、PYTHON语言、C++语言、QB语言的练习中都广泛地存在,而且每道题都可能有一定的难度,所以说真是一类锻炼编程思维的好题目——但是不少小学生都在玩的SCRATCH编程里并不适合编制这样的“数字阵列”。另外,在当下已经几乎被淘汰弃用的PASCAL语言中也曾经有不少类似的题目。
“数字阵列”编程只要搞清楚了其中的规律及原理,用上面任何一种编程语言写出来的程序其实都是差不多的逻辑结构。所以搞懂了LOGO的编程,再改用PYTHON、C++编程“数字阵列”就容易多了。
说“数字阵列”题目品种有很多是有根据的。不同的“品种”说少也有几十种,下面展示部分品种输出的图形,后面再仔细研究具体的LOGO编程并提供源程序。
例1.
10阶逆时针左旋正方形阵列
特征:从1~N×N个整数逆时针左旋组成的内旋正方形阵列
例2.
6阶顺时针从内向外右旋正方形阵列
特征:从1~N×N个整数从中心开始向外右旋排列组成的正方形阵列
例3.
9阶三角形增值数字阵列
特征:用1~1+2+3+……+N个连续增值数字逐级向下排列的三角形阵列
例4.
4阶回形正方形套圈数字阵列
特征:从1~N个数字回形圈组成的正方形阵列
例5.
6阶降序正方形数字阵列
特征:正方形阵列的左边包含1~N数字,每行数值升序至N后降序排列。
例6.
左上-右下N阶三角形数字组成的正方形阵列
特征:左上-右下的三角形数字呈对称状态
例7.
有序填充N阶三角形-正方形阵列
特征:右上角是1~N的全部或部分数字,左下角用1或其他指定的数字填充。
例8.
N阶左上-右下对称分布轮流填充正方形数字阵列
特征:让从1~N×N整数从左上到右下连续对称分布轮流填充形成的正方形数字阵列
例9.
顺时针右旋正方形数字阵列
特征:这是例1的顺时针右旋的例子
例10.
6阶逆时针左旋完全平方数正方形数字阵列
特征:填充的每一个数字都是1~N的完全平方数(图中包括了1~36的平方数,例如36×36=1296)
以上的图形全部都是已经用LOGO语言编程输出的图形(既可以是在文本区输出的图形也可以在图形区输出的)。从展示出来的例子看,这一族的编程题目至少有数十种之多一点也不为过。编写这样的程序其实纯属“数字游戏”,但是所锻炼出来的数学思维及编程思维能力对于学习者的成长是会获得终身的好处的。你有能力搞定上面这些题目,再不断学习锻炼,长大了一定是一个思维缜密有能力驾驭复杂问题的强者。
===========================================
最后说一下读者提到的那个问题:这一张图形就是读者说的那个题目。
这个题目的本质是求解在N×N(例如5×5)的“向右螺旋”正方形数字阵列中找出数字K(例如20),所在的行数R及所在的列数C(详看上图:20这个数字在第3行第4列,就是R=3、C=4)。
像这样的“数字阵列”编程题,比较合理的研究方式是:
先弄明白输出N×N正方形右螺旋阵列用LOGO语言编程的算法,把构造N×N正方形右螺旋阵列的数学逻辑搞清楚(这个我们在后续的文章中会讲到);
进一步再来研究“对于N×N正方形右旋阵列,请找出数字K所在的行数R及所在的列数C”。这样的学习方法会比较好一些。属于循序渐进透彻理解的学习方式。
现在有不少学习编程的试题喜欢像上面这样让学生来填空。这种题目的好处是:每个“窟窿”所需要填的答案是绝对固定的,不会出现一个“窟窿”可以随意填多种不同答案的情况。而且还要求学生只能沿着题目所给的编程思路“走”。由于答案是唯一的,改卷相对容易,但是对学习者的理解力要求很高。我们最不希望看到的情况是:学习者已经把程序背诵下来了,然后做题时默写下来。
“编程”既然是“语言”,一道题相当于出一道作文题,最好能出现学生各有各的思路编程方法编出不同的程序来,相当于“作文题是一样的,但是每个人写出的作文各有千秋”。“填空”类题目有利于“定向思维”,但不利于各尽所能的创造性“发散思维”。你们是怎么看的呢?
加载中,请稍候......