第3 章 VBScript的控制结构.

Slides:



Advertisements
Similar presentations
1 程式語言 Visual Basic 循序結構、選擇結構 黃瀧輝 老師 Long Hwai,Huang.
Advertisements

Visual Basic 程序设计 第四讲.
計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
ASP.NET 網頁製作教本 -- 從基本語法學起
課程名稱:程式設計 授課老師:________
第四章 控制结构.
第5章 HTML 標籤介紹.
佛山科学技术学院 第7章 HTML Internet及多媒体应用.
第五章:JDBC与数据库 第一讲.
网页 设计与制作.
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
第3章 HTML语言 3.1 HTML文档的基本结构 3.2 文字排版 3.3 图片排版 3.4 超级链接 3.5 表格 3.6 框架窗口
模块1 网页设计基础 实训1 体验HTML文档 1.1 网页基础知识 1.2 网站配色方案 1.3 网站设计常用软件
第3章 JavaScript语言基础.
四 VBScript编程基础.
VBA应用开发与实例 李 辉 微软课程培训讲师. VBA应用开发与实例 李 辉 微软课程培训讲师.
HTML.
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
第3章 超文本标记语言(HTML) 3.1 基本结构标记 3.2 文本格式标记 3.3 超链接标记<A></A>
Visual Basic程序设计.
ASP VBScript 基础知识.
BLANK overview.
留言版 1.先Create一個留言板的table
Chapter 1 複習.
PHP +MySQL快速入門 Lesson 4.
Visual Basic 2010 程式設計16堂特訓 第七堂 VB的迴圈流程控制.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
数组 第 6 章.
HTML 钟晖云 QQ:
1 巨集 2 資料型態 3 物件、屬性、方法與事件 4 陳述式與副函式 5 其他注意事項 6 範例
JavaScript 语言3 学习网站:心蕊设计
ASP动态网页设计实用教程 主讲教师: 开课单位:.
算法与程序设计.
Access VBA程序设计 本章重点 Access Basic编程语言 运算符、函数与表达式 Access Basic语句 模块的使用
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
数学3(必修)—— 算 法 ALGORITHM 苏州大学数学科学学院 徐稼红
流程控制、陣列 台南市聖功女子高級中學 毛全良.
條件判斷指令 -if 指令 -switch 指令 迴圈指令 - for 迴圈 - while迴圈 - break、continue 指令
PHP 程式流程控制結構.
程式語言Visual Basic 重複結構 黃瀧輝 老師 Long Hwai,Huang.
6-1 For…Next迴圈敘述 6-2 While…End While迴圈敘述 6-3 Do…Loop迴圈敘述 6-4 巢狀迴圈敘述
第12章 VBA模块设计.
丙級電腦軟設-VB程式設計 資料來源:林文恭研究室 整理:張福生.
PCR300 (13.56MHz) Reader RS232/USB.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
网 站 设 计 与 建 设 Website design and developments
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
程式語言與邏輯 高慧君 台北市立南港高中 2006年12月22日.
江西财经大学信息管理学院 《数据库应用》课程组2007
第六章 選擇結構 (應用:核取方塊、選項按鈕、框架)
小结 郭清溥.
经典算法之 冒 泡 排 序.
Visual Basic 程序设计教程.
Ch04 VB.NET的流程控制 網頁程式設計.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
第二章、第三章错题分析.
第四章 控制结构 1、顺序控制结构 2、选择结构 3、循环结构.
單元名稱:結構化程式設計 報告人 劉洲溶.
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
分頁.
顺序查找与二分查找复习.
算法与Visual Basic程序基础(二)
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 12 章 迴圈指令.
1.2.3 循环语句.
講師:劉俊民(金剛) Idea 創意應用科技有限公司
Presentation transcript:

第3 章 VBScript的控制结构

