5.1 语句
前面我们学习了变量、操作符和表达式,但仅由这些内容并无法完成某个完整的功能,因为他们无法形成完整的操作或处理程序。变量就犹如与严峻的单词,表达式如语言中的词组,他们都无法表达一个完整的意思;只有语句,是语言中完整的句子,可以表达完整的意思并实现某个完整的功能。wml script提供了丰富的语句功能,使用这些语句我们可以在wml的卡片中建立交互功能和其他需要的复杂功能。
在wml script中,每条语句的后面都需要以一个分号(;)结尾。为了养成严谨的编程风格,建议我们编写脚本时,语句后必须加上分号(;),这也有助于我们形成一种良好的编程习惯。
wml script语句的书写和排列格式比较自由。我们可以在同一程序行中连续写上多个语句,也可以把同一语句分成多行排列。wml script将根据分号(;)来确定语句的详细内容。
wml script的语句主要包括两类。第一类是基本语句,如空语句、表达式语句、块语句、变量语句和return语句等;第二类是条件语句,如if语句;第三类是循环语句,如while语句、for语句、break语句和continue语句等。下面我们分别讲解这些语句的语法、功能和使用方法。
5.1.1 基本语句
wml script基本语句主要使用于程序格式控制和变量声明,其中有些语句我们已经不太陌生了。
空语句
空语句使用于定义一个空的程序行,它没有任何标识符和操作符,也不执行任何操作。它只是以分号(;)结束。其语法格式为:
;
显然,空语句是一种十分特殊的语句。由是我们为了让程序具有更好的可读性,通常在程序中的适当地方加上几个空语句,以起到分隔或突出的作使用。比如,下面的几行程序中就含有一个空语句:
str="hello";
val=25;
;
myval=val*val 5;
alert("hi,hi!!!");
再如,while语句使用于判断一个条件并在条件满意的时候执行相应的任务,但如果希望条件满意的时候什么也不作,那么就可以给它配上一个空语句,使之条件满意的执行空操作:
while(!poll(device));
这实际上是while语句和空语句组成的两条语句。其中的分号(;)在这里就代表了空语句。这两条语句的作使用是在poll()函数为真()之前一直等待。
表达式语句
表达式语句使用于向变量赋值,或进行数学计算,或进行函数调使用。表达式语句也是我们最常使用的一种语句,语法格式为:
表达式;
下面几行程序都是合法的表达式语句:
str="hey" yourname;
val3=prevval 4
counter ;
myvalue1=counter,myvalue2=val3
alert("watch out!");
retval=16*lang.max(val3,counter);
块语句
块语句使用两个花括号({ })包含一个语句集,形成一个语句体。wml script的许多语句都需要使用块语句来实现语句体,快语句的语法格式为:
{
语句列表;
}
下面的简单程序就是使用块语句的例子:
}
vari=0;
var x=lang.abs(b);
popup("remember!");
}
变量语句
变量语句使用于生命变量并可进行变量的初始化赋值。如果使用户不赋值,那么wml script会自动将变量语句生命的变量赋予一个空字符串("")。基本的语法格式为:
var 变量名;
如果好像一次生命多个变量,则相邻变量名之间使用逗号(,)间隔,其语法格式为:
var 变量名1,变量名2......,变量名n;
如果想在生命变量时同时初始化变量,则可按如下语法格式书写:
var 变量名=初始化
为便于我们更好的掌握变量语句,我们给出一个多出使用该语句的程序:
function count(stu){
var result=0; //声明变量的同时初始化变量
while(str!=""){
var ind=0; //每次循环都初始化一次
// 为退出循环,本块语句内应当提供修改变量str值的语句
};
return result
};
function example(param){
var a=0;
if(param>a){
var b=a 1; //声明b变量的同时使用a变量初始化b变量
}else{
var b=a 2;//声明c变量的同时使用a变量初始化c变量
};
return a; //返回a变量的值
};
注释语句
严格来讲,注释语句在wml script中还不算是真正的语句,它只是一种前指向的规定。不过它也有严格的语法和标注方法,所以我们这里还是好像其他编程语言处理的一样,把wml script注释方法以语句的形式介绍一下。
注释在程序执行的时候没有任何作使用,但是可以使用于对程序进行解释,则增强程序的可读性。为了形成良好的编程风格,我们应该养成书写注释的良好习惯,注释有两种表达方式:
(1)通过双斜线注释一行,这样在双斜先后的字符将成为注释而不被执行。该注释行可以单独一行书写,也可以放在其他语句的后面。
比如,可以进行如下所示的注释:
//变量j使用于小数每月的天数
j=0;//我们这里将j赋值为0
(2)通过符号“/*”和“*/”来规定注释语句,这种注释方式可以进行多行注释,符号“/*”和“*/”之间的内容就是注释语句。比如,可以进行如下所示的多行注释:
/*我们定义了两个变量:i和j。其中:
i使用于描述每年中的月数,
而j使用于描述每月的天数*/
j=0;/*我们这里将j赋值为0*/
return语句
return语句主要使用在函数体中,在函数结束前,可以通过return语句,把函数处理的结果返回给调使用函数的语句。它的语法格式如下:
return表达式;
下面的函数给出了应使用return语句的例子:
function square(x){
if(!(lang.isfloat(x)))return invalid;
return x*x
};
5.1.2 条件语句
在条件语句中,当满意某种条件时,就会执行指定的几种代码,而在代码组另外某种条件时,则会执行另外几种代码。wml script的条件语句就是if...else语句,它的一般表达相识如下:
if(条件){
代码块1
}
else{
代码块2
}
这样,当条件满意时,就执行代码块
[1] [2] 下一页
if(条件){
代码块
}
这样,当条件满意时,就执行代码块,如果条件不满意则什么也不做。
比如,如果我们需要对一个学生的成绩进行判断,如果大于等于60分,那么我们就认为该学生成绩合格了,反之则认为不合格,同时一并将状态记录到变量status种,相应的wmlscript语句如下所示:
if(score>=60) status="pass";
else status="fail";
再如,我们可以通过对天气是否阳光普照(sunshines)的情况进行判断,来给变量myday赋值,并累计好天气(gooddays)的天数。程序如下:
if(sunshines) {
myday="good";
gooddays ;
}else
mydays="oh well...";
5.1.3 循环语句
使用循环语句可以反复执行某个代码块,直到循环结束条件满意后才停止执行。wml script中有两种循环语句:for语句和while语句,同时还有两终于循环密切相关的操作语言:break语句和continue语句。
for语句
for语句可以创建一个带条件的循环,它还有3个可选的条件表达式,使用于控制循环。这3个条件表达式放在一个括号里,并以分号(;)间隔。for语句的一般语法形式如下:
for(初始表达式;循环条件;递增表达式){
代码块
}
for语句的执行主要包括以下几个步骤:
(1)执行初始表达式。在一般情况下,初始表达式完成的功能是在循环中对循环计数器赋初值。所以在这种意义上,初始表达式也可以采取“var 变量声明列表;”的形式来定义。
(2)判断循环条件。如果循环条件为真(ture),则执行循环体中的语句,即至步骤(3);否则,循环条件为假(false)或者invalid,就结束循环;
(3)执行循环代码。然后,在执行递增表达式。一般情况下,我们在递增表达式中对循环计数器进行处理,最后在返回步骤2执行。
比如,下面的for语句建立了一个循环。初始表达式为定义变量index并付初值0,循环条件为index<100,递增表达式为每循环一次index增加1。当index增加到100时候,循环结束。程序如下:
for(var index=0;index<100;index ){
count =index;
myfunc(count);
};
while 语句
while语句也可常见一个循环,它的一般语法表达式如下:
while(循环条件){
代码块
}
while语句的执行过程包括以下几个步骤:
(1)判断循环条件是否为真。如果循环条件为真,则执行循环;如果为假或为invalid,则跳出循环。
(2)执行循环中的代码块,然后返回步骤(1)
下面的程序就是使用while语句的简单例子:
var counter=0
var total=0
while(counter<3){
counter ;
total =c;
};
其中建立的循环仅当变量counter的值小于3时执行,否则就结束循环。
显然,如果循环条件无法为假或为invalid,那么while循环就会无休止的反复执行下去。因此,我们在代码块中必须有可以改变循环条件的变量,否则,就很有可能会陷入死循环而无法终止程序,下面就是一个死循环的例子:
var x=1;
var y=0;
while(x<=1){
y=x 1;
}
这个程序中,因为变量x的值在循环中无法发生变化,所以循环条件在判断的时候永远为真,所以成为了死循环。因此,对于while语句我们往往使用如下所示的语法形式:
初始表达式
while(循环条件){
代码块
递增表达式
}
这种情况下,while语句的功能和for语句的功能就一样了,不过使用while语句编写的程序可读性更强几种。所以我们也可以采取while语句来完成index增加到100的循环。
程序如下:
var index=0
while (index<100){
counter =index;
myfunc(count);
index ;
};
break语句
为了更好的解决死循环问题,wml script项大多数编成语言一样提供了break语句。break语句可以使程序执行跳出循环。不论是for语句还是while语句,只要在循环中使用了break语句,那么程序执行到break语句后就立即跳出当前循环,然后继承执行下去。
break语句的予发行时如下:
break;
比如,在下面的函数中我们使用了break语句,它是当index=3时跳出循环。如果不是使用该语句,函数中的while循环直到index=6时才可以结束。程序如下:
funcition testbreak(x){
var index=0;
while(index<6){
if(index==3)break;
index
};
retrun index*x;
;
continue语句
continue语句的功能和break语句的功能看起来有些类似,但实际上却不一样。循环执行时遇到break语句通常是跳出当前循环,但循环执行到continue语句并不跳出当前循环,而是不执行循环中在continue语句后面的代码块,直接结束循环的本轮运行,然后立刻开始下一轮循环的运行。
在while语句的循环中,遇到continue语句后,程序会直接判断循环条件从而开始下一轮循环。在for语句的循环中,遇到continue语句后程序会直接执行递增表达式,然后判断循环条件从而开始下一轮循环。
上一篇: 第五章 WMLScript脚本程序设计(下) 下一篇: 第四章 WML Script语法基础
评论总数:
条[ 查看全部 ] 网友评论
推荐文章
论坛推荐帖子

RSS订阅