罗小叉吧 关注:111贴子:19,093
  • 4回复贴,共1

VBS系列课程--22

只看楼主收藏回复

原文地址:
http://blog.sina.com.cn/s/blog_68d342d90100lk7d.html


1楼2010-09-18 17:52回复
    前边把VBS中的条件语句讲完了,那么这节课开始讲循环语句。
    那么,循环语句,循环循环,这个应该很好理解,就是根据判断一个条件是否成立,如果成立,则开始循环,一直循环到条件不成立,则退出循环。
    这就是循环,很好理解。
    在VBS中,循环语句有do…loop、while…wend、for…next这么几种语句,我们在接下来的课程中会一个一个的讲解这些语句的使用方法。
    那么,我们这节课,讲讲do…loop。
    它的语法格式为:
    Do while 条件
    语句1
    Exit do
    语句2
    Loop
    我来说一下上面这几句的意思:
    当给出的条件为true时,执行语句1,然后继续判断条件是否为true,如果为true,则继续循环,如果为false,则不执行循环。
    Exit do的意思是立即退出循环,开始执行loop后边的语句,在实际的应用中,exit do语句并不常用,即使使用了,也是搭配着if语句来用的,即判断是否满足某一个条件,若满足则强制退出循环。
    下面我们来写一个脚本,通过查看代码来理解这个语句的语法:
    ------------------------vbs_19.htm------------------------
    <html>
    <head>
    <title>VBS系列课程--do...loop循环语句应用示例</title>
    <script language="vbscript" for="button1" event="onclick">
    dim a,sum
    a=1
    sum=0
    do while a<=100
    sum=sum+a
    a=a+1
    loop
    form1.text1.value=sum
    </script>
    </head>
    <body>
    <form name="form1">
    1+2+3+...+100等于多少?
    <br>
    <br>
    计算结果为:
    <input type="text" name="text1">
    <br>
    <br>
    <input type="button" name="button1" value="开始计算">
    </form>
    </body>
    </html>
    来看一下效果:


    其实,do…loop语句中的while部分还是可以放到loop后的,比如,可以将vbs_19.htm中的脚本部分写成:
    <script language="vbscript" for="button1" event="onclick">
    dim a,sum
    a=1
    sum=0
    do
    sum=sum+a
    a=a+1
    loop while a<=100
    form1.text1.value=sum
    </script>
    这样脚本执行的效果,跟原来的脚本效果,从表面上来看是一样的。
    但是,其实把while部分放在前边和后边,脚本的意思还是有那么一点点差别的,当我们把while放在前边时,do语句会先判断while后的条件是否成立,如果成立,则执行循环,如果不成立,则不执行循环。
    而我们把while放在loop后的时候,无论while后的条件是否成立,脚本都会先把循环中的语句都执行一遍,然后再来判断while后的条件是否成立,如果成立,则执行循环,如果不成立,则不执行循环。
    也就是说,我们把while部分放在前边的时候,循环是可能一遍都不会执行的,但是把while部分放在do语句后边的时候,则循环是至少要执行一遍的。
    现在我们再来说一下exit do的用法,在vbs_19.htm的基础上修改一下,使用exit do达到同样的效果:
    ------------------------vbs_20.htm------------------------
    <html>
    <head>
    <title>VBS系列课程--do...loop循环语句应用示例</title>
    <script language="vbscript" for="button1" event="onclick">
    dim a,sum
    a=1
    sum=0
    do while a<=200
    sum=sum+a
    


    2楼2010-09-18 17:54
    回复
      if sum>=5050 then
      exit do
      end if
      a=a+1
      loop
      form1.text1.value=sum
      </script>
      </head>
      <body>
      <form name="form1">
      1+2+3+...+100等于多少?
      <br>
      <br>
      计算结果为:
      <input type="text" name="text1">
      <br>
      <br>
      <input type="button" name="button1" value="开始计算">
      </form>
      </body>
      </html>
      这里我把a的范围改成了小于等于200,那么这样如果下边不用If语句,则脚本求出的值就是1+2+…+200的和了,当然,其实我这个脚本这样的写法意义不大,我这里主要是起一个示范作用。
      我设定了if语句,如果sum的值大于或等于5050的时候,执行exit do命令,强制退出循环,退出循环后再给文本框赋值,将计算结果显示出来。
      思路是没有错的,那么,来看看效果:


      可以看到,效果是一样的。
      这就是exit do的作用,即强制退出do循环。
      其实,do循环语句还是有另外两种用法的。
      格式3:
      do until 条件
      语句1
      exit do
      语句2
      Loop
      跟格式1和格式2一样,until后边跟的条件也是可以选择放在前边或是后边的,如格式4:
      do
      语句1
      exit do
      语句2
      loop until 条件
      这种格式的意思是,直到条件变为true之前执行循环,也就是说,until后跟的条件必须是false时循环才会执行,若这个条件变成了true,则不执行循环。
      下面这个脚本,可以达到跟vbs_19.htm一样的效果:
      <script language="vbscript" for="button1" event="onclick">
      dim a,sum
      a=1
      sum=0
      do until a>100
      sum=sum+a
      a=a+1
      loop
      form1.text1.value=sum
      </script>
      当然,也可以把until部分放到后面:
      <script language="vbscript" for="button1" event="onclick">
      dim a,sum
      a=1
      sum=0
      do
      sum=sum+a
      a=a+1
      loop until a>100
      form1.text1.value=sum
      </script>
      与vbs_19.htm相比,这里只是把条件换了一下而已,没什么高深的学问。
      其实,你应该可以看出来,while和until是可以互换的,随便使用哪一个都可以达到目的,根据自己的喜好就可以。
      好了,关于do循环,要讲的也就这么多了,下节课再见。


      3楼2010-09-18 17:54
      回复
        回复:4楼
        嗯,vbs本来就是vb的分支,算是vb的简化版。


        5楼2010-09-18 22:23
        回复