引言 一般脚本程序往往包含一些根据不同的情况选择执行的语句,以及根据某些条件重复执行的语句。为了能实现这样的功能,VBScript中设置了相应的流程控制语句,控制程序的执行。

主要内容 本章主要讨论VBScript中常用的几种控制结构,具体包含以下内容: 条件语句If … Then 多分支语句Select Case 计数式循环For…Next 集合元素循环For each 条件式循环While和Do…Loop

本章目录 本章小结 3.1 条件语句If …Then 习题 3.2 多分支语句 Select…Case 3.3 计数循环语句For…Next 3.1.1 单一选择 3.1.2 双向选择 3.1.3 多向选择 3.2 多分支语句 Select…Case 3.3 计数循环语句For…Next 3.4 For Each In…Next(数组循环) 3.5 条件式循环 3.5.1 Do While…Loop循环 3.5.2 Do Until…Loop循环 3.5.3 后测试式循环 3.5.4 强制退出循环和无条件循环 3.5.5 While…Wend循环

3.1 条件语句If …Then 在VBScript脚本语言中,If…Then的语句有多种格式,我们以下分别进行讨论: 3.1.1 单一选择 3.1.2 双向选择 3.1.3 多向选择

3.1.1 单一选择 单一选择是指当条件成立时执行某些语名,而条件不成立时不执行任何语句。中文含义可以表示为:如果…就…。具体有两种格式。 格式一: If 条件Then语句组 其中语句组可以是一个或多个用“:”分隔的语句,这种形式中,语句组中的各语句必须写在同一行。

3.1.1 单一选择 格式二: 其中语句组可以是多行语句,每一行可以是一个或多个用“:”分隔的语句。 If 条件 Then 语句组 End If 其中语句组可以是多行语句,每一行可以是一个或多个用“:”分隔的语句。

3.1.1 单一选择 执行流程 即条件为真(非零)时,执行语句组中的语句,之后继续执行后面的语句,条件为假时直接执行后面的语句。 真 条件

3.1.1 单一选择 格式辨别 形式一: 形式二: If x>3 Then 错误形式: If x>3 Then y=1:z=2 End If 错误形式: If x>3 Then Y=1 Z=2 End If

单一选择举例 例1:简单的If语句 定义一个变量,并赋值为70 判断变量值是否大于等于60 ,若是显示信息框 <html> <head>  <title>If</title> <script language="VBScript"> <!-- Score=70 If Score>=60 Then MsgBox "及格!" --> </script> </head> </html> 定义一个变量,并赋值为70 判断变量值是否大于等于60 ,若是显示信息框

单一选择举例 浏览结果 测试本例

3.1.2 双向选择 双向选择是指当条件成立时执行某些语名,而条件不成立时执行另外一些语句。中文含义可以表示为:如果…就…否则…具体也有两种格式。 格式一: If 条件 Then 语句组一 Else 语句组二 其中语句组一和语句组二中可包含一个或用“:”隔开的多个语句,但必须写在同一行上。

3.1.2 双向选择 格式二: 其中语句组一和语句组二都可以由多行组成,每一行可包含一个或用“:”隔开的多个语句。 If 条件 Then Else 语句组二 End If 其中语句组一和语句组二都可以由多行组成,每一行可包含一个或用“:”隔开的多个语句。

3.1.2 双向选择 执行流程 即条件为真(非零)时,执行语句组一中的语句,之后继续执行后面的语句,条件为假时执行语句组二中的语句,之后继续执行后面的语句。 真 假 条件 语句组二 语句组一

3.1.2 双向选择 错误形式: 格式辨别 形式一: 形式二: If Score>=60 Then Msg=“及格!” Else Msg=“不及格!” 形式二: If Score>=60 Then Msg=“及格!” Else Msg=“不及格!” End if 错误形式: If Score>=60 Then Msg=“及格!” Else Msg=“不及格!”

