3.4.2 循环结构


  本文标签:循环 VB ASP .NET ASP .NET程序设计教程

  循环是用于重复执行某些操作的结构  。许多实际问题都要用到循环控制,如求多个数之和、输入或输出多个值等  。VB .NET实现循环的语句主要有4个:1) For…Next;2) For Each … Next;3) Do...Loop;4) While  。】

  1. For...Next语句
 语法:
For 循环变量=初值to终值 [Step步长]
语句块
[Exit For]
[语句块]
Next [循环变量]
For...Next循环语句主要用于循环次数预知的情况  。
语法中的循环变量必须为数值型,用于控制循环执行的次数  。步长若为正,要求初值小于终值;若为负,则初值大于终值,默认值为1  。Exit For的作用是终止循环,遇到该语句时退出循环,执行Next以后的语句  。
For...Next语句的执行流程如图3-10所示  。

图3-10   For...Next循环语句流程图 

图3-10   For...Next循环语句流程图

  例如下面的程序段计算1'100之间所有自然数之和  。
Dim Sum As Integer = 0
Dim i As Interger
For i = 1 To 100
Sum += i
Next
<%@ Page Language="vb"%>
其中i为循环变量,用作For...Next循环中的循环计数器  。

  【例3.4】设计如图3-11所示的ASP .NET页面,在表格中分别以1'7号字连续变化,显示行号和“你好!”文字  。

  

图3-10   For...Next循环语句流程图 

图3-11   利用循环实现表格中1'7号字连续变化的显示

  源代码如下(Ex3-4.aspx):
<%@ Page Language="vb"%>




 
<%
Dim i
Dim FontStr1,FontStr2
For i=1 To 7
FontStr1 = ""
FontStr2 = "
"
Response.Write("")
Response.Write("")
Response.Write("")
Next
%>
 
" & FontStr1)
Response.Write( i & FontStr2 & "
" & FontStr1)
Response.Write("你好!" & FontStr1 & "

<%@ Page Language="vb"%>例3.4通过For循环实现对表格中显示的文字大小的控制,以循环变量i来控制显示字号的大小  。当i为1时,字号Size值为1;当i为2时,字号Size值也为2;依此类推  。
程序中使用了ASP .NET的内置对象Response,它主要用于向浏览器送回消息  。例中所使用的Write方法的功能就是向浏览器返回显示的消息  。本书第5章将讲述ASP .NET内建对象及其使用  。

  

  2. For Each...Next语句
这个语句是专门为集合和数组设计的,它在格式上与For...Next语句十分相似  。
语法:
For Each 表达式 In group
语句块
[Exit For]
[语句块]
Next
若表达式是集合或数组的元素,则重复执行语句块的操作  。Exit For的含义与前面相同  。
例如:
Dim Score() As Integer = {80,90,100,89,98}     定义整型数组Score并赋初值
Dim mark As Integer,Sum As Integer = 0
For mark In Score                              求数组Score()各元素之和
Sum += mark
Next
上述程序代码求出Score() 数组各元素之和  。第一次执行循环时,mark是Score(0),以后各次循环,mark依次是Score(1)、Score(2)...,当处理完Score() 中的最后一个元素后,循环将结束  。有关数组的介绍请参阅第3.5节  。
3. Do...loop语句
其作用是:循环重复执行一组语句直到某个条件为“True”时终止循环,用于控制循环次数未知的循环结构  。Do...Loop语句有两种格式  。
语法:
Do {While/Until} 条件表达式
语句块
[Exit Do]
语句块
Loop                                        Do...Loop语句格式一
或者:
Do
语句块
[Exit Do]
语句块
Loop {While/Until} 条件表达式                 Do...Loop语句格式二
其中格式一是先判断条件,后执行循环体,循环有可能一次也不执行;格式二先执行循环体后判断条件,循环至少执行一次  。
当遇到Exit Do语句时,退出循环,执行Loop的下一语句  。
Do...Loop语句的执行流程如图3-12所示  。

  

图3-12   Do...Loop循环结构流程图  

图3-12   Do...Loop循环结构流程图

  【例3.5】猜数游戏  。程序的界面如图3-13所示,给定一个数字(本例为108),由用户来猜  。用户在文本框中输入数字,点击“猜对了吗?”按钮  。若猜中,给出成功提示;若猜错了,也给出“大于”或“小于”的提示  。

  源代码如下(Ex3-5.aspx):

  





猜数游戏











  
请输入您猜的数:




   程序中Btn_Click过程使用Do While … Loop循环,当输入的数不等于所设定的数时,反复执行Response.Redirect操作,该操作的功能是重定向页面  。本例将重定向页面的目标仍指向本文件(Ex3-5.aspx),即若未猜中则重复猜  。
本例还设计了另外一个过程Page_Load(),它是页面在浏览器中加载时执行的  。该过程中使用了Request (“hint”)读取传入的hint参数值  。Request是ASP .NET的另一个重要对象,其功能与Response相反,是从浏览器读取数据  。另外,本例还使用了在页面间传递参数的技术  。当从一个页面转向另一个页面,需要传递参数时,可以使用参数  。本例中,Response.Redirect ("Ex3-5.aspx?hint = " & "太小了!") 操作就是实现当转向Ex3-5.aspx页面时,向该页面传入名为hint,值为“太小了!”的参数,该参数值通过Request对象即可读出  。有关ASP .NET对象及参数传递等内容,将在第5章详述,本章及下一章举例时也会使用到  。
可将例3.3中的Do while ... Loop循环改为Do ... Loop Until循环格式,请自行修改  。

  4. While循环语句
While循环与Do While很相似,也是先判断条件,再执行循环体  。
语法:
While 条件表达式
语句块
[Exit While]
[语句块]
End While
Exit While为跳出循环体  。


【责任编辑:老杨 Tel:(010)68576606-8005】


回书目   上一节   下一节