最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Scratch教程:范围之变化

Scratch 少儿编程 2906浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

在Scratch中,我们在每次定义变量时,都会出现一个选择项,是“适用于所有角色”,还是“仅适用于当前角色”。初学者常常对这个比较迷惑,不知道应该选择哪一个。即使是熟练的用户,也有很多时候在这个地方出错。

范围之变化

那么这两个选项的区别在哪里呢?

从软件开发的角度来说,能够被所有角色(包括舞台脚本)访问的是全局变量,只能被一个角色访问的是局部变量。

再深入一下,这个变量的作用范围还涉及到克隆的问题。因为在一个角色生成克隆体的时候,定义在角色中的局部变量同时也会在克隆体中产生变量。需要注意的是,此时每个克隆体都会有一套相同名称的独立变量。

 

//////////

下面我们从几个方面讨论这个范围的问题

1:变量的可访问性
 

这里的可访问性是指能够读取和修改变量,并在设计程序中看到变量。

对于全局变量,在舞台及所有的角色中,均可以看到并访问它。

但对于局部变量,只在定义它的角色中及角色生成的克隆体中访问。舞台中的脚本及其它角色中的脚本是无法访问的。

 

 

2:读取其它角色的局部变量
 

Scratch中,提供了一个读取其它角色变量及基本信息的方式。也就是这块积木。

范围之变化

假设我们定义了一个球的角色,其中有一个局部变量ballX.在其它的角色中,就可以使用这个积木,得到ballX变量的值。

范围之变化

这里只能够读到变量的值,而不能对变量的值进行修改。

而且如果BALL角色生成了克隆体,这个积木只能得到原始角色的变量值,而不能得到每个克隆体中的变量值。

 

3:舞台脚本只能用全局变量

在舞台脚本中使用的变量只能是全局变量。所以我们一般要避免在舞台上使用过多的变量,因为这些变量会出现在所有的角色中。

4:变量的区分

在使用变量时,必须要区分清楚是全局还是局部变量。如何区分呢。语言中提供了一个方法。就是在使用变量的积木时,会在下拉列表中将全局变量放在一起,将局部变量放在一起。

  例如下图中所示,其中NN1是全局变量,而横线下的catX,catY都是局部变量。

 

范围之变化

 

5:关于列表
列表的使用范围,与变量的情况类似,也分为全局及局部。访问的情况也基本相同。只不过没有只读积木的访问方式。
 

//////////

 
范围之变化
 

错误选择范围会带来的后果

 

如果我们错误地选择了变量的范围,会带来什么样的错误呢?

1 如果误将全局变量选择为局部变量,这时其它的角色就无法访问这个变量。一般这种错误在设计过程中就能够发现。

2 如果误将局部变量选择为全局变量,这时任何位置都能够访问它。如果不生成克隆体,则访问局部变量和访问全局变量没有什么区别。如果一旦生成了克隆体就会出现问题,本来是希望每个克隆体中的变量具有不同的值,但全局变量会使所有的克隆体都有同一个值,这也是很多时候让初学者困惑的一个问题。

 

 

 

总结

1  全局变量和局部变量是包括Scratch在内的很多程序设计语言中的重要概念。作为程序设计者,必须清晰地掌握这个概念。

2  Scratch提供的访问及区分功能并不十分完善,我们一方面期待新版本中的改进,另一方面,也可以在当前的版本中使用其它方法来替代。

 

 

您必须 登录 才能发表评论!