双向选择举例 例2:双向选择 <html><head> <title>If</title> <script language="VBScript"> <!-- Score=InputBox("请输入计算机成绩:","输入成绩") If Score>=60 Then Msg="及格!" Else Msg="不及格!" End If MsgBox "你的计算机成绩" & Msg --> </script> </head></html>

例2:双向选择 浏览结果 浏览时,首先显示一输入框,当输入大60的数字时,显示及格的信息提示框,当输入小于60时,显示不及格的信息提示框。 测试本例

3.1.3 多向选择 当有多种情况需要进行分别处理时,可以使用如下格式的If语句: If 条件1 Then 语句组1 Elseif 条件2 语句组2 Elseif 条件3 语句组3 …… Else 语句组N+1 End If

3.1.3 多向选择 真 程序执行时,先检查“条件1”,若返回值为“True”,则执行“语句组1”,然后跳到End If的下一个指令;若“条件1”的返回值为“False”,则检查“条件2”,若返回值为“True”,则执行“语句组2”,再跳到End If的下一个指令,否则检查“条件3”,依此类推。 条件1 语句组1 真 条件2 语句组2 真 条件3 语句组3 真 条件n 语句组n 语句组n+1

多向选择举例 例3:使用多种条件 <html> <head><title>如果就否则如果就</title> <script language="VBScript"> <!-- Score=InputBox("请输入计算机成绩:","输入成绩") If Score>=90 Then Msg="优等" ElseIf Score<90 And Score>=80 Then Msg="甲等"

例3:使用多种条件 ElseIf Score<80 And Score>=70 Then Msg="乙等" End If MsgBox "你的计算机成绩为" & Msg --> </script> </head></html>

例3:使用多种条件 浏览结果 本例中的代码时,若输入“99”,然后按“确定”,会显示“优等”,如图所示: 测试本例 若输入“46”,然后选取“确定”,则会显示“丁等”。

多向选择举例 例4:根据时间不同显示不同的问候信息 <html> <head> <title>判断语句</title> <script language="VBScript"> Dim iTime Dim strmsg iTime=HOUR(TIME) If iTime<3 then strmsg="凌晨了,还没睡,小心身体噢。" elseIf iTime<7 then strmsg="起这么早?" elseIf iTime<12 then strmsg="上午好。"

例4:显示不同的问候信息 例4:根据时间不同显示不同的问候信息 elseIf iTime<18 then strmsg="下午好。" end If msgbox strmsg </Script> </head> <body> 随时间变化的问候。 </body> </html>

例4:显示不同的问候信息 当你在深夜浏览该网页时,将得到如图所示的问候,你的心情如何? 测试本例

3.2多分支语句 Select…Case 这种流程控制结构可以根据一个变量的值选择不同的执行方向,它的格式如下: 语句组1 Case 值2 语句组2 Case 值3 语句组3 …… Case Else 语句组N+1 End Select Select会从第一个值依次比较,看看是否和变量的值相等,如果相等就会执行其后的语句组,执行完之后再跳到End Select继续执行后面的程序。

多分支语句举例 例5:多向选择 <html> <head><title>多向选择1</title> <script language="VBScript"> <!-- NO=InputBox("请输入一个1-5之间的数字:","汉译英") Select Case NO '以NO作为比较对象 Case 1 MSG="ONE" Case 2 MSG="TWO" Case 3 MSG="THREE"

例5:多向选择 Case 4 MSG="FOUR" Case Else MSG="FIVE" End Select MsgBox NO & "的英文为:" & MSG --> </script> </head> <body></body> </html>

例5:多向选择 浏览结果 代码在浏览时,首先将给出一个输入框,若输入“1”,然后按“确定”,将显示左图所示信息框,若输入5,则将显示右图所示信息框。 测试本例

等价的IF形式 例6:用If语句实现的多向选择 <html> <head><title>多项选择2</title> <script language="VBScript"> <!-- NO=InputBox("请输入一个1-5之间的数字:","汉译英") If NO=1 Then MSG="ONE" Elseif NO=2 Then MSG="TWO" Elseif NO=3 Then MSG="THREE"

