·2.1定义常量,变量,数组语句
·2.2定义函数和sub语句
·2.3声明语句
·2.4选择结构语句
·2.5循环结构语句
·2.6输入输出语句
·2.7其他命令
·三.zwbasic库函数用发及示范
二.zwbasic各命令用法及示范在我们提供的命令中绝大部分语句于标准qbasic是统一的,但是有个别语句暂时并不是与之完全一样,例如read/data。另外zwbasic暂时不提供文件操作,这个缺陷也会在以后的版本中得到修改。
基本上所有的命令都有相应的示范程序,对于那些没有示范程序的命令,照标准qbasic使用就行。或照类似语句使用,例如while……wend与dowhile………loop。
2.1定义常量,变量,数组语句 2.1.1commonshared命令
2.1.2const命令
const定义的对象必须在定义的时候初始化,后来的程序中不能对常量进行赋值,输入等写操作。对于普通变量的赋值用类似于:constpi=3.14这样的语句就可以了,对于数组的赋值,类似于c语言中的数组初始化,但是要换行输入的时候记得加换行转义符’\’.
2.1.3dim命令
用来定义局部变量和局部数组,定义的时候不能对它们进行初始化。对于某些命令使用陌生变量时会自动定义,而不报错,例如input,for,let等。假设语句inputx中的x之前没有定义,但是这条语句在编译的时候不会报错,在这后面的语句中也可以使用x。但为了程序的稳健性,最好用dim语句定义之后再使用。
2.1.4dimshared命令
用来定义全局数组
2.2定义函数和sub语句 2.2.1function命令
定义函数命令,在传参的时候,有值传递方式和地址传递方式之分,这个于qbasic是一致的,但函数调用的时候不支持static选项。注意在定义function和sub时,一定要在basic程序的最前面用declare命令声明!
2.2.2sub命令
2.2.3deffn命令
定义单行函数。注意定义当行函数也要在程序的最开头用declare声明,单行函数的函数名应该以字母fn开头。
示范程序
2.3声明语句 declare命令
注意function,sub命令的示范程序
2.4选择结构语句 2.4.1if….then…..else…if….endif命令
注意elseif后面要加then,不然判断语句失效.支持单行if语句模式
2.4.2selectcase..case……..caseelse…endselect命令
现在只支持数字类型使用这条命令
2.4.3on…gosub……..命令
2.5循环结构语句 2.5.1do……………………loop命令
2.5.2do………………loopuntil命令
2.5.3dowhile………………loop命令
2.5.4for...to..step...next命令
2.6输入输出语句 2.6.1input命令
为变量赋值,回车键作为结束
示范程序
2.6.2print命令
显示命令。如果一次显示多个对象,各对象之间用‘;’隔开,如果一行显示不完所有的对象,会自动换行显示。如果一屏显示不完,自动清屏,从屏幕的左上角开始显示。
示范程序
2.6.3xprint命令
调试用print命令,效果于print命令一样,只是在pc机上用来调试,对象显示在编译信息栏里,真正的在小机上运行,不执行这条语句。将print命令示范程序中的print命令换成xprint,即可看到效果
2.6.4read/data命令
与qbasic的标准语法一致,不同点是在我们自己定义的function或是sub中也可以使用read/data语句.每个function或是sub中都有自己的data栈.一个function或sub中的data语句不会影响到其他函数的data区.
示范程序
2.6.5restore命令
与标准语法一致,示范程序见read/data的示范程序
2.7其他命令 2.7.1let命令
可以直接用赋值符号‘=’代替次语句,例如语句:leta=2和语句a=2效果时一样的。
2.7.2pause命令
暂停键,按任意键继续!
上面有太多程序用到pause键,这里就不写出示范程序
2.7.3inc/dec命令
一个是自增,一个自减运算。它们操作的对象只能是数字变量
示范程序
2.7.4end命令
程序执行结束标识,每个basic程序都至少应该有一条end语句
2.7.5rem命令
注释用,在zwbasic中有两种注释方式,一种是整行都是注释信息,用rem语句,另一种是在一条语句后面加上符号’注释。注意用后面的注释方式时,符号’以后不要出现冒号。
三.zwbasic库函数用发及示范3.1库函数的简要说明
这个版本的库函数,暂时不提供数学上的三角函数及文件操作函数,数学函数里面暂时只有,随机,求整,求绝对值等简单的数学函数,更多的库函数会在以后的版本中陆续推出。
3.2字符串操作函数
3.2.1strcmp函数
3.2.2strcpy函数
3.2.3strlen函数
3.2.4strncat函数
3.2.5strncmp函数
3.2.6strcat函数
3.3显示字符操作函数
3.3.1.sysputchar函数
对于一张bmp图,如果它的宽<=159,高<=96我们就可以在电子词典上显示出来。
首先注意要转换的必须是一张bmp图,对于jpg,gif等格式的图片可以先通过一些软件转换为bmp图片。我们的显示机制是:先将一张位图中包含的信息转换为basic程序中一个常量数组的各个成员,然后把这个数组当作putpct的最后一个参数使用。
义符”\”,直到数组赋值结束,这里的换行转义符只在定义常量的时候才用到,其它使用编译时会报错!
3.3.2.sysprtstrg函数
注意此程序与print的区别,用print显示的字符,当一行显示不下,系统回自动换行显示,但sysprtstrg却只显示完一行,多余的字符不会换行显示。
3.4普通图形操作函数
3.4.1fillrect函数
填充矩阵
3.4.2clspart函数
清除部分屏幕
3.4.3circle函数
画圆,前两个参数确定原点坐标,第三个参数决定半径
3.4.4line函数
画线,前两个参数决定线的一端点,后两个参数决定线的另一端点
3.4.5box函数
画矩阵,前两个参数决定矩形的左上点,后两个参数决定矩阵的右下点
3.4.6set函数
画点,前两个参数决定画点的左边,最后一个参数决定是在此处画一点,还是清楚一个点
0-清除点,1-画点
3.4.7lineclear函数
消隐一条直线
3.4.8circleclear函数
消隐一个圆,注意这里只消隐圆的边框,圆内部的点不被消隐
3.4.9rectclear函数
消隐一个矩形框,只消隐矩形的边框,矩形内部的点不被消隐
3.4.10fillcircle函数
填充圆
3.4.11lcdreverse函数
指定区域屏幕反显
3.5putpct贴图函数
它的函数原型是putpct(x,y,width,height,bmp!),开始的两个参数是决定开始贴图的起始坐标,width,height分别是图片的宽和高。这里最重要的就是bmp!参数,它是记录显示图片信息的数组名,这个数组只能定义为常量数组,数组名的最后一个字符必须是”!”。
3.6数学函数
3.6.1abs函数
求一个数的绝对值
3.6.2int函数
求整函数
示范源程序
3.6.3rnd函数
随机函数,假设参数是x,随机函数返回0~x-1之中的任何一个整数
示范源程序
3.6.4val函数
字符串转数字函数.
示范源程序
3.7其他函数
3.7.1getkey函数
返回按键的asc码,有些电子词典上的特殊按键对应的asc见表特殊键asc码.txt
这里需要注意的是:对于对电子词典上电源开关键,词典相关的热键等无需理会,我们的解释器会自动进行处理
pc机上的开发环境上,除了小机上的向上,向下的翻页键,其他都与小机上是统一的。
示范源程序
1.对于所有对象,包括函数名,变量名,常量名,数组名,命令等不区分大小写.
2.程序的每行最多只能有512个字节(一个汉字占两个字节).
3.支持传统basic的行号,也可以用字符label代替.
4.一行内可以写入多条语句,各语句之间用‘:’隔开
例如:print10:x=4:y=3
5.一个basic中至少有一个出口,即end语句.
6.zwbasic不支持函数的嵌套定义,但支持函数的嵌套调用和递归调用。最多能嵌套调用50次.
7.selectcase语句现在只支持数字类型.
四,编译错误与原因:(信息显示再编译信息栏)
memoryfull!内存分配不足
vartoolong!字符太长溢出
zerodivided!0做了除数或是求余数
nestingtoomany嵌套层数太多(包括函数嵌套,select嵌套,gosub,return等嵌套)
error中间代码出错
fileopenerror没有选择中间代码文件(只在pc上运行会显示的报错信息)
readtypenomatch read变量类型于data区数据不匹配
readoverflow read数据超过data区边界
要注意的几点:
1,每条语句最后不要加分号,不然会有解析错误的报错
2,对一行后面以’注释时,’后面不要有“:”号,否则会报错
3,当编译完一个basic,编译信息栏里提示完”编译成功!”,但是点运行按钮,有时小机上会显示error
这时请重新点击编译和运行就ok。
示范源程序