位置:L06简易秒表 -> 数字教材

任务1:左右键响不同

发布人:张建辉发布时间:2018-11-06 14:11:00

一、解决思路

任务描述:咱们的这台“简易秒表”有两个触碰传感器,我们按左边的触碰传感器(接P1 口),控制器就鸣叫0.5 秒;按右边的触碰传感器控制器就鸣叫2秒。

程序如下(参见图6-5):

 

          

这是一个并行程序,两段程序相对独立。不同的是,上面的控制器是“任务1”,下面的控制器是“任务2”。

两段程序还有什么不同之处呢?首先,上面是触碰P1(左键),下面是触碰P2(右键)。其次,上面是等待0.5 秒,下面是等待2 秒。余下的部分就一样了,所以我们只分析上面的程序,下面的略去,由同学们自己分析。

 

下面是这个程序的编译过程,和以前的机器人程序不同,这里有两段程序(控制器任务1 和控制器任务2)。我们需要在这两个控制器指令的任意一个上单击右键,在菜单中选择“编译多任务(1-8)”(参见图6-6)。

 

编译、下载、运行。有关其它细节,请参考本章配套的第1 节微课视频《第6 课 简易秒表(1)》中这个实验的视频。

二、函数(子程序)

函数,也就是子程序。我们将程序中重复出现的部分打成一个包,使用的时候直接调用,这个包就是子程序。

上面版本的“左右键响不同”程序,有两个长的很类似的程序段。像这样类似的程序,我们可以把其中相同的部分提取出来,打成包,这就是函数。之后,无论有多少次需要这段程序,都可直接调用这个函数。

下面,同学们用函数来改造一下上一节中的实例:左右键响不同。

在指令区的电子模块指令组,单击“新建函数”按钮(参见图6-7);

 

此时,会跳出“新建函数”对话框(参见图6-8),FuncName 就是函数名,可以修改成需要的函数名,如“提示音”(参见图6-9),因为这个函数是可以发出提示音的函数。

 

函数不是一成不变的,可以随需求有所变化。比如这个“提示音”函数,可以改变提示音播放的时长。这就需要给它一个“参数”。单击“选项”按钮,会打开参数类型列表(参见图6-10)。

 

如上图,我们可以添加参数。函数需要一个表示时间长度的参数,也就是一个数字。找到“添加一个数字参数:”后面的椭圆型单击,会发现在上面的“提示音”后面加入了一个“number1”。这就是一个数字参数。当然,也可以删除这个参数,就是在“number1”的上面单击那个“×”号。

此时,在脚本区会出现一个“小房子”一样的东西(参见图6-11),这就是定义函数功能的地方。

 

可以看到这个“小房子”(或称:“函数头”)下面有一个突起,这说明可以在下面加入指令积木模块。我们把这个过程称为制作“函数体”。下面,就把所需要的指令加在这个函数头的下面(参见图6-12)。

刚才介绍了,这个函数是用来响提示音的,而提示音是动态的。也就是调用函数的程序需要这个函数响多长时间,就把一个数字“参数”传给这个函数。这里“等待”指令,等待的是个动态的数字,也就是“参数”:number1。所以要将参数从函数头拖到等待指令的里面(参见图6-13)。

再来观察一下指令区的电子模块指令组,会发现多了一个指令“提示音”(参见图6-14),这个指令是我们自己制造的。就是那个函数“提示音”。以后,只要使用这个函数,直接调用就行(拖动到脚本区就行)。

三、程序:左右键响不同(函数版)

有了函数这个新知识,我们来改造一下“左右键响不同”这个程序。

下面是参考程序(参见图6-15):

 

好像也不比没有用函数的版本简单。可同学们想一想:这里提示音只被用到了两次,但如果一个程序提示音使用了很多次,是不是函数可以有效地缩短程序的长度呢?