中华学习机原理和应用(16) ——XMF-BASIC

🏠 首页 《无线电》杂志 1989年 🔗 第4期 🔗 第28页 分类:家电商情 🔗 张世英 🔗

§5.输入输出命令

一、LET

格式:[LET]变量=表达式

功能:使“=”左部的变量取“=”右部表达式的值。此处“=”称为赋值号,其左部和右部的数据类型必须相容。关键字LET可以省缺。

二、INPUT

格式:INPUT[字符串常量;]变量[{ ,变量}]

说明:[ ]内的部分可以省缺;{ }中的内容可以重复出现(下同)。

功能:程序运行中遇到此语句时将显示问号,等待用户为INPUT所跟的变量由键盘上输入相应类型常量数据。输入多个数据时,两个数据之间敲入一个逗号,以<CR>作结束。也可每输入一个数据敲一次<CR>。直至输入结束,程序下滑运行。

当INPUT紧跟有字符串常量时,这个常量会输出,作为提示信息。

三、GET

格式:GET变量[{,变量}]

功能:同INPUT类似,等待用户由键盘为相应变量输入数据,但它不给出任何提示,输入的数据也不予显示,且每个变量只接收一个键入码(因此,若GET带有多个变量时,由键盘输入的两个数据不得以逗号或<CR>分开,因为这种逗号或<CR>也会当作数据),输入结束后无需敲<CR>键,程序会继续往下执行。

四、READ/DATA

格式:READ变量[{,变量}]

DATA[常量[{,常量}]]

功能:执行READ语句时,它所跟的变量将依次取得DATA语句所跟的数据。因此要求DATA中的数据必须与READ中的变量依序具有相容的数据类型,且DATA中的数据个数不得少于READ中的变量的个数。只要不改变变量名的顺序,一个READ语句可拆写成多个READ语句;同样,只要不改变常量的顺序,一个DATA语句可拆写成多个DATA语句。DATA语句可写在程序的任何部位。

五、RESTORE

格式:RESTORE

功能:执行此语句后,若再遇READ语句,将从第一个DATA语句开始取得数据。

六、PRINT

格式:PRINT[表达式][{,表达式}][,]或[;]

功能:将所跟的表达式的值予以输出。两个表达式之间如用分号隔开时,后续输出将连接在一起;两个表达式之间由逗号隔开时,第2个表达式的值被送至第1个表达表值输出区的后续输出区(显示屏左右共分3个输出区,前两个区各占16个字符位置,第3区占8个字符位置)。PRINT不带表达式时,仅产生回车换行动作。PRINT输出的均为常量。

关键字PRINT可以用问号(?)代替。

XMF-BASIC对PRINT语句增加的功能是,可以将-65535~65535之间的数以十六进制数予以输出。这个范围内的数正好覆盖了64kB内存的全部正负地址。

七、 SPEED=

格式:SPEED=算术表达式

功能:用来设定输出的速度。算术表达式的值应在0~255之间。数值越小,输出速度越慢。正常情况下,系统设定其值为255。

八、VTAB和HTAB

格式:VTAB算术表达式

HTAB算术表达式

功能:用来设定输出字符的位置。VTAB用于设定输出的行,因此,它所跟的表达式的值必须在1~24之间。HTAB设定输出列的位置,它从当前光标所在列的左部算起,当所跟算术表达式的值比光标所在列数小时,此命令无效;当算术表达式的值大于40时,输出位置转下一行;算术表达式的值大于80时,再转下下行,如此类推。输出位置超过屏幕末行时,产生屏幕滚动。HTAB所跟表达式的值,必须在1~255之间。

九、FLASH、INVERSE和NORMAL

格式:FLASH

INVERSE

NORMAL

功能:设定输出字符的显示方式。FLASH设定为闪烁方式;INVERSE设定为反白方式;NORMAL设定为正常方式。一般情况下,系统自动设定成正常方式。

§6.控制命令

一、 GOTO

格式:GOTO行号

功能:无条件地跳转至指定的行号去继续运行。

这类被转移的行号,在APPLEⅡBASIC中必须用无符号的整数给出,而在XMF-BASIC中,允许以算术表达式的形式出现。以下几个命令中有类似情况,将不再一一说明。

二、IF…THEN

格式:IF逻辑表达式THEN语句[{ :语句}]

功能:当逻辑表达式的值为真时,执行THEN后面的语句;否则,跳过它们执行下一个程序行。

当THEN之后紧跟一个GOTO语句时,可省去THEN、GOTO两个关键字中的任一个,且GOTO语句之后的语句自行失效。

THEN之后的语句可以是任何一种语句,但若为循环语句(见下面的三)时,该循环语句必须写在本程序行内。THEN之后也可再有IF…THEN语句。