等价的IF形式 测试本例 Elseif NO=4 Then MSG="FOUR" Elseif NO=5 Then MSG="FIVE" End If MsgBox NO & "的英文为" & MSG --> </script> </head> </html> 测试本例

多分支语句举例 例7:求本月的天数 <html> <head><title>多向选择1</title> <script language="VBScript"> <!-- m=month(date()):y=year(date()) Select Case m '以m作为比较对象 Case 1,3,5,7,8,10,12 D=31 Case 2 If y mod 4=0 and y mod 100<>0 or y mod 400=0 then D=29 Else D=28 End If

多分支语句举例 例7:求本月的天数 Case Else D=30 End Select MsgBox "本月共有:" & d & "天" --> </script> </head> </html>

多分支语句举例 例中把天数相同的那些月份放在同一个Case中。写成如下形式: Case 1,3,5,7,8,10,12 注意:在VB中,Case后面可以使用如下两种形式: Case 1 To 10 Case IS<4 这在VBScript脚本语言中都不能使用。

多分支语句举例 浏览结果 本例随访问时的时间不同,显示的结果有所不同。一般形式如下: 测试本例

3.3计数循环语句For…Next 循环语句用于重复执行一组语句。格式如下: For变量=起始值To终止值[Step步长] 语句组 Next 其中:起始值和终止值可以是表达式,但开始循环时将首先计算其值,用其值来控制重复执行的次数,因此循环次数一开始就基本上确定了。步长是可选的,默认为1。 这里的语句组也称为循环体

执行过程 当步长为正时 起始值送u 终止值送v u送变量 语句组重复执行的次数等于 假 变量<=v 真 语句组 循环结束 For变量=起始值To终止值[Step步长] 语句组 Next 语句组重复执行的次数等于 (终止值-起始值+1)/步长 起始值送u 终止值送v u送变量 假 变量<=v 真 语句组 循环结束 变量+步长送变量

执行过程 当步长为负时 起始值送u 终止值送v u送变量 语句组重复执行的次数等于 假 变量>=v 真 语句组 循环结束 For变量=起始值To终止值[Step步长] 语句组 Next 语句组重复执行的次数等于 (终止值-起始值-1)/步长 起始值送u 终止值送v u送变量 假 变量>=v 真 语句组 循环结束 变量+步长送变量

执行过程 循环次数判断 (1) For j=1 To 10 k=k+1 Next (2) For j=1 to 9 step 2 (3) (4) For j=10 to 3 step -2 (5) For j=1+j To 10 k=k+1 Next (6) For j=1 to 9+j

For…Next循环举例 例8:求1加到10的总和 <html> <head><title>循环1</title> <script language="VBScript"> <!-- ‘ 计算1加到10的总和 TOTAL=0 For COUNTER=1 TO 10 TOTAL=TOTAL+COUNTER Next MsgBox "1加到10的总和为 " & TOTAL --> </script> </head></html>

例8:求1加到10的总和 浏览结果 测试本例

循环程序调试 通过跟踪循环体(循环中的语句组,本例为:total=total+count),可以正确地得到结果。 次数 COUNTER 第一次 1 第二次 2 3 第三次 6 … 第九次 9 36 45 第十次 10 55

For…Next循环举例 例9 :设置步长的循环 <html><head> <title>循环2</title> <script language="VBScript"> <!-- ' 用循环求2+4+6+....+100的和 TOTAL=0 For I=2 TO 100 STEP 2 TOTAL=TOTAL+I Next MsgBox "2+4+6+...+100= "& TOTAL --> </script> </head><body ></body></html>

例9 :设置步长的循环 浏览结果 测试本例

