【Scratch2.0编程教程】第五节:数据模块

本节我们将学习数据模块的两大块:变量和链表。脚本在运行过程中要处理各种类型的数据:积木中要求输入的参数(包括数字、字符串、下拉列表等)。而完成一个相对复杂的程序,需要存储、访问、修改数据才能完成一个特定任务。Scratch中使用变量和链表来管理数据。

一、变量

1、变量的类型

应用程序的任务是处理各种数据类型(数字、字符串、图像、声音等)的数据并运算结果。因此要完成编程任务必须先了解Scratch中数据类型的概念。Scratch支持三种数据类型:布尔类型(Ture或False)、数字类型、字符串类型。
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
如果输入的数据类型不对,Scratch将阻止你拖入。

变量是被命名的计算机内存区域。当你创建一个变量时,程序会开辟一块内存区域存储它,同时给这块区域取一个变量名,后续程序中直接使用变量名即可以得到这块内存区域的具体存储的数据。

变量的一个重要用法就是存储算术计算的结果,从而方便程序使用。比如计算一个算术运算式的结果:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
现在我们用Scratch中几种表达结果来看看各自的优缺点:
(1)直接运算
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
注意看积木堆积出来的层次,这种方法的可读性非常差,很难理解。
(2)两个变量运算
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
设定两个变量A和B,分别为A和B赋予简单的运算式,再求结果。
(3)四个变量
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
先将每一个括号设定为一个变量,最后再来计算,是不是又显得过于细致?
所以实际上第二种表达方式是最合适的。当然在设计程序的过程中,如何运用还需要根据实际的情况来判定,选择最合适的方法。
下面我们制作一个小程序来看看变量的妙用。骰子随机滚动后,鸭子说出两个骰子的数值之和。
【Scratch2.0编程教程】第五节:数据模块-少儿编程网

图1:骰子游戏

首先创建一个新项目,删除猫咪角色,在角色列表中加入角色Duck、D、E,角色D和E分别有6个造型。
角色Duck的脚本如下:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
设定两个变量A和B,并生成1-6之间的随机数,广播一条消息“Roll”。角色Duck说出分别代表两个骰子数值的变量A和B之和。
角色D和E的脚本如下:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
当角色D、E接收到“Roll”消息后触发脚本,转动骰子,最后停在变量对应的造型上。点击绿旗运行看看!

2、变量的范围

变量还分为局部变量和全局变量,新建变量的时候,系统会询问变量的范围,适用于所有角色的即全局变量,适用于当前角色的即局部变量。
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
下面我们用一个小程序来说明这两种变量。新建一个项目,添加两个角色猫咪Cat和企鹅Penguin。我们需要在游戏中让企鹅说出猫咪脚本里产生的随机数,下面我们来看看局部变量和全局变量引用的区别:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网

图2:局部变量和全局变量引用的区别

如果C1为猫咪的局部变量,企鹅要引用他必须通过侦测模块的积木【Scratch2.0编程教程】第五节:数据模块-少儿编程网来完成;如果C1为全局变量,则企鹅直接引用就好。

变量的值在脚本执行的过程中也是随时变化的,可以直接通过脚本指定,也可以通过运算得来。图3为蜘蛛织网的过程:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网【Scratch2.0编程教程】第五节:数据模块-少儿编程网

图3:蜘蛛织网

通过变量C的值不断的变化来让画笔画出一条蜘蛛网。当然这样多重坎套的程序可读性是很差的,在后面的章节中我们会讲到结构化的程序,把脚本的内容分成不同的小过程来调用。

3、克隆体中的变量

当角色被克隆时,克隆体会继承原角色中所有的属性和局部变量,并且他们的值和原角色相同。但是在克隆之后,克隆体属性和局部变量的变化就不会再影响到原角色的值,原角色的局部变量也不会影响到克隆体,两者都是独立的了,相同的仅是在克隆的那一瞬间。
下面我们通过两个小程序来说明这个问题,为角色设置一个局部变量,并赋值为1,当局部变量变化时,并不影响之前克隆体的变量值。
【Scratch2.0编程教程】第五节:数据模块-少儿编程网

图4:当变量作为局部变量时克隆体不会受到影响

【Scratch2.0编程教程】第五节:数据模块-少儿编程网

图5:当变量作为全局变量时克隆体会受到影响

当某些场合需要显示变量的值在屏幕上时,可以有2种方法,一个是直接在变量前勾选复选框,然后舞台就会显示变量,可以拖动到自己想要放置的位置,第二个方法是通过脚本来控制。
【Scratch2.0编程教程】第五节:数据模块-少儿编程网

