儿童编程启蒙:4.基础:Scratch脚本标签(数据模块)

网友投稿 2018-06-28 09:24

上一篇将脚本标签中常见而且重要的动作、事件、控制、侦测模块讲了,那么今天涉及到一个更接近自然语言编程的模块:数据模块。


这个模块到底是干什么用的呢?

我们要知道一个复杂的程序或者项目应该能记忆数值,并根据特定条件选择不同的行为。脚本在运行过程中要处理各种类型的数据:命令积木中的输入参数(如移动10步中的数字10、说Hello!的字符串Hello!)、功能积木的输出(如鼠标的x、y坐标、在....到...间随机选一个数),以及由用户输入的数据(询问...并等待)。

而对一个复杂的程序而言,我们还需要存储、访问、修改数据才能完成一个特定的任务。

本篇涉及的数据模块正是基于这一需要产生,它通过变量和链表来实现。

https://cdn.china-scratch.com/timg/180630/09240543G-0.jpg

变量

变量是可以理解成用来存储数据的一个盒子,这个盒子只能装一个数据(数字、文本、布尔数据),比如用来存储整数,装了1之后,再装2的话1就没有了,去盒子里拿只能拿到2这个数,如果装了字符串"blue"之后,再装“red”,那么盒子只保存“red”这个字符串了。这个盒子外面是这个变量的名字,盒子中装得是这个变量所代表的值。

https://cdn.china-scratch.com/timg/180630/09240C2I-1.jpg

新建一个变量(需要命名,命名最好根据这个变量实际保存数据的意义来命名,可以中文、可以英文,推荐用英文)。

https://cdn.china-scratch.com/timg/180630/09240632A-2.jpg

其中“适用于所有角色”和“仅适用于当前角色”,选择前者,那么这个程序中所有角色都可以修改该变量(相当于全局变量),选择后者,只有当前这一个角色可以修改该变量(相当于局部变量)。

确认后,数据模块中就多了一个变量以及四个指令积木块,代码如果要读颜色这个变量引用这个变量就使用第一个"color",如果要修改或者显示、隐藏这个变量就使用下面四个指令积木块。

https://cdn.china-scratch.com/timg/180630/0924063144-3.jpg

对于Scratch变量,不得不提的是Scratch的数据类型,应用程序的任务是处理各种数据类型(如数字、文本、图像等)的数据并生成有价值的信息。因此,要完成编程任务,必须要理解Scratch数据类型的概念和所支持的操作。Scratch支出三种数据类型:布尔类型、数字类型和字符串类型。

布尔类型仅包含两个值:真和假,即True和False。布尔类型使用的场景绝大多数是在判断中进行,用于测试某个条件是否满足,从而让程序选择不同的执行路径。

数字类型可以是整数也可以是小数。虽然许多编程语言区分这两者,但Scratch并不区分,毕竟它们都属于数字。

字符串类型是一系列字符的集合。字符可以是字母(大小写均可)、数字(0~9),以及能在键盘上输出的符号(+、-、*、/等)的组合。所以字符串可以存储姓名、地址、图书标题等。

链表

如果理解了变量,那么链表就容易理解了。变量是一个带名字装数据的盒子,那么链表就是一串盒子连起来,每个盒子都可以装一个数据,这一串盒子只有一个名字。

创建链表与创建变量一样:

https://cdn.china-scratch.com/timg/180630/09240A444-4.jpg

创建成功后:

https://cdn.china-scratch.com/timg/180630/0924061119-5.jpg

因为链表是由很多盒子组成,但不同的是这些盒子都不像变量中的盒子有名字,那么如果一个链表中如果有多个盒子,我们如何取得其中某个盒子中的值呢?答案是位置。因为这些盒子中的值是程序设计者自己先放进去,后面去读写操作,应该知道Scratch链表中每一个盒子中放的值是用来干嘛的,在链表的哪个位置。那么后面他要使用链表中的某个盒子的值时,就会根据链表的位置去拿数据。

游戏设计环节

为了加深对变量以及链表的理解,这里我们设计单个小猫随机出石头剪刀布的游戏,并且统计在循环的次数内小猫说了多少次石头、剪刀和布。

其中链表(word_list)存放石头、剪刀和布三个字符串,由于要统计石头、剪刀和布各说了多少次,添加了三个变量(stone_count  scissor_count  cloth_count)分别存放次数,由于是随机选择链表中的单词,而判断和选择的时候需要另外再次引用同样的单词,所以需要保存随机的选择,加入a_choice这个变量。

https://cdn.china-scratch.com/timg/180630/0924064042-6.jpg

有兴趣的Scratch'er可以想下如果是两个角色玩石头剪刀布该如何实现呢?

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com