For…Next循环举例 例10 :步长为负时的循环 <html> <head> <title>输出一由星号组成的三角形</title> <script language="VBScript"> <!-- For i = 10 To 1 step -1 document.write String( i, "*") & "<BR>" Next --> </script> </head> </html>

例10 :步长为负时的循环 浏览结果 本例中使用函数string每次形成i个“*”,作为第i行的输出,随着i从10到1的变化,输出如图的形式 测试本例

循环体中执行的语句又是循环语句时,这种形式称为嵌套循环 For…Next循环举例 例11 :输出九九表 <html><head> <title>九九表</title> <script language="VBScript"> <!-- For a = 1 To 9 For b = 1 To a Document.write a & "*" & b & "=" & a * b & " " If b = a Then document.write "<BR>" Next --> </script> </head></html> 循环体中执行的语句又是循环语句时,这种形式称为嵌套循环

例11 :输出九九表 浏览结果 b从1到a 测试本例 a从1到9

For…Next循环举例 例12 :使用循环处理数组 例12 :使用循环处理数组 <html><head> <title>循环与数组1</title> <script language="VBScript"> <!-- DIM A(99) For I=0 TO 99 A(I)=I+1 Next --> </script> </head></html> 这个程序定义了一个可以存放一百个元素的数组,然后使用循环,当第1次执行循环体时,I的值为0,执行结果将把值1(I+1)赋给数组元素A(0);当第2次执行循环体时,又把值2赋给数组元素A(1),依次类推 。

For…Next循环举例 例13:输出数组内容 <html><head> <script language="VBScript"> DIM mc(3)'定义一个有4个变量的数组 mc(0)= "机械工程系" mc(1)= "电子工程系" mc(2)= "计算机科学系" mc(3)= "网络工程系" </script> </head> <body> <select name="xm">

例13:输出数组内容 <script> For I=0 TO 3 Document.write "<OPTION value=" & I & ">" & mc(I) & "</OPTION>" Next </script> </select> </body></html> 根据数组的内容形成下拉列表框的各选项

例13:输出数组内容 浏览结果 测试本例

For循环的非正常退出 对于For…Next结构的循环中,若需要非正常的退出,可以在循环体中使用如下形式的语句: Exit For 它将无条件退出当For循环,当然,一般情况这一语句放在条件语句中。

3.4 For Each In…Next(数组循环) 用于对数组或集合的元素进行循环,它的格式如下: For Each变量In数组名 语句组 Next 其中的“变量”就是存放数组或集合的元素值的地方,作用是对数组或集合中的每一个元素执行一次语句组,请看例子。

For Each循环举例 例14:输出数组内容 形成数组内容 <html><head><title>FOR Each循环</title> <script language="VBScript"> DIM hf(4,4)'定义了一个5*5的二维数组 i=0:j=2 For k=1 To 25 hf(i,j)=k If k mod 5=0 then i=i+1 else i=i-1:If i=-1 then i=4 j=j+1:If j=5 then j=0 end If next </script></head> 形成数组内容

例14:输出数组内容 输出数组内容 每行5个元素 <body> <script> j=0 For each i in hf If j mod 5=0 then document.write "<BR>" Document.write "&nbsp" & i & "&nbsp" j=j+1 Next </script> </body> </html> 输出数组内容 每行5个元素

例14:输出数组内容 浏览结果 输出结果中各元素输出顺序是按行还是按列? 测试本例

这段代码的作用是用循环方式将数组内容按行顺序输出 数组元素顺序 可以把本例的输出部分改为: <body> <script> For I=0 To 4 For J=0 To 4 Document.write "&nbsp" & hf(I,j) & "&nbsp" Next Document.write "<BR>" </script> </body> </html> 这段代码的作用是用循环方式将数组内容按行顺序输出

数组元素顺序 从如图的浏览结果可以看出,用For Each方式输出的各元素顺序同按行顺序的输出不同,即是按列的顺序排列的。

