简介

在上一篇文章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列所在位置元素值,并显示出来,效果对应于性别值“男”。

小结

本文先容的方式具有普适性,可以进一步扩大思绪,使用多个距离符方式来使用列表实现3维甚至是多维数组!有兴趣读者可以实验一下。

以前的文章中我曾经多次提到,Scratch这个工具实现的是编程中最最基本的功效支持,稍微扩展性的功效可能需要开发者自己来通过自定义积木实现。通过本文中的字符串操作人人已经看出这一点,它连常见的其他高级语言中的子字符串操作运算都没有提供直接支持,也正是由于这一点,实现起本文及前文中的编程相对贫苦一些。