全局变量、区域变量

在程序语言里,变量分成「全局变量」以及「区域变量」两种型态,同样的,Scratch里的变量,也是分成这种两型态,依据形态的不同,就能够做出不同的应用,这篇文章将会深入介绍Scratch里的全局变量和区域变量。

什么是全局变量?什么是区域变量?

变量,是一种程序执行过程中,暂时存放数据的记忆空间,变量名称就是指向该空间的识别代号,然而变量都有其运作的「范围」(scope),离开这个「范围」,就无法使用这个变量,根据范围的不同,区分为「全局」和「区域」。

  • 全局变量:变量作用的范围「涵盖整个程序」,程序里所有的物件都能使用这个变量。
  • 区域变量:变量作用的范围仅限于「某个程序」,只有某些物件,或某些函式里,才能使用这个变量,脱离了物件或函式,就无法使用(读取、编辑…等)这个变量。

下图的例子,上方桃红色圆形变数属于全局变数,所有的物件都能够使用这个变数,下方的形状全部都是区域变数,就算绿色三角形变数能让两个物件使用,使用范围仍然不是涵盖所有物件,所以是区域变数。

建立全局或区域变数

Scratch建立变数时,可以选择建立的变数种类:

  • 适用于所有角色:全局变数。
  • 仅适用当前角色:区域变数。

举例来说,舞台上有一个猫咪(cat),建立了一个全局变数a和一个区域变数b,区域变数b在舞台上的显示,前方会增加「cat:」的识别,表示变数b只能在cat角色里使用。

针对不同角色,使用全局和区域变数

在舞台上新增一只猫咪(cat)和一只小狗(dog)的角色。

点击猫咪角色,新增一个「全局变数a」和一个「区域变数b」。

变数建立完成后,点击切换猫咪和小狗的角色,会发现点击小狗角色时,变数的积木里,没有出现变数b。

由于全局变数a可以让所有角色共同使用,因此如果将猫咪的程序,设定为点击猫咪就将a增加1,将小狗的程序,设定为不断讲出a的数值,就可以在点击猫咪时,小狗就会一直讲出a目前的数值。

接着在小狗角色里,也新增一个「区域变数」b,舞台上就会看见两个变数b,分别是「cat:b」和「dog:b」,两个变数彼此独立,没有任何关系,也不会互相影响。

将猫咪和小狗的角色,使用同样一组程序:「点击绿旗后,设定b为0,点击角色后将b增加1,并讲出b的数值」,完成后点击绿旗,用鼠标点击猫咪和小狗的角色,就会讲出不同的数字(因为各自的区域变数b只会执行各自的指令)。

针对分身,使用全局和区域变数

当在Scratch里替角色建立分身后,「分身」本身也属于一个「新的角色」(新的物件),如果在分身里使用「区域变数」,则这个区域变数就「只会作用在这个分身的程序里」。

开启上面示例的程序)进行修改,将猫咪的程序改成下图的样子(点击绿旗后,产生三个分身,隐藏本尊,点击分身时,将「区域变数b」增加1并且显示b)。

将小狗的程序修改成下图的样子(点击绿旗后,产生三个分身,隐藏本尊,点击分身时,将「全局变数a」增加1并且显示a)

完成后,点击绿旗,用鼠标点击猫咪和小狗,会发现虽然区域变数b是建立在猫咪角色里,但对于角色的分身而言,却又是各自的区域变数,互不影响,所以猫咪会各自讲出各自往上累加的数值,而小狗因为是全局变数,所以数值会共享。

给TA赞助
共{{data.count}}人
人已赞助
综合资讯

快速排序动态示意【Scratch】

2023-8-23 9:12:03

综合资讯

正弦插值——缓动在Scratch中的实现

2023-11-4 21:34:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索