For Each循环举例 For each 循环对于不知道元素个数的数组或集合是非常有用的。 例15:显示表单域中各元素名称 定义表单 <html> <head><title>FOR EACH循环</title> </head> <body> <form name="abc"> 姓名:<Input name="txt1" type="text"><BR> 年龄:<Input name="txt2" type="text"><BR> 学号:<Input name="txt3" type="text"><BR> <Input name="button" type="button" value="提交"> </form> 定义表单

例15:显示表单域中各元素名称 表单中包含以下名称的元素: <script language="VBScript"> For each i in document.abc.elements document.write i.name & "&nbsp" next </script> </body> </html> 显示表单域中各元素名称 具体讨论将 在以后章节进行

例15:显示表单域中各元素名称 浏览结果 测试本例

3.5 条件式循环 条件式循环是指以条件来判断循环的执行与否,以下分别介绍几种形式: 3.5.1 Do While…Loop循环 3.5 条件式循环 条件式循环是指以条件来判断循环的执行与否,以下分别介绍几种形式: 3.5.1 Do While…Loop循环 3.5.2 Do Until…Loop循环 3.5.3 后测试型循环 3.5.4 强制退出循环和无条件循环 3.5.5 While…Wend循环

3.5.1 Do While…Loop循环 Do While…Loop循环形式如下: 语句组 Loop 执行时,首先检查“条件”,若为“True”,就执行“语句组”,碰到Loop时又回到Do While再检查“条件”的成立与否。若“条件”为“False”,则跳到Loop的下一个指令(即离开循环)。

3.5.1 Do While…Loop循环 执行流程: Do While 条件 语句组 Loop 真 条件 假 语句组

Do While…Loop举例 例16:使用Do…While循环 用Ucase函数将小写转换成大写 <html><head><title>While循环</title> <script language="VBScript"> <!-- ' 英文单词测验,不管大小写都算正确 ANS=InputBox("请输入'快乐'的英文") Do While UCase(ANS) <>"HAPPY" MSG= "不正确!" & vbCrLf & "请重新输入'快乐'的英文" ANS=InputBox(MSG) Loop MsgBox "太棒了!你答对了!" ' UCase()函数可将括号内的字符全部转换为大写字母 --> </script></head></html> 用Ucase函数将小写转换成大写

例16:使用Do…While循环 浏览结果 初始显示如图 输入不是HAPPY时显示 最后显示 测试本例

3.5.2 Do Until…Loop循环 Do Until…Loop循环 的形式如下: 语句组 Loop Until循环与While循环的不同点就在于,Until是在“条件”不成立时执行循环内的“语句组”,成立时则跳出循环。

3.5.2 Do Until…Loop循环 执行流程 Do Until条件 语句组 Loop 假 条件 真 语句组

Do While…Loop举例 例17 :使用Do…Until 测试本例 <html><head><title>Until循环</title> <script language="VBScript"> <!-- ANS=InputBox("请输入'快乐'的英文") Do Until UCase(ANS)="HAPPY" MSG= "不正确!" & vbCrLf & "请重新输入'快乐'的英文" ANS=InputBox(MSG) Loop MsgBox "太棒了!你答对了!" --> </script> </head><body></body></html> 测试本例

3.5.3 后测试式循环 后测试式循环指先执行循环体,再测试条件的一种循环形式,格式如下: Do   语句组 Loop While(Until) 条件 这样开始循环时,它就会先执行一次“语句组”再进行“条件”的测试,所以它至少会执行一次循环体中的语句组。

3.5.3 后测试式循环 执行流程 Do 语句组 Loop While(Until) 条件 Until形式 While形式 语句组 语句组   语句组 Loop While(Until) 条件 Until形式 While形式 语句组 语句组 假 条件 条件 真 假 结束循环 真 结束循环