4、变量的输入

下面我们再来制作一个葵花籽按照不同角度分布的程序来说明变量的输入。
【Scratch2.0编程教程】第五节:数据模块-少儿编程网

图5:使用不同的角度生成的葵花籽团

角度变量Var通过用户用滑块输入,当按下空格键后,程序根据Var的角度来绘制葵花籽。
还有一种方法是通过输入框得到用户的输入,利用侦测模块中的询问...并等待积木。并且在角色显示与隐藏的时候表现的形式不同。
【Scratch2.0编程教程】第五节:数据模块-少儿编程网

图6:询问...并等待的积木有两种表现形式

图7是询问用户的年龄,等待用户输入后,显示并计算,这里用到了链接......积木。
【Scratch2.0编程教程】第五节:数据模块-少儿编程网

图7:等待用户输入作为变量参与计算

还有下面两段脚本,执行试试看?
【Scratch2.0编程教程】第五节:数据模块-少儿编程网

二、链表

一个变量可以存储一个值,但是如果要存储一系列的值就不行,比如好友们的点好号码,如果我有100个好友,那需要100个变量,这是不可取的。下面我们来介绍链表。链表是可以存放许多变量的数组,链表就像很多层的抽屉,每一层都有一个索引,根据索引就能找到你需要的值。

1、链表的创建和操作

链表的创建和变量一样,在数据模块。链表也分局部访问和全部访问。数据模块,选择新建链表,就可以创建一个空的链表。链表创建后,数据模块会多出如下的链表操作积木:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网

图8:新建链表后增加的操作积木

用这些积木可以操作链表,比如增加、删除等操作。
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
创建链表后,舞台上会显示出来,这个时候如果已经有固定的值可以点击左下角的“+”号填入值。
例如我们让猫咪陆续说出链表中的星期几:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网

2、动态链表和数字链表

链表的功能非常的强大,在程序运行的过程中可以随意的增加、删除、查询等操作内部的变量。例如一位老师要录入一个班的考试成绩,也可以有两种方法:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
下面我们来制作一个根据输入的数字绘制柱状图的程序。
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
程序根据输入的数据生成柱状图显示出来。
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
当全班的成绩被录入链表后,要知道最高分和最低分以及平均分,我们用下面这段脚本:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网

3、链表的搜索和排序

Scratch中包含积木可以检索出链表中是否含有特定的值,但是如果要知道这个值具体在链表的哪个位置,就需要自己通过搜索和排序来得到这个结果。
假如我们要知道这个班的学生中是否有考100分的人:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
假设我们还要知道这个班中考100分的有多少人:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
假设电话本里存储了很多人的信息,我们通常喜欢将其按照某些元素来进行排序便于查找。排序的方法有很多,冒泡排序是最常用也是最简单的方法之一。下面来举一组有5个数字(6,9,3,7,2)链表的冒泡排序的例子,首先将链表的第1位和第2位两个数进行比较,如果前面比后面大就交换位置,然后第2位和第3位,以此类推。因为链表有5个变量,所以需要这样比较4轮,我们用下图来说明这个过程:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
明白冒泡排序的过程了吗?那么在Scratch中如何用程序来实现它呢?下面来设计一段脚本:
【Scratch2.0编程教程】第五节:数据模块-少儿编程网
我们还可以来试试如果比较的是英文字母?或者排序按照从小到大而不是从大到小?

本文链接:【Scratch2.0编程教程】第五节:数据模块

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:少儿编程网,谢谢!^^


*文章为作者独立观点,不代表少儿编程网立场
发表评论

坐等沙发
相关文章
编程少年丨余疆海:个性十足却不失温度
编程少年丨余疆海:个性十足却不失温度
为什么大家都建议学习少儿编程要从Scratch开始?
为什么大家都建议学习少儿编程要从Scrat…
孩子学完各个阶段的编程课程能够参加哪些比赛?
孩子学完各个阶段的编程课程能够参加哪…
我的孩子从来没有接触过编程,0基础能不能学?
我的孩子从来没有接触过编程,0基础能不…
【精选作品】如何通过Scratch让小猪跑起来?(内附火影粉丝巨献,必看)
【精选作品】如何通过Scratch让小猪跑起…
0基础的孩子应该怎样学习少儿编程?
0基础的孩子应该怎样学习少儿编程?
Scratch是由麻省理工学院(MIT)设计开发的一款面向少年的简易编程工具,是适合于全世界儿童学习编程和交流的工具和平台