在APPLEⅡBASIC中,如果逻辑表达式最后一个字符为字母A,会将此字母与关键字THEN首字母组成关键字AT,造成解释执行错误。在XMF-BASIC中,能够正确地辨别与处理这种情况。

三、 FOR…NEXT

格式:FOR实变量=算术表达式1 TO算术表达式2 [STEP算术表达式3]

NEXT[实

€?)
功能:这是一个具有特殊结构的语句,称循环语句,可以写在若干个程序行中组成一个程序段。其中,删节号部分为若干程序行,称为循环体,实变量称为循环变量,算术表达式1称为循环初值,算术表达式2称为循环终值,算术表达式3称为步长(或循环增量)。循环语句执行时,先使循环变量取循环初值,然后执行循环体内各语句,遇到NEXT时,循环变量的当前值加上步长再赋值给循环变量,接着检查循环变量的新值是否越过了循环终值,如果未越过,再次执行循环体内各语句,遇NEXT时再修改循环变量的取值并与循环终值进行比较。如此反复,直到循环变量的值超过循环终值时,结束循环语句,执行NEXT后面的语句。

循环体内的语句,可以是任何语句。如果循环体内有GOTO或IF…THEN之类跳转语句时,可在本循环体内跳转,也可以跳转至本循环体之外,但绝不允许从循环体外跳转至循环体内。如果循环体内再出现循环语句时,则构成循环嵌套,这种嵌套不得超过10层,并且不同层次不得交叉出现。

四、 GOSUB和RETURN

格式:GOSUB行号

RETURN

功能:程序遇到GOSUB时,将转至指定的行号执行一段子程序。在子程序的尾部应有命令RETURN,由它控制退出子程序,返回GOSUB语句的后续语句继续运行。

子程序中可以有任何语句。如果有循环语句时,通常FOR和NEXT均应在该子程序中。子程序中还可以通过GOSUB语句调用另一个子程序,从而构成子程序的嵌套,但这种嵌套不得多于25层。

五、POP

格式:POP

功能:它与RETURN有类似的作用,写在由GOSUB调用的子程序尾部,但执行POP后并不返回GOSUB的后续语句,而是接着运行POP之后的语句。

六、ON…GOTO和ON…GOSUB

格式:ON算术表达式GOTO行号[{,行号}]

ON算术表达式GOSUB行号[{,行号}]

功能:依算术表达式的当前值跳转至相应的程序行。算术表达式的值为1时,转至指明的第1个行号;算术表达式的值为2时,转至指明的第2个行号…。当算术表达式的值小于1或大于指明的行号个数时,本命令无效,直接执行后续语句。

ON…GOTO和ON…GOSUB之区别是,前者跳转至某一行号后,不会再转回来;而后者转至某行号后,那里应是一段子程序,遇RETURN后,会返回ON…GOSUB的下一个语句继续运行。

七、ON ERR GOTO和RESUME

格式:ON ERR GOTO行号

RESUME

功能:在执行ON ERR GOTO之后,如果程序中出现了错误,不会象平常那样给出提示并停止运行,而是转移至ON ERR GOTO指明的行号。用户应从该行号开始写出一段出错处理程序,并在这段程序之尾部置一条RESUME命令。机器执行这段程序后遇到RESUME,会自动返回刚才出错的地方继续运行。

八、STOP、END和CONT

格式:STOP

END

CONT

功能:STOP中止程序的运行,并提示中止的行号;END终结程序运行,不提示终止位置。CONT可使由STOP、END和CTRL-C停下来的程序继续运行下去。

§7.数组

一、 DIM

格式:DIM变量(算术表达式[{,算术表达式}])

功能:用来定义一个数组的维数和各最大下标值。未经DIM定义而直接使用的数组,各最大下标值被系统定义为10。

本机使用数组时,维数可多达88维。最大下标值的最大允许值依剩余空间大小而定,但不得为负值。

此处的变量名即数组名。

二、MAT(或@)

格式:MAT[LET]数组名=数组名[+或-数组名]

MAT PRINT数组名

功能:用于数组的整体赋值或打印。

第一种格式,可将“=”右部的数组(或右部两个数组各元素相加或相减后)赋值给“=”左部的数组。但对于字符串数组来说,“=”右部数组只能相加(联接)不能相减。

第二个格式,可将指定数组各元素一一输出,每个元素之间留出空格。对于二维以上的数组,输出完一行元素后会自动换行。

MAT命令是XMF-BASIC增加的命令,在APPLBⅡBASIC中不存在。

三、STORE和RECALL

格式:STORE算术型数组名

RECALL算术型数组名

功能:STORE可将指定的数组各元素录于磁带上;而RECALL则可将由STORE录于磁带上的数组元素依次读入机器中,成为RECALL指定数组的各元素。(待续)(张世英)