后测试式循环举例 例18:循环后测试 循环体至少执行一次 <html> <head><title>循环测试1</title> <script language="VBScript"> <!-- Do A=InputBox("请输入小于10的数字") Loop While A>10 --> </script> </head> <body></body> </html> 循环体至少执行一次

例18:循环后测试 浏览结果 若输入一个小于10的数字,然后按下“确定”,就会结束程序。若输入的数字大于10,程序就会要求重新输入。如图所示。 测试本例

3.5.4强制退出循环和无条件循环 有时希望强制退出循环,如例中要求输入一个英文单词,但用户确实不知怎样拼写,应该提供一种强制退出的手段。在脚本中使用Exit Do来实现。 注意:这一语句只能用在用Do引导的循环结构中。

强制退出循环例 例19:强制结束循环 <html><head><title>循环测试2</title> <script language="VBScript"> ANS=InputBox("请输入'快乐'的英文") Do While UCase(ANS) <>"HAPPY" If ANS="" Then Exit Do MSG= "不正确!" & vbCrLf & "请重新输入'快乐'的英文" ANS=InputBox(MSG) Loop If ANS<>"" Then MsgBox "太棒了!你答对了!" Else MsgBox "结束" End If </script></head><body></body></html> 测试本例

3.5.4强制退出循环和无条件循环 有时还可以使用不加任何条件的循环形式,格式如下: Do 语句组 Loop 这时,语句组中应包含一条exit do的强制退出循环的语句。

无条件循环举例 例20:猜数小游戏 <html><head><title>Loop</title> <script language="VBScript"> Do ANS=InputBox("请输入一个数字") '要求输入数字 If ANS="" Then   MsgBox “结束”:Exit Do '按取消跳出循环 Elseif ANS>678 Then MsgBox "输入的数太大了" Elseif ANS<678 Then MsgBox "输入的数太小了" Else MsgBox “答对了”:Exit Do End If Loop </script></head></html> 没有条件

例20:猜数小游戏 浏览结果 首先显示 当输入500时,显示如图 当输入678时,显示如图 测试本例

3.5.5 While…Wend循环 这种循环和Do…Loop循环作用类似,它的格式如下: 语句组 Wend 执行时会先测试“条件”,若“条件”的False,跳出循环;若“条件”为True,则执行“语句组”,然后执行到Wend时,又会跳回循环的开头,再测试“条件”;如此继续下去。

3.5.5 While…Wend循环 执行流程 同do while 一样 所不同的是,语句组中 不能包含Exit Do While 条件 真 条件 假 语句组

While…Wend循环举例 例21:使用While循环 测试本例 <html> <head><title>While...Wend循环</title> <script language="VBScript">   ANS=InputBox("请输入“快乐”的英文") While UCase(ANS)<>"HAPPY" '用While来写 MSG= "不正确!" & CHR(13) & CHR(10) & "请重新输入“快乐”的英文" ANS=InputBox(MSG) Wend MsgBox "太棒了!你答对了!" </script> </head><body></body></html> 测试本例

综合举例 例22:显示当月月历 显示表头 <html><body> <div align="center"> <p> <script language="VBScript"> document.write year(date())& " 年 " & month(date()) </script> 月  <font size="6">月 历</font></p> <table border="1" width="512"> <script> document.write "<tr>" For i=1 To 7 document.write "<th width='67' height='38'>星期" document.write mid("日一二三四五六",i,1)& "</th>" next 显示表头

例22:显示当月月历 计算本月1日是星期几 i为行号 document.write "</tr>“   tday=day(date())   tweekday=weekday(date())   tweekday=((tweekday-tday) mod 7+7) mod 7+1   t=0:i=1   do   document.write "<tr align='center'>"    ’显示一行   document.write "</tr>"    i=i+1   loop until t=0  </script>  </table> </div></body></html> i为行号 t=0显示空格 t=1显示数字

