您好,欢迎进入     025-83600107      登录  |   注册

查看: 9862|回复: 13

【网上交流】2017年苏州市小学生LOGO程序设计赛

[复制链接]

2

主题

9

帖子

64

积分

注册会员

Rank: 2

积分
64
发表于 2017-3-13 16:18:58 | 显示全部楼层 |阅读模式
这次苏州市小学生LOGO程序设计赛第3题得分平均比较低(递归题最低)
先讨论一下第3题(画灯笼)
本题主要测试带参过程的定义,可能会涉及以下2点:
1、画椭圆
可以用多种方法画椭圆,比较简单的方法:可以直接利用LOGO中的STAMPOVAL命令。
2、带参过程
本题先定义了带参过程,后面画3个灯笼就容易了。当然也有人不定义带参过程,使程序代码会增加。
下面是本题的解法之一(程序中用到了LOGO中的变量、数值运算等。如有更优化的方法请交流):
TO DL :X
HT MAKE "Y :X * 0.6 MAKE "N 1 SETPC 12 SETW 1
(STAMPOVAL :X :Y "TRUE)
SETPC 0 REPEAT 4 [MAKE "X :N * :X STAMPOVAL :X :Y MAKE "N :N - 0.2]
PU SETPC 14 FD 0.92 * :Y LT 90 FD :X * 2 RT 90 PD
(STAMPRECT :X * 4 :X "TRUE) SETPC 0 STAMPRECT :X * 4 :X
PU BK 2.16 * :Y PD SETPC 14
(STAMPRECT :X * 4 :X "TRUE) SETPC 0 STAMPRECT :X * 4 :X
RT 90 FD :X * 2 LT 90 BK 10
PU LT 90 FD :X * 0.8 / 2 RT 90 BK :X * 3 PD SETPC 14
(STAMPRECT :X * 0.8 :X * 3 "TRUE) SETPC 0 STAMPRECT :X * 0.8 :X * 3
END
TO DLA
DRAW DL 80
END
TO DLB
DRAW
PU SETXY [-160 20] PD DL 60
PU SETXY [-40 5] PD DL 50
PU SETXY [62 -6] PD DL 40
END
回复

使用道具 举报

0

主题

5

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2017-3-13 16:59:12 | 显示全部楼层
本帖最后由 tchjf78 于 2017-3-13 17:04 编辑

TO DLA
     DRAW HT
     DL 50
END

TO DL
     RT 90 PU FD   * 0.1 LT 90 FD * 0.75 FD * 0.2 FD   * 0.25 FD   * 0.8 PD
     SETPC 12
     (STAMPOVAL   * 1.5   * 0.85 "TRUE)
     SETPC 0
     STAMPOVAL   * 1.5 * 0.84
     STAMPOVAL :L  * 1.2 :L * 0.84
     STAMPOVAL :L  * 0.75 :L * 0.84
     STAMPOVAL :L  * 0.3 :L * 0.84
     PU BK :L  * 0.8 BK :L * 0.25 BK :L  * 0.2 BK :L  * 0.75 LT 90 FD :L  * 0.1 RT 90 PD
     SETPC 14
     REPEAT 2 [FD :L   * 0.75 RT 90 FD :L   * 0.2 RT 90]
     PU FD :L * 0.25 RT 90 FD :L * 0.1 PD FILL PU BK :L * 0.1 LT 90 BK :L * 0.25 PD
     SETPC 0
     REPEAT 2 [FD :L * 0.75 RT 90 FD :L * 0.2 RT 90]
     PU FD :L * 0.75 RT 90 FD :L * 0.125 LT 90 PD
     FD :L * 0.2 PU LT 90 FD :L / 2 RT 90 PD
     SETPC 14
     REPEAT 2 [FD :L * 0.25 RT 90 FD :L RT 90]
     PU FD :L * 0.125 RT 90 FD :L / 2 LT 90 PD FILL PU RT 90 BK :L / 2 LT 90 BK :L * 0.125 PD
     SETPC 0
     REPEAT 2 [FD :L * 0.25 RT 90 FD :L RT 90]
     PU RT 90 FD :L / 2 LT 90 FD :L * 0.25 FD :L * 0.8 PD
     PU FD :L * 0.8 LT 90 FD :L / 2 RT 90 PD
     SETPC 14
     REPEAT 2 [FD :L * 0.25 RT 90 FD :L RT 90]
     PU FD :L * 0.125 RT 90 FD :L / 2 LT 90 PD FILL PU RT 90 BK :L / 2 LT 90 BK :L * 0.125 PD
     SETPC 0
     REPEAT 2 [FD :L * 0.25 RT 90 FD :L RT 90]
END

TO DLB
     DRAW HT
     PU SETXY SE 0 0 SETH 0 PD DL 50
     PU SETXY SE 150 -2 PD SETH 0 DL 40
     PU SETXY SE 265 -4 PD SETH 0 DL 30
END
太仓市实验小学 浦朱舸答案
回复 支持 反对

使用道具 举报

0

主题

2

帖子

28

积分

新手上路

Rank: 1

积分
28
发表于 2017-3-14 07:53:04 | 显示全部楼层
本帖最后由 sxwtzty 于 2017-3-14 09:53 编辑

TO DL1 :L
ht
     PD SETPC 14 (STAMPRECT :L / 5 :L "TRUE) SETPC 0 (STAMPRECT :L / 5 :L "FALSE) PU FD :L RT 90 FD :L / 5 / 2 LT 90
     PD FD :L / 5 LT 90 FD :L / 2 RT 90 SETPC 14 (STAMPRECT :L :L / 5 "TRUE) SETPC 0 (STAMPRECT :L :L / 5 "FALSE)
     PU FD :L / 5 RT 90 FD :L / 2 LT 90 FD :L
     PD SETPC 12 (STAMPOVAL :L + 4 * :L / 5 :L "TRUE)
     MAKE "N 4
     REPEAT 4 [PD SETPC 0 (STAMPOVAL (:L + 4 * :L / 5) / 4 * :N :L) MAKE "N :N - 1]
     PU FD :L LT 90 FD :L / 2
     PD SETPC 14 (STAMPRECT :L :L / 5 "TRUE) SETPC 0 (STAMPRECT :L :L / 5 "FALSE)
END
常熟张青莲小学
回复 支持 反对

使用道具 举报

2

主题

9

帖子

64

积分

注册会员

Rank: 2

积分
64
 楼主| 发表于 2017-3-14 16:08:25 | 显示全部楼层
下面是一位选手的画灯笼程序。由于没有定义带参过程,程序变得很长。
TO DLA
        DRAW
        SETPC 14 (STAMPRECT 10 30 "TRUE)
        SETPC 0 REPEAT 3 [FD 30 RT 90 FD 10 RT 90]
        LT 90 BK 5 LT 90 FD 5 LT 90
        REPEAT 2 [FD 30 RT 90 FD 15 RT 90 FD 30]
        FD 30 LT 90 SETPC 14 (STAMPRECT 60 15 "TRUE)
        SETPC 0 PU RT 90 BK 30 PD REPEAT 2 [FD 30 RT 90 FD 15 RT 90 FD 30]
        PU FD 30 RT 90 FD 15 RT 90 FD 30 LT 90 FD 50
        PD SETPC 12 (STAMPOVAL 70 50 "TRUE)
        SETPC 0 STAMPOVAL 10 50
        STAMPOVAL 30 50
        STAMPOVAL 50 50
        STAMPOVAL 70 50
        PU FD 50 LT 90 FD 30 RT 90
        PD SETPC 14 (STAMPRECT 60 15 "TRUE)
        SETPC 0 STAMPRECT 60 15
        PU HOME PD HT
END

TO DLB
        DRAW
        PU SETX -180 PD
        SETPC 14 (STAMPRECT 10 30 "TRUE)
        SETPC 0 REPEAT 3 [FD 30 RT 90 FD 10 RT 90]
        LT 90 BK 5 LT 90 FD 5 LT 90
        REPEAT 2 [FD 30 RT 90 FD 15 RT 90 FD 30]
        FD 30 LT 90 SETPC 14 (STAMPRECT 60 15 "TRUE)
        SETPC 0 PU RT 90 BK 30 PD REPEAT 2 [FD 30 RT 90 FD 15 RT 90 FD 30]
        PU FD 30 RT 90 FD 15 RT 90 FD 30 LT 90 FD 50
        PD SETPC 12 (STAMPOVAL 70 50 "TRUE)
        SETPC 0 STAMPOVAL 10 50
        STAMPOVAL 30 50
        STAMPOVAL 50 50
        STAMPOVAL 70 50
        PU FD 50 LT 90 FD 30 RT 90
        PD SETPC 14 (STAMPRECT 60 15 "TRUE)
        SETPC 0 STAMPRECT 60 15
        PU HOME HT
        SETX 0 PD
        SETPC 14 (STAMPRECT 10 * 0.8 30 * 0.8 "TRUE)
        SETPC 0 REPEAT 3 [FD 30 * 0.8 RT 90 FD 10 * 0.8 RT 90]
        LT 90 BK 5 * 0.8 LT 90 FD 5 * 0.8 LT 90
        REPEAT 2 [FD 30 * 0.8 RT 90 FD 15 * 0.8 RT 90 FD 30 * 0.8]
        FD 30 * 0.8 LT 90 SETPC 14 (STAMPRECT 60 * 0.8 15 * 0.8 "TRUE)
        SETPC 0 PU RT 90 BK 30 * 0.8 PD REPEAT 2 [FD 30 * 0.8 RT 90 FD 15 * 0.8 RT 90 FD 30 * 0.8]
        PU FD 30 * 0.8 RT 90 FD 15 * 0.8 RT 90 FD 30 * 0.8 LT 90 FD 50 * 0.8
        PD SETPC 12 (STAMPOVAL 70 * 0.8 50 * 0.8 "TRUE)
        SETPC 0 STAMPOVAL 10 * 0.8 50 * 0.8
        STAMPOVAL 30 * 0.8 50 * 0.8
        STAMPOVAL 50 * 0.8 50 * 0.8
        STAMPOVAL 70 * 0.8 50 * 0.8
        PU FD 50 * 0.8 LT 90 FD 30 * 0.8 RT 90
        PD SETPC 14 (STAMPRECT 60 * 0.8 15 * 0.8 "TRUE)
        SETPC 0 STAMPRECT 60 * 0.8 15 * 0.8
        PU HOME HT
        SETX 150 PD
        SETPC 14 (STAMPRECT 10 * 0.6 30 * 0.6 "TRUE)
        SETPC 0 REPEAT 3 [FD 30 * 0.6 RT 90 FD 10 * 0.6 RT 90]
        LT 90 BK 5 * 0.6 LT 90 FD 5 * 0.6 LT 90
        REPEAT 2 [FD 30 * 0.6 RT 90 FD 15 * 0.6 RT 90 FD 30 * 0.6]
        FD 30 * 0.6 LT 90 SETPC 14 (STAMPRECT 60 * 0.6 15 * 0.6 "TRUE)
        SETPC 0 PU RT 90 BK 30 * 0.6 PD REPEAT 2 [FD 30 * 0.6 RT 90 FD 15 * 0.6 RT 90 FD 30 * 0.6]
        PU FD 30 * 0.6 RT 90 FD 15 * 0.6 RT 90 FD 30 * 0.6 LT 90 FD 50 * 0.6
        PD SETPC 12 (STAMPOVAL 70 * 0.6 50 * 0.6 "TRUE)
        SETPC 0 STAMPOVAL 10 * 0.6 50 * 0.6
        STAMPOVAL 30 * 0.6 50 * 0.6
        STAMPOVAL 50 * 0.6 50 * 0.6
        STAMPOVAL 70 * 0.6 50 * 0.6
        PU FD 50 * 0.6 LT 90 FD 30 * 0.6 RT 90
        PD SETPC 14 (STAMPRECT 60 * 0.6 15 * 0.6 "TRUE)
        SETPC 0 STAMPRECT 60 * 0.6 15 * 0.6
        PU HOME PD HT
END
回复 支持 反对

使用道具 举报

2

主题

9

帖子

64

积分

注册会员

Rank: 2

积分
64
 楼主| 发表于 2017-3-14 16:18:54 | 显示全部楼层
第2题本次比赛得分的平均成绩最高。此题应引导学生用多种方法解决问题。希望大家将提供解决此问题的各种算法的程序。
回复 支持 反对

使用道具 举报

0

主题

5

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2017-3-14 16:28:58 | 显示全部楼层
本帖最后由 tchjf78 于 2017-3-14 17:23 编辑
szjfzx 发表于 2017-3-14 16:18
第2题本次比赛得分的平均成绩最高。此题应引导学生用多种方法解决问题。希望大家将提供解决此问题的各种算 ...

TO YUAN
     DRAW HT
     YUAN1
END

TO YUAN1
     SETTURTLES 25
     TELLALL 0 24
     EACH [PU SETXY SE (INT WHO / 5) * 29 (REMAINDER WHO 5) * 29 PD MAKE "C (RANDOM 13) + 1 YUAN2 :C]
END

TO YUAN2 :C
     SETPC :C
     (STAMPOVAL 15 15 "TRUE)
     SETW 2 SETPC 0
     STAMPOVAL 15 15
END

我校学生的做法:先调用25个海龟,然后海龟顺序从下往上1-5,第二列6-10这样排列,X坐标用取整函数,Y坐标用取余函数,快速的画出图形,此作法完全应该加分!!!
回复 支持 反对

使用道具 举报

2

主题

9

帖子

64

积分

注册会员

Rank: 2

积分
64
 楼主| 发表于 2017-3-14 17:09:58 | 显示全部楼层
下面是一位选手的程序:先定义一个画随机颜色圆的子过程,再在主过程中调用此子过程,画出题目要求的25个圆。
TO YUAN1
        PD SETW 1 SETPC RANDOM 14 (STAMPOVAL 15 15 "TRUE)
        SETW 2 SETPC 0 STAMPOVAL 15 15
END

TO YUAN
        DRAW
        REPEAT 4 [YUAN1 PU FD 30 PD] YUAN1
        RT 90 REPEAT 4 [YUAN1 PU FD 30 PD] YUAN1
        RT 90 REPEAT 4 [YUAN1 PU FD 30 PD] YUAN1
        RT 90 REPEAT 3 [YUAN1 PU FD 30 PD] YUAN1
        RT 90 REPEAT 3 [YUAN1 PU FD 30 PD] YUAN1
        RT 90 REPEAT 2 [YUAN1 PU FD 30 PD] YUAN1
        RT 90 REPEAT 2 [YUAN1 PU FD 30 PD] YUAN1
        RT 90 PU FD 30 PD YUAN1
        RT 90 PU FD 30 PD YUAN1
        HT
END
回复 支持 反对

使用道具 举报

2

主题

9

帖子

64

积分

注册会员

Rank: 2

积分
64
 楼主| 发表于 2017-3-14 17:12:53 | 显示全部楼层
tchjf78 发表于 2017-3-14 16:28
TO YUAN
     DRAW HT
     YUAN1

这学生不错!用了25只海龟同时工作。程序代码大减少!
回复 支持 反对

使用道具 举报

0

主题

5

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2017-3-14 17:22:32 | 显示全部楼层
szjfzx 发表于 2017-3-14 17:12
这学生不错!用了25只海龟同时工作。程序代码大减少!

他用取整和取余函数确定了海龟的坐标,在1小时内能快速想出这样的做法,我也表示很佩服!
回复 支持 反对

使用道具 举报

0

主题

5

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2017-3-15 08:57:17 | 显示全部楼层
szjfzx 发表于 2017-3-14 17:09
下面是一位选手的程序:先定义一个画随机颜色圆的子过程,再在主过程中调用此子过程,画出题目要求的25个圆 ...

random 14 应该是不符合要求的吧,(random 13)+1就不会把黑色随机进去了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系我们

025-83600107 南京市鼓楼区中央路165号出版大厦C座12楼

关于我们 江苏凤凰电子音像出版社有限公司 版权所有 Copyright2016
苏ICP备12051994号-12
中小学信息技术课程配套教学平台All Right Reserved