矩阵
1、定义
与列表一样,矩阵也用于存储数据序列。有所不同的是,矩阵是二维的数组。
要查看矩阵,请打开计算·矩阵应用程序,然后打开按[F3]选项卡。在某些计算器上,可以从MAT应用程序直接访问矩阵。
?→Mat A[a,b
由于矩阵是二维数组,因此必须输入单元的两个坐标a(水平位置)和b(垂直位置),即行数与列数。
你最多可以使用26个矩阵,从A到Z(用字母表示,与用数字指定的列表不同)。
根据计算器的型号,矩阵的尺寸限制为255 * 255或999 * 999。但是你不能创建这么大的矩阵,因为计算器的内存有限(在24到144 KB之间)。我们谈论的是KB,而我们的计算机甚至手机,都在GB、TB的级别。但也不必为此担心,对于大多数程序来说这么大的内存已经足够了。
2、创建矩阵
以下是创建矩阵的两种方法:
1) [[1,2,3][4,5,6][7,8,9→Mat A
2) {2,4→Dim Mat A
1)要创建矩阵,请使用方括号[]。开头的两个方括号:第一个划定了矩阵的边界;第二个表示矩阵的行。因此矩阵的每一行都由方括号定界。下图显示了通过给定示例所获得的矩阵。显然,所有行的长度必须相同,否则会发生尺寸错误。
2)第二种技巧是使用Dim。大括号{}之间的两个数字是矩阵的尺寸。它的用法如下:{,}→Dim Mat。用Dim初始化的矩阵的所有元素的取值都为0(与列表一样)。
3、矩阵的处理
要查询矩阵中包含的值,其原理与列表相似,但是要告知两个坐标(矩阵是具有二维的表)。
Mat A[2,3 //返回矩阵A第二行第三列的值
要修改矩阵单元格中的值,有以下方法:
9→Mat A[2,3
S→List B[2+Y,3+X
Mat A[1,3→Mat B[1,3
5*Mat A[2,3→Mat B[2,3
要删除矩阵或所有矩阵,请使用功能ClrMat([SHIFT] + [VARS]→[F6]→[F1]→[F4])。ClrMat删除所有矩阵,只删除一个矩阵,我们用ClrMat+指定矩阵的字母。不幸的是,你不能专门从矩阵中删除某个单元格。
ClrMat //删除所有矩阵
ClrMat A //仅删除矩阵A
没有函数可以知道矩阵是否已初始化。我们可以用Dim知道矩阵的维数,但是必须对其进行初始化。否则,计算器将返回错误。
[[1,2,3] [4,5,6] [7,8,9→Mat A
Dim Mat A //结果返回到列表Ans中。这里列出Ans = {2,3}
4、列表与矩阵的相互转化
可以用多个列表创建矩阵。在这种情况下,相关列表必须全部具有相同的维度。我们使用功能List→Mat([OPTN] + [F1] + [F2](L→M))。假设:我们想将列表1、2和3转换为矩阵C。语法如下:List→Mat()。
List→Mat(1,2,3→Mat C
将矩阵转换为一个列表,我们只能得到矩阵中的一列。最大值是列表的最大数量(从6到26,具体取决于你的计算器型号)和剩余的内存。
Mat→List(A,1→List 2
5、合并矩阵
Augment()函数允许合并两个具有相同行数的矩阵。通过[OPTN]键,在矩阵选项卡中选择Augment()即可。
Augment(Mat A,Mat B→Mat C
记住此功能的一件事:它可能非常实用,但同时会占用大量内存。它必须首先为融合创建一个临时矩阵(Mat Ans)。如果临时矩阵非常大,你将会收到一条带有“ Memory Error”的消息。
6、矩阵的用处?
在游戏中,矩阵具有无限可能的应用,例如数据库,角色统计信息,纸牌信息,游戏世界等。通常,列表更多地用于临时计算,它们通常在程序的开头和结尾处被删除以优化内存。对于矩阵,程序员通常保留一个或多个充当备份。
井字游戏
1、使用Getkey
目前,我们只知道的一种方式与用户进行通信:''?''。但是,它既不实用也不美观,因为它会使文本向上移动。幸运的是,可以通过Getkey检测按下哪个键。要插入Getkey,如下操作[SHIFT] + [VARS](PRGM),然后[F6] + [F4](I / O)+ [F2](Getkey)。
Do
Getkey→G
LpWhile Not G
如果未按任何键,则Getkey返回0。下图给出了键值。
请注意,[AC / ON]没有值,因为它会中断程序。例如,如果我按[0],Getkey返回71,而[MENU],Getkey返回48。我强烈建议您将Getkey放在一个循环中,这样可以提高响应速度。我经常在程序中看到这种代码:
Do
Getkey→G
If G=71
Then…
IfEnd
If G=72
Then…
IfEnd
LpWhile G≠47
尽可能将您的Getkey与其余的代码隔离,虽然这样会增加一些字节,但程序的反应能力将大幅提高,以下是示例:
Do
Do
Getkey→G
LpWhile Not G
....... //(你的代码)
LpWhile G≠47
2、双箭头=>
在(PRGM)选项卡中,然后选择(转移)[F3],可以找到所谓的“双箭头”=>。它的作用类似于If,但只能执行一个操作。
以下两个代码具有相同的效果。
If A=1
Then 3→B
IfEnd
A=1=>3→B
3、布尔值
布尔值具有两种状态:“真”(不等于0)或“假”(等于0)。
当您执行“ If A = 2”时,计算器将检查A是否为2,如果是,则返回“ true”(1)。否则,它返回“ false”(0)。
但是,让我们进一步进行推理。运行此程序:
?→ A
A = 2
如果输入“ 2”,则计算器显示“ 1”,对于所有其他值,由于A≠2,计算器显示为“ 0”。现在,让我们以“双箭头”部分中看到的代码为例,然后再次对其进行优化。
//使用If-Then-IfEnd
If A=1
Then 3→B
IfEnd
//使用双箭头
A = 1 => 3→B
//使用布尔值
3 *(A = 1)→ B
这三个代码返回相同的结果,它们严格相同。后者使用布尔值确定作为A的函数的B的值。如果A = 1,则条件为true且等于1。因此3 *(1)= 3,B =3。反之,如果A ≠1(如果希望使用精确值进行推理,则取2),因此A不等于1,条件为false等于0,3 *(0)= 0,所以B =0。布尔值的使用提高了代码的运行速度,但往往使理解程序和查找错误变得困难。特别是对于新手,要学会慢慢掌握它们。
4、Isz和Dsz:递增和递减
最后一个小技巧:Isz和Dsz函数。lsz将变量增加1,Dsz将变量减少1。要找到这两个功能则先找到(PRGM)选项卡,然后再按[F3](转移)。
1→B
While B<100
Isz B
Locate 1,1,B
WhileEnd
请注意:Isz和Dsz具有隐藏功能。如果递增或递减后变量为0,则忽略下一行。请密切注意这种特殊性,这是经常犯的错误!
1→B
Dsz B
”HELLO”
”GOODBYE”
屏幕上不会出现“ HELLO”。现在你应该了解它们为什么在(转移)选项卡中,因为它们允许根据特定条件执行跳转。
现在你可以制作自己的井字棋游戏了!
游戏示例可在此网站下载:井字棋代码