第1行该月1日显示的位置,设置开始显示数字标志,显示数字k设为1 例22:显示当月月历 第1行该月1日显示的位置,设置开始显示数字标志,显示数字k设为1 显示一行 For j=1 To 7 If j=tweekday and i=1 then t=1:k=1 If t=1 then If k=tday then document.write "<td bgcolor='Olive'>" & k & "</td> " else document.write "<td>" & k & "</td> " end If k=k+1 document.write "<td>" & " " & "</td> " If k>=28 and day(k+date()-tday)=1 then t=0 next 当天日期以特殊颜色输出 t<>1时单元格中显示空白 k+1是下月1日时,设置结束数字输出标志

例22:显示当月月历 浏览结果 t=0 i=1 k=1 测试本例 t=0

本章小结 本章讨论了作为常用的两种控制结构的五种表现形式,即分支语句和循环语句。 根据条件选择执行某些语句的If语句,有三种基本形式,即简单的If语句,包含Else部分的If语句和使用Elseif的If语句。它们都是根据某一条件的满足与否来决定选择哪一些语句执行。 根据某个变量或表达式的值的种类或大小来确定选择执行哪一组语句,通常使用Select引导的多分支语句。

本章小结 循环语句是用于控制重复执行一组语句的语句。VBScript中可用的循环有四种形式,即For-Next、While-Wend、Do-Loop和For Each…Next。其中For-Next往往用在循环次数事先确定的场合;For Each用在集合或数组中;Do…Loop是功能较强的条件式循环。 通过本章的学习,读者应该能使用这些控制结构,并参照例子中的程序,编写出满足自己需要的简单脚本程序。

习题 一、判断下列说法的正确性 1.多分支语句格式中的变量可以是字符串。 2.若当变量的值从1到10都作相同的处理,能写成Case 1 TO 10。 3.If的第二种格式中,若Else部分包含If语句,则可转换成第三种格式。那么,Then部分可以包含If语句。 4.在If语句中,若有Else部分,则必须写在几行中。 5.在If语句中,若Then后面要执行几个赋值操作,又有Else部分,则这个If语句必须分几行写。 6.请指出下面的格式是否合法,会不会有二义性。  If 条件 Then   If 条件2 Then 语句  Else    语句  End If

习题 二、操作题 查看结果 1.你能看出以下网页的功能吗?请上机验证。 <html><head> <title> 1到100的和</title> <script language="VBScript"> <!-- Do i = i + 1 s = s + i Loop Until i = 100 msgbox "1到100的和为:" & s --> </script> </head></html> 查看结果

习题 2.能看出以下代码会输出什么结果吗?请上机验证。 查看结果 <html><head><title>风景画</title> <script language="VBScript"> document.write("<CENTER><FONT size=60 color=#c99c96 FACE=Webdings>") For i=65 To 75 document.write "&#" & i next document.write "<BR>&#116" For i=80 To 84 document.write "</FONT></CENTER>" </script></head></html> 查看结果

习题 3.设计一个VBScript程序,依用户在对话框内输入的身高判断是否要购买全票(身高160以上需购买全票),效果如图所示。

习题 4.设计一个VBScript程序,依用户在对话框内输入的身高判断所需买的票种类(身高160以上需购买全票,140—159买半票,139以下儿童票),效果如图所示。

习题 5.编写网页,当单击窗口中按钮时,输出以下形式的三角形 ********* ******* ***** *** *     ********* ******* ***** *** * 6.编写网页显示以下级数之和。    S=2+4+6+…+98

习题 三、阅读和理解程序,指出以下各程序段运行时会输出什么 1. For i=3 To 17 step 3 document.write i next document.write "i的终值为:" & i 2. j=4 For i=1 To j step 2 document.write i & "<BR>" j=j+1

习题 三、阅读和理解程序,指出以下各程序段运行时会输出什么 3. i=4 For i=1 To i+1 i=i+1 document.write i Next 4. i=1:s=0 Do until i>10 s=s+i loop document.write "s=" & s