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

破解递归阻塞现象1

(2022-06-27 15:49:54)
标签:

林老师

pclogo

mswlogo

logo博客

fmslogo

分类: WinXP~7~8~10运行Logo语言
破解递归阻塞现象1
破解递归阻塞现象1
      在参加MSWLogo-FMSLogo上机编程复赛时多半会遇到使用鼠标、键盘控制的动画作图题。在编程都完全正确的情况下,运行起来却会常常发生“宕机”、“死循环”现象,程序作图到一小半就运行不下去了,鼠标旁边出现一个旋转的圆圈,LOGO系统无法输入任何命令,唯有把整个LOGO系统关闭退出才能停止这样的“死循环”——这就是目前还未引起大家足够重视的递归阻塞”现象。这种现象是因为在原版的MSWLogo-FMSLogo编程系统内部存在严重的逻辑错误引起的。用户编写的程序完全是正确的,但是在官方版本的LOGO系统中却无法运行,这是多么令人抓狂的事!竞赛考试区区两个小时,时间可能被“递归阻塞”现象白白耗尽!在使用MSWLogo或FMSLogo编程时,《水池储水》、《吃豆子》等近半数鼠标-键盘编程题中大概率都会遇到“递归阻塞”!
破解递归阻塞现象1

      这种“递归阻塞”现象在相类似的使用PCLogo编程的实例中的运行是很正常的,绝无“阻塞”现象产生这从另外一个侧面佐证:“阻塞”现象不是编程程序的问题,而是MSWLogo-FMSLogo编程系统自己内部有问题

      在自己平时练习编程时、在考场上考试时,只要是使用MSWLogo-FMSLogo编写包含鼠标-键盘命令的动画程序,如遇到在调试-运行程序时,一旦出现“阻塞”现象,首先要怀疑的不应该是编程是否正确,而是立马要意识到大概率可能出现了“递归阻塞”。在家编程的应立马换用绝不会产生“递归阻塞”的FMSLogo_U,在考场中则需要向监考老师申诉反映,以免浪费时间。

      学习LOGO编程的都应该知道:LOGO程序中的鼠标-键盘命令的本质都是使用“无限循环”在不停地监测鼠标-键盘的“动作”,每循环一次就访问监测一次鼠标或键盘。计算机程序执行“无限循环”的速度很快,所以在任何时刻使用者操作鼠标或是键盘的“动作”都会被监测到并作出对应的“反应”。
      MSWLogo-FMSLogo的鼠标-键盘命令是LOGO编程系统“原生”的、已经定义“封装”好的命令,调用这些命令,在LOGO程序内部就自动产生“无限循环”来检测鼠标-键盘的操作。PCLogo的鼠标-键盘命令必须编程者自己编写“无限循环”程序段,将鼠标-键盘命令“包含”在自编的无限循环命令之中。在运行LOGO程序时依靠自编的“无限循环”来监测鼠标-键盘的任何动作。
      上述的“无限循环”都是非常耗费计算机“资源”的。尤其是在使用MSWLogo-FMSLogo进行鼠标-键盘编程时,如果这个题目恰好需要进行连续不断地更新画面(就是“动画”。“动画”还需要另外编写同样非常耗费计算机资源的“递归”程序段)时,大概率会可能产生“递归阻塞”现象:就是动画会卡住、鼠标的旁边出现一个转动的小圆圈、甚至运行不下去。经测试“递归阻塞”现象与Windows系统的版本无关与计算机芯片的型号无关与计算机内存RAM的大小无关,只要是使用MSWLogo-FMSLogo系统、又编写了包含递归的鼠标-键盘程序,在WinXP~Win7~Win10中都有可能发生在PCLogo系统中编写的鼠标-键盘程序不会产生“递归阻塞”现象
      使用MSWLogo-FMSLogo编写鼠标-键盘程序是近几年来才遇到的新问题,值得学习LOGO语言的用户注意。除了改用PCLogo编程外,改用由国人杨逸霖老师编制的FMSLogo_U是唯一解决的办法
      FMSLogo_U中的U是英语单词Unicode万国码”的缩写。国人杨逸霖编写的FMSLogo_U改写了原版FMSLogo7.3.0的内核——这是由中国人独立编写的LOGO编程系统的内核。FMSLogo_U纠正了原版FMSLogo的许多内部错误。
        FMSLogo_U不会产生递归阻塞现象
          是解决递归阻塞的唯一解决方案

      上述《水池储水》《吃豆子》等源程序请参考《复赛详解

破解递归阻塞现象1

      FMSLogo_U还有多项优点,我们在下一篇博客中进行详细介绍。

破解递归阻塞现象1

破解递归阻塞现象2


破解递归阻塞现象1

破解递归阻塞现象1

               

0

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

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

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

新浪公司 版权所有