友情提示:380元/半年,儿童学编程,就上码丁实验室。
第二讲 我爱背单词(一)
本讲开发一个简单的背单词软件,允许用户自由导入各类单词库,并可以通过看中文输入英文,看中文选择英文两种方式来进行单词测试。具体程序展示请看视频。
一、链表功能的学习
在Scratch的数据指令集下,用户可以自主定义链表。
链表是这样一组用户自定义的数据,他是一组可变数量的变量的集合,若干个变量像小朋友做活动时排成的队列一样,Scratch提供了丰富的指令集,可以对链表中的每一个变量做单独控制。下面对链表功能做详细说明
1、新建链表
新建链表的方式与新建变量类似,点击数据指令集中的新建链表,
在弹出的对话框中,填写任意名字作为链表的名字,这里使用“中文库”作为我们的名字,然后点击确定按钮。
这个时候,在数据指令集下就出现了一个名为中文库的链表变量,以及一系列用于操作链表的指令。同时在舞台区显示一个类似于容器的方框,这里可以直观的显示链表内存储的内容。
2、链表操作指令
点击链表名字前的复选框,可以控制链表内容在舞台区的显示与隐藏。
这四条指令用于操作链表中的数据。
第一个指令用于按顺序在链表中添加内容。如同小朋友排队,每执行一次这个指令,则增加一个排队的人,新增加的人在整个队列的队尾。
第二条指令用于删除链表中指定位置上的内容,删除后,该位置后面的内容依次向前递补整个链表内容。这如同在一个队列中撤掉一个人,这个人后面的所有人自动向前移动。
第三条指令用于在链表中指定位置插入新的内容,插入位置后面的数据依次后移。如同排列时指定位置有人插队,那个位置后面的所有人都需要向后移动
第四条指令用于替换掉指定位置的内容,如同排队时,某个位置的人被其他人替换掉,这并不影响其他位置的人。
为了更好的理解链表这四条指令的功能,请按下列方式操作链表,并查看舞台区链表中的数据如何变化。
特别注意在delete,insert和replace这三条指令中的数字代表的是执行指令时链表的相应位置编号,这个编号在舞台区链表中的最前面会有显示。
3、链表信息指令
这三条指令用于提取链表中存储的数据。
第一条指令用于直接提取出链表指定位置存储的内容。
第二条指令用来提取链表的长度,在实际使用链表时,我们经常需要得到链表的长度,以便于我们进行操作和判断。
第三条指令用于判断某个链表中是否包含指定的信息。这个可以类似于判断小明是否在队列中。如果在则值为真,否则为假。
4、显示隐藏链表
这两条指令通过指令的方式来控制舞台区是否显示链表内容。
5、关于链表的简单指令集
下面编写一段简单的指令集来操作我们已经建立的“中文库”链表。
这段指令,以循环的方式来删除链表中的全部内容,用于清空链表。请注意,这里重复执行的次数由链表长度来控制,链表有多长,我们就重复多少次,每次只删除链表数据的第一项。
新建一个变量,命名为“链表指针”
编写如下指令集并运行。
会发现链表内顺序插入1、2、3、4……10。
二、建立新链表并导入单词
使用刚才的指令清空中文库中的所有数据。下面我们再建立一个新的链表,并命名为“英文库”。
整理一份单词表,将中文和英文分别存入两个文本文件(扩展名为.txt)中。请注意,这两个文件中,英文与中文部分必须一一对应,有多少个英文单词就需要有多少个中文,并且英文与相应中文的顺序要保持一致。
右键点击舞台区的链表,选择导入
在弹出的对话框中选择之前保存的文本文件
这个时候会发现,链表中已经导入所有的英文单词。
在链表中导入中文时需要注意,如果采用与英文同样的方法,会发现列表中导入的全部是乱码。如图
这里需要一个技巧,首先清空需要导入的中文库,点击舞台区链表左下角的加号,链表会处于可以手动输入的状态。
此时,随便输入任意汉字后,右键点击中文库的链表,选择导出
将导出的文件保存好。双击打开这个新保存的文件,删除文件中的所有内容,将需要导入的单词中文部分拷贝到这个文件中并保存。使用这个新制作的文件重新导入,则不会出现乱码问题。
三、实现最简单的单词拼写输入测验程序
1、导入背景
为了让程序看起来更加漂亮,我们从背景库中导入背景room1,并将此背景命名为单词拼写。
2、初始化小猫
将小猫置于舞台的左下角,并调整到合适的大小
3、编写代码
首先编写如下代码
请注意我们这里的代码段,开始标签为“当背景切换到单词拼写”,这是因为我们这个程序计划使用很多个背景,目前单词拼写这个背景只用于完成单词拼写测验这部分程序。链表指针变量的作用主要用于标识链表中的位置,将这个变量初始化为1,是表示从链表的第一个位置开始操作。
重复执行的次数由链表的长度来控制,我们计划使用循环按照顺序依次读取链表中的数据,逐个测验每一个单词。
下面我们采用一组询问和回答的指令,分别根据链表内容来提问,要求用户输入对应单词。这里我们采用了一个连接语句嵌入到询问语句中,使用连接语句的主要目的是,我们需要根据链表的内容动态调整询问的话,这就需要把变化的部分和不变的部分组合在一起。
中间的动态变化部分又由两部分组成,分别是链表指定位置的内容和用于定位的链表指针组成。将这条组合指令嵌入到询问指令中,现在,这段程序已经可以根据链表指针的数值来询问不同位置对应的问题了。
下面我们需要使用回答指令来接收用户输入的答案,并将这个答案与标准答案进行对照,如果相同则表示用户回答正确,否则用户回答错误。
最后在做出判断后,将链表指针加1,表示开始对下一道题目进行测验。
现在,在脚本区双击已经编写好的这段代码组合,这个单词拼写的程序就已经可以运行了。怎么样,使用自己编写的程序来背单词,是不是觉得很有意思呢?
本讲先到这里,下一节我们将进一步学习如何编写另一种背单词方式,逐步完善我们的程序。
始发于微信公众号:
一人耕者