Scratch中间接实现多维数组支持(二)
2023-05-27 00:17:40
简介
在上一篇文章Scratch中间接实现多维数组支持(一)中,我们介绍了使用Scratch列表表达二维数组的一种方法,注意到此种方法有两个问题: (1)仅能表达二维数组 (2)数组中的元素长度仅能为1 在本文中,我们将介绍一种更为通用的使用列表表达二维(甚至是多维)数组的一种方法。希望朋友们能够真正掌握这种方法以便在复杂程序开发中补充Scratch列表的不足。存储形式
在本文介绍的方法2中,列表中的每个项都是数组中的一个项。这样就能够允许数组项包含多个字符,而且有可能使得数组支持多个维度。 先看形式表达上的简单举例,最后来归纳概念与有关算法。
上面是最直观不过的一个二维数组表示形式。同时,这个数组共有2行,每一行共有4个元素,分别存储人物的编号、姓名、性别与年龄4种信息。下面,我们通过两种典型操作——检索(搜索)与修改(编辑)来对比上一种方法。另外,上图中几个私有变量都是在操作数组过程中起辅助作用的。
[小结]在本文介绍的第二种表示方法中,列表中每一项的前两个字符是固定不变的,含义也十分明确——分别表示二维数组的行数(例如N)和行号与数组实际数据的间隔字符(本例中使用冒号“:”这个间隔符一般是一个固定字符即可,未必是冒号)。间隔符后面是元素内容。例如,本例中第2行第5列(即上面列表中第5个元素)全体内容为“2:0102”,实质对应的二维数组元素为人物的编号“0102”.
1.数组修改操作
数组编辑操作
这段代码中,变量三个变量都是起辅助作用的,意思不言自明,分别表示要操作的数组阵列的行(row)、列(col)与数组中总列数(Columns)。
总体来看,使用Scratch列表的“replace...”积木即可完成修改指定位置的二维数组元素值的目的。
上面代码执行后,数组内容变成如下图所示:
修改后数组中第2行第2列新内容
2.数组检索操作
相对于上文中提到的方法,本文方法中二维数组检索元素麻烦一些。 针对上面修改后的内容对应的元素,可以使用如下代码把这个元素搜索并显示出来:
搜索数组元素代码
执行后角色将会说出对应的数组元素的新内容为“刘备名字”。
接下来,整理一下上面的检索代码,把它做成一个自定义积木形式(前面的修改操作相当简单,有兴趣的读者可以自行制作一下):
自定义积木检索数组元素代码及调用示例
上面调用示例是搜索数组中第2行第3列所在位置元素值,并显示出来,结果对应于性别值“男”。
微信扫码关注
抖音扫码关注