BASIC解释器手机JAVA版.doc_第1页
BASIC解释器手机JAVA版.doc_第2页
BASIC解释器手机JAVA版.doc_第3页
BASIC解释器手机JAVA版.doc_第4页
BASIC解释器手机JAVA版.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BASIC解释器手机JAVA版 2字符串连加式被称之为字符串运算式,表达式可由字符串变量,字符串常量,+(连加运算符),返回值为字符串的函数组成,如A$+_+B$+MID$(name,1,3),单个字符串常量或者变量构成一个最简单的字符运算式。RBASIC提供了如下的字符处理函数:len(s$):返回字符串s$的字符个数;instr(s1$,s2$):返回字符串s1$在s2$中首次出现的位置,找不到刚返回0;left$(s$,n):返回字符串s$的左子串,n为子串的字符个数,如left$(ABC,2),返回AB;right$(s$,n):返回字符串s$的右子串,如left$(ABC,2)返回BC;mid$($s,start,end):取字符串s$从start处到end处的子串,如mid$(ABCDE,1,2)返回AB;数字与字符串运算六数学表达式及数学运算RBASIC支持基本的数学运算,数学运算由数学表达式执行,数学表达由常量,变量,数学运算符,返回结果为数字的函数等组成,如:R*R*3.1415926。单个变量或者常量构成一个简单的数学表达式,如1,X。RBASIC支持的数学运算符有:+(加),-(减),*(乘),/(除),%(模除),(乘方),其运算优先级从大到小为,(*,/,%),(+,-),括号表示其内的运算符有相同的优先级。RBASIC解释器根据这一运算优先级对表达式进行求解。如:2+3*2+1,求解结果为9;数学表达式中可以使用()运算符提高表达式中某部分的运算优先级,如:2+3*(2+1),求解结果为11;()运算符可以嵌套使用,如(1+1)*(1+2*(1+2),求解结果为14。为了避免混淆,负常数出现在表达式中时,应当用()括起来,如:1.3*(-2)+8,负常数出现在表达式开头,可以不加(),如-1+2。数学表达式可用于变量赋值,也可当作函数或者过程参数。除基本的数学运算外,RBASIC还内置了常用的数学函数,其主要有:三角函数:sin(x),cos(x),tan(x),ctan(x),求解对应的三角函数值,注意参数x为弧度。反三解函数:asin(x),acos(x),atan(x),actan(x),求解对应的反三角函数值,返回结果为弧度。指数运算:exp(x),自然数E的指数运算,相当于Ex pow(x,y),任意数的指数运算,相当于xy,如pow(2,3)=23=8;pow10(x),10的指数运算,相当于10x,如pow10(2)=102=100;对数运算:ln(x),log(x,y),log10(x)此外,用户可以根据需要自定义数学函数,自定数学函数在后边的章节里介绍。七字符串运算字符串运算只支持+号运算,其意义表示将两个字符串内容连加到新串当中,如:ABC+DEFG运算结果为ABCDEFG字符串运算支持连加,如A+B+C运算结果为ABCD字符串连加式被称之为字符串运算式,表达式可由字符串变量,字符串常量,+(连加运算符),返回值为字符串的函数组成,如A$+_+B$+MID$(name,1,3),单个字符串常量或者变量构成一个最简单的字符运算式。RBASIC提供了如下的字符处理函数:len(s$):返回字符串s$的字符个数;instr(s1$,s2$):返回字符串s1$在s2$中首次出现的位置,找不到刚返回0;left$(s$,n):返回字符串s$的左子串,n为子串的字符个数,如left$(ABC,2),返回AB;right$(s$,n):返回字符串s$的右子串,如left$(ABC,2)返回BC;mid$($s,start,end):取字符串s$从start处到end处的子串,如mid$(ABCDE,1,2)返回AB;数字与字符串运算六数学表达式及数学运算RBASIC支持基本的数学运算,数学运算由数学表达式执行,数学表达由常量,变量,数学运算符,返回结果为数字的函数等组成,如:R*R*3.1415926。单个变量或者常量构成一个简单的数学表达式,如1,X。RBASIC支持的数学运算符有:+(加),-(减),*(乘),/(除),%(模除),(乘方),其运算优先级从大到小为,(*,/,%),(+,-),括号表示其内的运算符有相同的优先级。RBASIC解释器根据这一运算优先级对表达式进行求解。如:2+3*2+1,求解结果为9;数学表达式中可以使用()运算符提高表达式中某部分的运算优先级,如:2+3*(2+1),求解结果为11;()运算符可以嵌套使用,如(1+1)*(1+2*(1+2),求解结果为14。为了避免混淆,负常数出现在表达式中时,应当用()括起来,如:1.3*(-2)+8,负常数出现在表达式开头,可以不加(),如-1+2。数学表达式可用于变量赋值,也可当作函数或者过程参数。除基本的数学运算外,RBASIC还内置了常用的数学函数,其主要有:三角函数:sin(x),cos(x),tan(x),ctan(x),求解对应的三角函数值,注意参数x为弧度。反三解函数:asin(x),acos(x),atan(x),actan(x),求解对应的反三角函数值,返回结果为弧度。指数运算:exp(x),自然数E的指数运算,相当于Ex pow(x,y),任意数的指数运算,相当于xy,如pow(2,3)=23=8;pow10(x),10的指数运算,相当于10x,如pow10(2)=102=100;对数运算:ln(x),log(x,y),log10(x)此外,用户可以根据需要自定义数学函数,自定数学函数在后边的章节里介绍。七字符串运算字符串运算只支持+号运算,其意义表示将两个字符串内容连加到新串当中,如:ABC+DEFG运算结果为ABCDEFG字符串运算支持连加,如A+B+C运算结果为ABCD字符串连加式被称之为字符串运算式,表达式可由字符串变量,字符串常量,+(连加运算符),返回值为字符串的函数组成,如A$+_+B$+MID$(name,1,3),单个字符串常量或者变量构成一个最简单的字符运算式。RBASIC提供了如下的字符处理函数:len(s$):返回字符串s$的字符个数;instr(s1$,s2$):返回字符串s1$在s2$中首次出现的位置,找不到刚返回0;left$(s$,n):返回字符串s$的左子串,n为子串的字符个数,如left$(ABC,2),返回AB;right$(s$,n):返回字符串s$的右子串,如left$(ABC,2)返回BC;mid$($s,start,end):取字符串s$从start处到end处的子串,如mid$(ABCDE,1,2)返回AB;比较运算RBASIC支持如下比较运算符:(大于),=(大于等于),(小于),=(小于等于),=(等于),(不等于),用于对两个同类的运算式结果进行比较,如:1+2 13,ABC=A+B,a$next,.等等注意,比较运算符两边的表达式类型要一致,不同将数学达达式与字符表达式混比较。如:15XYZ,这种比较无意义更是被禁止的。数学表达式采用的是数值比较,字符串比较运算是按字串的ASCII码逐个比较。比较结果为真返回1,否则返回0,如1 2比较结果为假,返回值为0,A B根据变量(或者常量)A,B的值而定。比较运算的结果可当作一个数值(0或者1)参数与数学运算,因此比较运算与数学运算可以混用,所有比较运算符的运算优先级同,且比数学运算符与字符串连加运算符要低。如:12+1=2被理解为(12+1)=2,显然比较结果为假,返回值为0,整个运算结果即为0。再如:12+(1=2),整个表达式的运算结果为13。15+(AB)的运算结果为16。九逻辑运算RBASIC提供三种逻辑运算符:AND(与运算),OR(或运算),NOT(取反运算),并以0表式假,以非0(通常是1)表式真,其中AND与OR的运算优先级同,NOT的优先级比它们稍高,三种逻辑运算的运算法则如下:0 AND 0=0,0 AND 1=0,1 AND 0=0,1 AND 1=1;0 OR 0=0,0 OR 1=1,1 OR 0=1,1 OR 0=0;NOT 0=1,NOT 1=0逻辑运算的结果可以参与数学运算,数学运算的结果也可以当作布尔值参与逻辑运算,因此数学运算与逻辑运算,比较运算可以混用,此时,逻辑运算的运算优先级最低,如:1+2 0ANDA=B,数学运算优先级最高,因此1+2先被运算,式子变成:3 0ANDA=B,随后是进行比较运算,式子变为:1 AND 0,最后执行逻辑运算,结果为0。条件判断IF语句IF语句可根据不同的条件执行不同的操作,格式为:IF条件表达式THEN语句1ELSE语句2当条件表达式运算结果为真时,执行语句1,否则执行语句2。其中,ELSE部分可以省略,此时在表达式为真的情况下执行语句1,为假则什么也不执行。如:IF A10 THEN PRINTA is bigger than 10ELSE PRINTA isnt bigger than 10当A的值大于10时,程序将会在屏幕上显示A is bigger than 10,其它情况下则显示A isnt bigger than 10.再如:INPUT NAME$IF NAME$=BPNSTHEN PRINTHaha,bpns is my name!程序中要求用户输入姓名,如果用户输入了恰好是BPNS,则会在屏幕上显示Haha,bpns is my name!,其它情况下刚没有显示。条件表达式中可将数学表运算,比较运算,逻辑运算混用,如:IF(A+B)10 AND C=100 THEN.比较运算与逻辑运算的结果都是布尔值(0表示假,1表达真),能直接用于条件判断,数学运算的结果需要转换才能用于条件判断,转换的原则为:0值表式假,其它任何值表式真,这种转换由系统自动完成,用户不必关心。于是,IF ATHEN.等价于IF A0 THEN.基本上,IF语句中,THEN与ELSE后面的语句可以是任意语句,但IF语句自身例外,IF语句中再嵌套IF,可能会造成程序错乱。十一循环11.1 FOR循环格式:FOR循环变量=初值表达式TO终值表达式STEP步长循环体NEXT其中,循环变量可以是整型或实型,RBASIC不支持以数组元素和字符串作为循环变量。当循环变量的值处于初值表达式的值,终值表达式的值范围内时,循环体内的语句被反复执行,每执行一轮循环,循环变量的值按步长指定的值增长一次,步长可以省略,此时解释器将其视为默认值1。循环体可由若干条语句构成,甚至可以为空,空循环被RBASIC允许,在特殊的情况下可做程序延时之用。循环体中也可以包含别外的循环结构,这种情形称之为循环嵌套,这将在随后说明。下面是FOR循环的一个实例:S=0 FOR I=1 TO 100 S=S+I NEXT PRINTSUM=;S解释器先将初值表达式的运算结果赋予循环变量I,然后执行循环体内的语句,在NEXT处,解释器先将循环变量的值增加一个步长(这里取默认值1),随后检测其值是否处于1,100范围内,是则重复执行循环体,否则终止循环执行NEXT语句后面的内容。程序最终运算的结果是在屏幕上显示:5050程序的实质是对1,2,3,4,.,99,100进行求和。下面是FOR循环中指定步长的例子:S=0 FOR I=1 TO 100 STEP 2S=S+I NEXT PRINTSUM=;S程序运算的结果我不再给出,想想是不是1,3,5,7,.,99之和。需要注意的是初值表达式,终值表达式,步长的值都是在每一轮循环中动态计算的,在循环中如果改变了与这些表达式相关的变量的值,循环体执行的次数可能变的不确定,如:sum=0 st=1 for i=1 to 100 step st sum=s+i st=st+1 next printsum=;sum想想结果还会是1,2,3,.,99,100之和吗?11.2 WHILE循环格式:WHILE条件表达式循环体WEND当条件表达式的结果为真时,循环体被重复执行。如:I=1 S=0 WHILE I=100 S=S+I I=I+1 WEND PRINTSUM=;S WHILE循环执行的流程为:程序计算条件表达式的值,如果为真则执行循环体中的语句,否则跳转到WEND后面的语句执行,遇到WEND,程序自动跳转到WHILE语句处作上述的判断。很容量理解,上面的示例也是求解1到100的自然数之和。11.3 BREAK语句BREAK出现在FOR或者WHILE循环中,它可以使循环提前终止。在循环体中如果执行了BREAK语句,则循环被无条件终止。看正面的示例:S=0 FOR I=1 TO 100 S=S+I PRINT I,IF I=50 THEN BREAK NEXT PRINTSUM=;S程序执行的结果是在屏幕上显示1到50间的自然数,你也许料想它会显示到100,但运行程序后你会发现它确实只显示到50,这是因为当I=50时,触发了判断条件I=50,BREAK初执行,循环被强制终止,程序跳出循环接将执行NEXT后面的程序,所以最后在屏幕上显示的是SUM=1275而不是SUM=5050。11.4 CONTINUE语句CONTINUE也只能出现在循环体当中,它将循环体分为上下两个部分,当CONTINUE被执行时,处于下面的循环体内的语句将被忽略,但循环本本身并不被终止。看下面的例子:S=0 FOR I=1 TO 100 S=S+I IF S50 THEN CONTINUE PRINT I,NEXT PRINTSUM=;S程序执行完后,你会发现屏幕上只显示1到50,而SUM值却是5050,这是因为在I值大于50后,IF语句被触发,CONTINUE被执行,因此循环体后半的语句PRINT I均没被执行。11.5循环嵌套当循环体中又包含循环语句时,我们称之为循环嵌套。FOR循环与WHILE循环可以相互嵌套,嵌套的深度不限,但注意不要出现循环体交叉的现象,如:FOR I=1 to 100.WHILE A10.NEXT.WEND这样的代码将被不BASIC接受,FOR/NEXT,WHILE/NEXT结构采用最近匹配的方法确定循环界限,循环体交叉的情况下会导致界限错乱,解释器不能正确判断下一轮循环应该跳转的位置。十二跳转语句12.1 GOTO语句GOTO语句可改变程序顺次执行流程让其跳转到指定代码处运行。GOTO语句的格式如下:GOTO语句标签其中,语句标签必需被定义于程序中某条语句,如:PRINTHiGOTOtag PRINTHello!tag PRINTWhats your name?程序运算的结果如下:HiWhats your name?显然,Hello没有被显示是因为在PRINTHello!语句前执行了GOTOtag语句,程序执行次序被打乱,直接跳转到tag语句处执行。上面的语句中执行的是无条件跳转,更多的时候我们可以接合IF语句实现条件跳转,如:IF A100 THEN GOTOsomewhere在无条件跳转语句中,应该避免跳转到跳转语句自身,如:loop gotoloop这将导致一个死循环。12.2 GOSUB语句GOSUB语句与GOTO语句的用法类似,不同之处是GOSUB跳转后,如果程序在某处遇到了RET指定,又会跳转回GOSUB后面的语句处执行,如:PRINTHiGOSUBtag PRINTHello!ENDtag PRINTWhats your name?RET程序执行的结果是:HiWhats your name?Hello!13.3使用跳转语句注意事项:跳转语句可以任意改变程序执行流程,使用比较灵活,但也容易造成程序结构与流程的混乱,不建议过多的使用。事实上,我们完全可以不使用GOTO,巧妙地使用循环或者函数/子过程调用完全可以实现同样的功能。使用GOTO/GOSUB时特别要注意:1不在循环体中使用GOTO跳出循环体外,如果确实有需要应当使用GOTO或者BREAK;2不在自定义过程/函数中使用GOTO/GOSUB跳转到过程/函数体外的代码处执行屏幕绘图13.1描点语句格式:PSET x,y,c,mod设置屏幕上坐标为(x,y)的点的颜色,其中c与mod分别为描点色与描点方式。13.2画线语句格式:LINE x1,y1,x2,y2,c,mod在屏幕上(x1,y1),(x2,y2)两点间画一直线13.3画矩形格式:BOX x,y,w,h,c,mod,以屏幕上描绘一个矩形,其中(x,y)是矩形右上顶点的坐标,w,h分别指定矩形的宽与高。13.4画圆语句格式:CIRCLE x,y,r,c,mod在屏幕上画圆圈,(x,y)为圆心坐标,r为半径。13.5画椭圆格式:ELLIPSE x,y,rx,ry,c,mod在屏幕上画椭圆,(x,y)为椭圆中心坐标,rx,ry分别为椭圆在横纵方向的半径。13.6关于绘图颜色绘图色以RGB的形式给出,可由函数RGB(r,g,b)产生,其中,r,g,b分别表式红,绿,蓝三种色素在颜色中的比例,其取值范围均为0-255,如正红色可由RGB(255,0,0)合成,白色可由RGB(255,255,2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论