加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

火柴梗是怎样组成数字的

(2024-03-04 10:46:05)
标签:

林老师

pclogo

mswlogo

fmslogo

信息学竞赛

分类: WinXP~7~8~10运行Logo语言
火柴梗是怎样组成数字的
火柴梗是怎样组成数字的
      2023年3月厦门官方(市教育局-市科学技术协会)举办的小学生信息学竞赛,要求参赛者在不超过30分钟的时间里现场编程用火柴梗组成数字实现5-0倒计时,然后显示2023年份数字。关于火柴梗的要求如下。
火柴梗是怎样组成数字的
       这题目里面用到的数字只有6个:0~5。编写6个子程序(过程)来画0~5,需要的时候分别调用当然可以,但这绝对不是培养“编程思维”的正确思路,何况这样编程工作量太大,考试的30分钟限制摆在那里呢。正确的做法是找规律,编写一个能够通吃输出0~9全部数字的单一程序,需要显示哪个数字就调用这个单一的程序输出需要的某个数字。
         火柴梗是怎样组成数字的
      从题目的要求来看,这种最多由7根火柴梗组成的数字从A点起步是最科学的。从1~7转向下一根火柴梗几乎全都是向右转RT 90,唯有从3转向4是是“直走”。这在编程上很容易实现:画到第3根时照样按整体的规律右转90度,然后补上左转90度,这样第4根火柴梗就变成“直着走”了。编程表达为
      if :i=3[lt 90]
      那么怎么区别0~9每一个数字的特征呢?这就可以编制一个“表”,把0~9数字的特征全部写在里面:
  make "shu [
     [1 1 1 1 1 1 0] ;0
    [0 0 1 1 0 0 0] ;1
    [0 1 1 0 1 1 1] ;2
    [0 1 1 1 1 0 1] ;3
    [1 0 1 1 0 0 1] ;4
    [1 1 0 1 1 0 1] ;5
    [1 1 0 1 1 1 1] ;6
    [0 1 1 1 0 0 0] ;7
    [1 1 1 1 1 1 1] ;8
    [1 1 1 1 1 0 1] ;9
           ]
这个“表”的组成规律是:每个笔画该显示火柴梗的地方是 1 ,不需要显示火柴梗的地方是0。这个数字“表”其实是所有7段数字的“字库”。有了这个字库,就能显示输出任意的数字了。   
火柴梗是怎样组成数字的
      这里面每根火柴梗的画法是有讲究的。最好画成左右对称的,火柴的上下各留8~12点的间隙,这样方便将第7根火柴拼接在中间。
      画单根火柴的子程序 hc  :k  有一个 :k 参数  :k=1 时火柴用黑色画,火柴可见。 :k=0 时火柴用白色画,火柴不可见。

      运行 0_9 主程序,可以在屏幕上连续显示 0-9 各个数字如上图。

to 0_9 ;画0-9数字主程序 for fmslogo8.3.2
  cs HT
  make "shu [     ;数字字库表  
    [1 1 1 1 1 1 0] ;0
    [0 0 1 1 0 0 0] ;1
    [0 1 1 0 1 1 1] ;2
    [0 1 1 1 1 0 1] ;3
    [1 0 1 1 0 0 1] ;4
    [1 1 0 1 1 0 1] ;5
    [1 1 0 1 1 1 1] ;6  考试时6-9可以不要写入的数据
    [0 1 1 1 0 0 0] ;7
    [1 1 1 1 1 1 1] ;8
    [1 1 1 1 1 0 1] ;9
    ]
  for[n 0 9][       ;显示0-9数字的循环
    cs zhi :n wait 60 ]
  cs
end

to hc :k  ;单根火柴 :K=1黑色 :K=0白色
  if :k=1[setpc 0]  ;火柴可见
  if :k=0[setpc 7]  ;火柴不可见
  setpensize 1 pu fd 8  
  lt 90 fd 4 rt 90 pd
  repeat 3[fd 100 rt 90 fd 8 rt 90]
  lt 90 bk 4 lt 90 
  setpensize 14 fd 1 bk 1
  pu setpensize 1 fd 12 pd
end

to zhi :n  ;读取字库的子程序
  make "nn item :n+1 :shu 
  for[i 1 7][
    make "k item :i :nn
    hc :k rt 90
    if :i=3[lt 90]]
end

      有了以上的编程思考,再完成整个“倒计时”编程就不难了。那怕是显示再多的数字都是轻而易举的事。

火柴梗是怎样组成数字的

火柴梗是怎样组成数字的

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有