关于scratch与EV3-classroom的自定义模块(scratch中的“自制积木”,EV3中的“我的模块”)调用的问题

  • Post author:
  • Post category:其他


下图是scratch自制积木编写的程序,运行的结果是:几乎同时播放猫叫和狗叫之后播放鸭子叫,接着狗叫与鸭子叫不停循环。这是符合程序运行逻辑的,我是可以理解的。


下图是 EV3中的“我的模块”编写的程序,运行的结果是:播放one,之后播放two,之后就不再发出声音,并没有播放hello声音。

后来在调用1模块之前加上等待1秒,运行的结果是:播放hello,之后播放one,之后发出two声音。

1.也就是说ev3不能同时播放两种不同的声音,同时播放时其中一条声音会被另一条声音“抹掉”(通过EV3主机),但是scratch可以同时播放出来(通过电脑音响)

2.EV3中的“我的模块”不能实现递归,即“我的模块”不能调用自己(直接调用与间接调用都不可以)


群里的小智老师说:


无限递归和无限循环不一样,只要内存装的下程序,无限循环是能运行的,只是干不了别的事情了。无限递归是内存都装不下程序了,最后只能崩掉。

乐高大概就是为了防止耗光内存资源。。。

软件是为硬件服务的。EV3的内存只有64M,设计配套软件的时候,考虑到可用资源很有限,深层堆栈对内存占用的不可预测性,EV3就禁止了这种用法,比如,你会发现labview版和classroom版甚至没有局部变量。

PC的内存也不是无限的,基于PC的开发语言,对递归也很谨慎的,比如你这么用的话,JAVA的虚拟机会崩掉,python默认最大深度是1000。

我觉得他说的有道理。

改变一下程序,利用广播消息传递实现了功能需求。



版权声明:本文为mayun__原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。