LOGO语言进入中国小学生的视野已经将近40年。目前仍有多个省份的《信息技术》课程中在学习使用LOGO语言。更有安徽、福建、湖北、四川等地每年都有LOGO语言的竞赛考试。LOGO语言在几十年间长盛不衰一直保持着强大的生命力,是和它许多自身的优势分不开的。
LOGO语言的趣味性强,能够用相当简练的程序语句画出五彩缤纷的图形,能够进行复杂的计算。上面的“魔幻点阵”就是一个生动的例子。你看,那么多的彩色球竟然能够堆叠成那样复杂、那样漂亮的动感图形。趣味性强的LOGO语言,对初学者有着强大的吸引力。在玩中学习、在有趣的气氛中学习,这是我们选择LOGO语言作为入门计算机程序语言的重要原因。
像这样生动有趣的编程命题在LOGO语言中比比皆是,多得都做不过来。如果觉得LOGO语言“没有什么意思”我们可以直率地说:这恐怕多半是对LOGO语言的认知出问题了,我们都认真研究过LOGO语言了吗?我们知道LOGO语言的内涵到底有多深吗?
上面动画的程序如下:
MSWLogo-FMSLogo解:
TO MHDZ :N ;魔幻点阵
MSWLogo-FMSLogo编程
CS HT
SETPENSIZE 30
;画点的直径是20
IF (REMAINDER :N
2)=0[PR[请输入一个奇数] STOP]
MAKE "NN (1+:N)/2
;计算点阵的一半是几个
MAKE "XX
0-:NN*30
MAKE "YY
:NN*30
PU SETXY :XX :YY
;移动使图形居中
FOREVER[
FOR[J 1
:NN][FOR[I :NN-:J+1 :NN][XS]]
]
;构成无限循环
END
TO XS ;显示对称的4个一组的圆点
MAKE "YS RANDOM
15
;产生随机的颜色
IF :YS>6[MAKE "YS
:YS+1] ;避开7白色
SETPC :YS
;颜色赋值
SETXY :XX+:I*30 :YY-:J*30 PD
FD 1 BK 1 PU
;画左上方点
SETXY :XX+:I*30
:YY-(:N-:J+1)*30 PD FD 1 BK 1 PU
;画右下方点
SETXY :XX+(:N-:I+1)*30
:YY-:J*30 PD FD 1 BK 1 PU
;画右上方点
SETXY :XX+(:N-:I+1)*30
:YY-(:N-:J+1)*30 PD FD 1 BK 1 PU
;画左上方点
WAIT 1
;适当的延时
END
PCLogo解:
TO MHDZ :N
;魔幻点阵 PCLogo编程
DRAW HT
SETW 30
;画点的直径是30
IF (REMAINDER :N 2)=0[TT[请输入一个奇数]
STOP]
RERANDOM (ITEM 2 TIME)*60+ITEM 3
TIME ;获得随机数的种子
MAKE "NN (1+:N)/2
;计算点阵的一半是几个
MAKE "XX
0-:NN*30
MAKE "YY
:NN*30
PU SETXY SE :XX :YY
;移动使图形居中
LABEL "LOOP
FOR "J 1 :NN[FOR
"I :NN-:J+1 :NN[XS]]
GO "LOOP
;构成无限循环
END
TO XS ;显示对称的4个一组的圆点
SETPC RANDOM 14
;产生随机的颜色
DOT SE :XX+:I*30
:YY-:J*30
;画左上方点
DOT SE :XX+:I*30 :YY-(:N-:J+1)*30
;画右下方点
DOT SE :XX+(:N-:I+1)*30 :YY-:J*30
;画右上方点
DOT SE :XX+(:N-:I+1)*30
:YY-(:N-:J+1)*30 ;画左上方点
WAIT 1
;适当的延时
END
用Ctrl-G可以将程序停止下来
和这个程序类似的作图命题请参考林老师编著的:
A. 《LOGO语言竞赛习题集》P66~P77。
B. 《MSWLogo讲义Plus》P98~P99
趣味性强、容易入门、概念先进的LOGO语言应该是小学生首选的计算机程序设计语言。计算机程序设计语言的基本概念都是相通的。启蒙学LOGO语言,打好了基础,再转向学习其它种类的计算机语言已经被实践证明是有效、合理的途径。