第3章流程控制语句课件.pptx
Visual Basic语言作为结构化程序设计语言,提供了三种控制流来控制程序的流程:顺序,条件分支和循环。,第三章 流程控制语句,第三章 流程控制语句,Visual Basic语言作为结构化程序设计语言,,程序中的语句依照其在程序中的位置自上而下地执行,叫做语句的顺序执行。顺序结构程序由声明、输入、计算和输出等部分组成。,3-1 顺序结构程序设计,3-1-1 赋值语句格式:变量名=表达式 或 对象属性名=表达式 功能:将赋值号右边表达式的值赋给赋值号左边的变量或对象 属性。举例:Form1.width=300 Form1.caption=输入框 Temp=Temp+20,程序中的语句依照其在程序中的位置自上而下地执行,叫做,说明:赋值号左边只能是变量,不能是表达式、常量。如下面的赋值语句是错误的:sin(x)=x+y 左边是表达式 5=sqr(s)+a+b 左边是常量 x+y=a+b 左边是表达式 当表达式为数值型且与变量的精度不相同时,强制转换成左边变量的精度。例如:XA%=4.7 XA是整型变量,XA中的结果是5。当右边的表达式是数字字符串,左边变量是数值类型时,自动转换成数值类型再赋值;但当表达式有非数字字符或空串时,则出错。例如;n%=“123”n中的结果是123,与n%=Val(“123”)效果相同 n%=“1a23”出现“类型不匹配”的错误,说明:,任何非字符类型的值赋给字符变量时,系统自动转换为字符类型。比如x$=123,将数值123转换为字符串赋给字符型变量x 当逻辑型赋值给数值型时,True转换为-1,False转换为0;反之,当数值型赋给逻辑型时,非0转换为True,0转换为False.赋值语句中的“=”与关系运算符中的“=”的作用截然不同。例如:A=7=9 第一个“=”是赋值运算符,第二个“=”是关系运算符。A的结果是False 赋值语句a=b和b=a是两个含义完全不同的赋值语句;而在关系表达式中a=b和b=a是两种等价的表示方式。,任何非字符类型的值赋给字符变量时,系统自动转换为字符类型。,不能在同一语句中给多个变量赋值。例如:Dim a As Integer,b As Integer,c As Integera=b=c=1我们的本意是给a、b、c赋初值1,书写上没有错误。但VB编译时,将右边两个“=”作为关系运算符处理,先进行b=c的的比较,结果为-1(True);接着进行-1=1的比较,结果为False;最后将False给a,而False 转换为整型值为0,故a的值最后为0.,变量的默认值声明了变量后,不同的数据类型有不同的默认值:数值型为 0Boolean型为 FalseString型为 空Date型为 0:00:00Variant型为 空,不能在同一语句中给多个变量赋值。例如:变量的默认值,Dim A As Integer Dim B As Integer Dim C As Integer A=123 B=456 Print A,B C=A A=B B=C Print A,B,例3.3 将A和B单元的内容互换。,Dim A As Integer例3.3 将A和B,3-1-2.数据输入数据输入的方法有很多种。比如键盘、鼠标、磁盘文件、网络端口、声卡及其它输入设备。最常用的是用键盘和鼠标。1.使用InputBox()函数格式:InputBox(提示信息,标题,默认值,x座标,y座标)该函数返回用户的输入,为字符型的函数。可以指定一个提示信息,在进行输入时向使用者提示输入数据的性质。也可以指定输入框的标题和指定其显示位置,还可以设置一个缺省值。功能:打开一个对话框,等待用户键入内容。当用户单击“确定”按钮或按回车键时,函数返回输入的值(字符串类型),单击取消按钮时,返回空字符串。,3-1-2.数据输入,例3.1 使用InputBox函数显示用户输入的数据 MyValue=InputBox$(请输入学校名或系名,Inputbox 函数的例子,校名,2000,2000)Print MyValue,标题,提示信息,默认值,例3.1 使用InputBox函数显示用户输入的数据标题提示,其中:“提示信息”:字符串表达式,必选项。在对话框中作为提示信息,可以是字符或汉字。如果提示信息包含多行,则必须在每行末用回车符(VbCR)、换行符(VbLF)或回车换行符的组合(VbNewLine或VbCRLF)来分隔。比如:MyValue=InputBox$(请输入学校名+vbNewLine+或系名,Inputbox 函数的例子,校名,2000,2000)“标题”:可选项。显示在对话框标题栏中的字符串表达式。如果省略,则把应用程序名放在标题栏中。“默认值”:可选项,显示文本框中的字符串表达式。当在输入对话框中无输入内容时,该缺省值作为输入的内容。如果省略,则文本框为空。“X坐标,Y坐标”:可选项,数值表达式。指定对话框在屏幕上的位置。屏幕左上角为坐标原点,向右为x正方向,向下为y的正方向。InputBox()函数返回的是字符,若要得到数值型数据,可以使用val()函数,或者直接赋给数值型变量 Dim x As Integer x=InputBox(请输入数据)Print x,其中:,2.使用文本框(TextBox)控件 该控件可以让用户输入或者编辑一个字符串,它的Text属性包括了控件内的文本。例:uAge=Val(TxtAge.Text)注:TxtAge是一个文本框控件的名字,Val是将字符串转为数值的函数。,例3.2 使用TextBox控件输入数据在窗体上创建两个文本框:text1和text2,然后输入以下代码:Dim name As String,age As Integername=Text1.Text:age=Val(Text2.Text)Print name,age,Val()函数,将文本转换为数值,2.使用文本框(TextBox)控件例3.2 使用TextB,有三种方法进行输出使用print方法使用控件(文本框、标签)使用消息框1.使用Print方法进行输出格式:对象名.Print 输出项 功能:在指定对象上显示数据。说明:对象名:可以是窗体(Form)、图片框(Picture)、打印机(Printer)或者调试窗口(Debug),如果不指定,则认为是当前窗体。输出项:可选项。可以是一个或多个任意表达式。当有多个表达式时,其间要用分隔符隔开。显示的字符串内容要用双引号括起来。当省略表达式和分隔符时,输出一空行。,3-1-3 数据输出,有三种方法进行输出3-1-3 数据输出,例:S$=“你好呀!”X%=100Print 5+6,100Print“hello!”Print“s=”;s,“x=”;xPrint x=200,x 输出什么呢?分隔符:“,”代表随后的输入自下一个制表位(每14列一个)开始,“;”代表连续输出。Print输出的位置是在对象的左上角0,0处输出的时候可以作用Tab(n)和Spc(n)函数来进行绝对和相对定位。Tab(n)函数:可选。用来将插入点定位在绝对列号上,这里,n 为列号。Spc(n)函数:可选。用来在输出中插入若干个空白字符,这里,n 为要插入的空白字符数。,例3.5 用Print语句输出各种格式的数据。,Dim a,b,c,x,y,z a=1:b=2:c=3 x=4:y=5:z=6 Print a,b,c Print x,y,z Print a;b;c;Print x;y;z Print Tab(20);“abcc Print Print Spc(20);0.00000028,例:例3.5 用Print语句输出各种格式的数据。,2.使用控件进行输出(1)使用标签 Label 控件进行输出 标签控件可用于输出固定(无须进行编辑的)文本,方法是给Label控件的Caption属性赋值。例:Label1.Caption=“这是一个标签”Label1.Caption=Date&vbCrLf&Time(2).使用文本框 TextBox 控件输出 文本框控件既可用于输入也可以用于输出,使用的方法是给文本框控件的Text属性赋值。例:Text1.Text=“可以进行输出”,回车换行符,2.使用控件进行输出回车换行符,3.用消息框输出消息框可以实现系统和用户间的交互,使用MsgBox函数来实现格式:变量%=MsgBox(提示,按钮类型,标题)或者:MsgBox 提示,按钮类型,标题说明:第一种是函数的使用方法,能取得返回值,知道用户点击了哪个按钮,第二种方法只是显示消息。“提示”和“标题”的含义与InputBox()函数中对应的参数相同。“按钮类型”:可选项,为整型表达式(或内部常数)。由按钮的数目、图标类型和默认按钮三类数值相加产生。例:MsgBox“这是一个消息框”,VbOkCancel,“测试”或 MsgBox“这是一个消息框”,1,“测试”又如:MsgBox 这是一个消息框,1+16,测试“按钮”设置见下表。,3.用消息框输出,MsgBox函数“按钮类型”设置值,分组 内部常数 按钮值 描,“变量%”:返回值。当用户按下消息框按钮时,系统将返回按键相对应的数值。返回值的定义见下表例:Dim x As Integerx=MsgBox(这是一个消息框,vbOKCancel,测试)Print x,MsgBox函数返回值的定义,利用这个返回信息,用户可以在以后的程序中作出不同的响应。例如,在打印文件时,如果选择“确定”按钮,那么程序就应该打印文件;如果选择“取消”按钮,程序就不再打印文件;,“变量%”:返回值。当用户按下消息框按钮时,系统将返,4.使用Format函数对输出信息进行格式化处理格式:Format(表达式,格式字符串)功能:对数值、日期、时间、字符等类型数据按指定格式进行编排,产生需要的输出字符串。说明:“表达式”是要格式化的数值。“格式字符串”格式字符串由一些符号组成,这些符号用来说明如何确定该数字的格式,格式字符串一定要用引号括起来。见教材表3-1。下面仅对常用的格式进行举例说明。Format(8315.4,“00000.00”)08315.40Format(8315.4,“#.#”)8315.4Format(8315.4,“#,#0.00”)8,315.40Format(315.4,“$#0.00”)$315.40例:print Format(8315.4,“00000.00”)5.清屏 cls,4.使用Format函数对输出信息进行格式化处理,上课教程61页【例3.8】上机实验:实验教材的实验3:3.编程题(1)、(2)、(3),上课教程61页【例3.8】,Visual Basic 选择结构的实现:*IfThen 语句(单分支结构)*IfThenElse 语句(双分支结构)*Select Case 语句(多分支结构),3-2 选择结构程序设计,Visual Basic 选择结构的实现:3-2,1.IfThen语句(单分支结构),格式1:If表达式Then 语句 格式2:If表达式Then 语句(块)End If,功能:当表达式的值为“真”时,则执行Then后面的语句或语句块;否则不执行任何操作。格式1称为行IF,格式2称为块IF。,1.IfThen语句(单分支结构)格式1:If表达式,说明:表达式为逻辑表达式。数值表达式和关系表达式被视为逻辑表达式的特例。当表达式为数值表达式时,VB 将这个值解释为 True 或 False:一个为零的数值为 False,而任何非零数值都被看作 True。如:if 5 then print“非0”语句块可以是一条或多条语句。如果使用格式1的简单形式表示,则只能是一条语句;或用冒号隔开的多条语句,但这些语句必须书写在一行上。比如:If anyDate Now Then anyDate=Now 和下面语句等效:If anyDate Now Then anyDate=Now End If If.Then 的单行格式不用 End If 语句。,说明:表达式为逻辑表达式。数值表达式和关系表达式被视为逻,创建两个标签 Label1和Label2:Dim a As Single,b As Single,c As SingleDim d As Single,x1 As Single,x2 As SingleLabel1.Caption=第一个根是:Label2.Caption=第二个根是:a=8:b=12:c=2d=b*b-4*a*cIf d=0 Then x1=(-b+Sqr(d)/(2*a)x2=(-b-Sqr(d)/(2*a)Label1.Caption=Label1.Caption+Format(x1)Label2.Caption=Label2.Caption+Format(x2)End If,例:求一元二次方程的两个实根,格式化输出的是字符串,若将+号改成&则不必要format,创建两个标签 Label1和Label2:例:求一元,2.IfThen Else 语句,2.IfThen Else 语句结构(双分支结构),格式1:If Then Else End If格式2:If Then Else,功能:当表达式的值为非0(True)时,执行Then后面的语句块1,否则执行Else后面的语句块2。,2.IfThen Else 语句2.IfThen E,【例1】求两个输入值的较大者Dim x As Integer,y As IntegerLabel1.Caption=“较大值是:x=Val(InputBox(请输入第一个数:)y=Val(InputBox(请输入第二个数:)If x y Then Label1.Caption=Label1.Caption&xElse Label1.Caption=Label1.Caption&yEnd If,【例1】求两个输入值的较大者,建立一个Label1标签,输入程序 如下:x=InputBox(请输入X的值,输入框,500,500)If x 0 Then y=Sin(x)+Sqr(x*x+1)Else y=Cos(x)-x 3+3*xEnd IfLabel1.Caption=Format(y),【例2】计算分段函数Y=x0 x=0建立一个Label1标,3.IfThenElse If 语句,3.IfThen Else If 语句(多分支结构)结构,语句格式:If 表达式1 Then 语句块1ElseIf 表达式2Then 语句块2 Else 语句块 n+1 End If,3.IfThenElse If 语句3.IfThen,说明:不管有几个分支,程序执行了一个分支后,其余分支不再执行。ElseIf子句的数量没有限制,可以根据需要使用任意多个ElseIf子句。语句中的ElseIf子句和Else子句都是可选项,如果省略这些子句,则成为单分支结构。If.Then.ElseIf 只是 If.Then.Else 的一个特例。,说明:,Private Sub Command1_Click()Dim x As Single,y As Single x=Text1.Text If x 0 Then y=5 ElseIf x 2 Then y=x+1 Else y=x 2+2 End If Text2.Text=yEnd Sub,例:输入 x,计算分段函数 y 的值并输出,不要写成x=0,Private Sub Command1_Click()例:,程序设计界面如下,例:求一元二次方程ax2+bx+c=0的根,程序设计界面如下Label3Label2Label1Comm,Private Sub Command1_Click()Dim a As Single,b As Single,c As Single,d As Single,x1 As Single,x2 As Single,x As Single a=InputBox(“输入a的值”,“输入框”):b=InputBox(“输入b的值”,“输入框”):c=InputBox(输入c的值,输入框)If a=0 Then x=-c/b:Label2.Caption=Label2.Caption+Format(x):Label3.Caption=Label3.Caption+Format(x)Else d=b*b-4*a*c If d 0 Then x1=(-b+Sqr(d)/(2*a):x2=(-b-Sqr(d)/(2*a)Label2.Caption=Label2.Caption+Format(x1):Label3.Caption=Label3.Caption+Format(x2)ElseIf d=0 Then x=-b/(2*a)Label2.Caption=Label2.Caption+Format(x):Label3.Caption=Label3.Caption+Format(x)Else d=Abs(d):x1=(-b)/(2*a):x2=Sqr(d)/(2*a)Label2.Caption=Label2.Caption+Format(x1,#.#)+Format(Abs(x2),#.#)+i Label3.Caption=Label3.Caption+Format(x1,#.#)+-+Format(Abs(x2),#.#)+i End If End IfEnd Sub,程序代码如下,Private Sub Command1_Click()程序,4.If 语句的嵌套,条件语句可以嵌套,即把一个If Then Else 块放在另一个If Then Else 块内。语句形式为:If then if then endif Endif嵌套必须完全嵌套,也就是内层条件语句必须完全包含在外层条件语句之中,不得交叉!,比如上例计算分段函数的值,用嵌套实现Private Sub Command1_Click()Dim x As Single,y As Single x=Text1.Text If x=0 Then If x=2 Then y=x 2+2 Else y=x+1 End IfElse y=5 End If Text2.Text=yEnd Sub,4.If 语句的嵌套4.If 语句的嵌套条件语句可以,例如,已知X、Y、Z三个数(比如 x=3,y=5,z=8),比较他们的大小并排序,使得XYZ。If xy(x=5,y=3)EndifIf yz(y=8,z=3)if xy then 此时x,y的值已变化 t=x:x=y:y=t(x=8,y=5)endifEndif结果:x=8,y=5,z=3,例如,已知X、Y、Z三个数(比如 x=3,y=5,z=8),,格式:Select Case 测试表达式 Case 表达式表1 语句块1 Case 表达式表2 语句块2 Case 表达式表n 语句块n Case Else 语句块n+1 End Select,5Select Case语句(多分支结构),FTFF表达式表n语句块n+1语句块nT表达式表2语,功能:Select Case语句在执行时,先求测试表达式的值,然后寻找该值与哪一个Case子句的表达式值相匹配,找到后则执行与该Case语句有关的语句块,之后自动转到EndSelect后的语句执行;如果没有找到与Case子句中的表达式相匹配的值,则执行Case Else子句有关的语句块,然后转到End Select后面的语句执行。说明:测试表达式只能是数值表达式或字符串表达式,不能是逻辑表达式。表达式表与测试表达式的类型必须相同,每一个表达式表是一个或几个值的列表。表达式表有四种形式:,一个表达式。如:Case 6 一组用逗号隔开的枚举值。如:Case 1,3,5,7 或 Case“A”,“B”一个范围,表达式1 TO 表达式2。如:Case 1 To 10 或 Case“a”to“z”Is。如:Case Is=80 或 Case Is”t”另外,在一个情况语句中,上述四种形式可以混合使用,功能:一个表达式。如:Case,当有多个Case子句的取值范围和测试表达式的值域相符时,只执行符合要求的第一个Case子句后的语句块。Select Case语句只对单个表达式求值,并根据求值结果执行不同的语句块;而If Then Else语句可以对不同的表达式求值,然后执行不同的操作。这是两者的主要区别。,当有多个Case子句的取值范围和测试表达式的值域相符时,,例311:使用case语句改变窗体标题,Private Sub Form_Click()Dim index As Integerindex=Val(InputBox(请输入一个数:)Select Case index Case 1 Form1.Caption=复制操作 Case 2 Form1.Caption=剪切操作 Case 3 Form1.Caption=粘贴操作 Case 4 Form1.Caption=清除操作 Case Else Form1.Caption=其他操作End SelectEnd Sub,例311:使用case语句改变窗体标题Private S,Private Sub Form_Click()Dim Score As IntegerScore=Val(Text1.Text)Select Case Score Case Is=90 Label1.Caption=优秀 Case Is=80 Label1.Caption=良好 Case Is=70 Label1.Caption=中等 Case Is=60 Label1.Caption=及格 Case Else Label1.Caption=不及格End SelectEnd Sub,Private Sub Form_Click(),例 输入19001999年中的任意一个年份,编写程序,计算该年的生肖。,CmdCalcu,Label1,Label2,界面设计如下,例 输入19001999年中的任意一个年份,编写程序,计,Private Sub CmdCalcu_Click()Dim Year As Integer Dim Name As Integer Year=InputBox(请输入一个19001999间的年份:)Label1.Caption=Str(Year)+年的生肖为:Year=Year-1984 If Year=0 Then Name=Year Mod 12 Else Year=Abs(Year)Name=12-(Year Mod 12)End If Select Case Name Case 0 Label2.Caption=鼠 Case 1 Label2.Caption=牛 Case 2 Label2.Caption=虎,Case 3 Label2.Caption=兔 Case 4 Label2.Caption=龙 Case 5 Label2.Caption=蛇 Case 6 Label2.Caption=马 Case 7 Label2.Caption=羊 Case 8 Label2.Caption=侯 Case 9 Label2.Caption=鸡 Case 10 Label2.Caption=狗 Case 11 Label2.Caption=猪 End SelectEnd Sub,程序代码如下,Private Sub CmdCalcu_Click()Ca,条件函数:IIf(表达式1,表达式2,表达式3)首先执行表达式1,若为真,则结果为表达式2,若为假,则结果为表达式3,Private Sub Command1_Click()Dim x As Single,y As Single,max As Singlex=InputBox(请输入第一个数,输入)y=InputBox(请输入第二个数,输入)max=IIf(x y,x,y)Print 最大值为:&maxEnd Sub,条件函数:Private Sub Command1_Clic,上机实验:实验教材的实验4:3.编程题(1)、(3)、(4)、(6)、(7),上机实验:,循环是在指定的条件下多次重复执行一组语句,这可通过循环结构来实现。循环分当型和直到型。VB中提供了两种类型的循环语句:一种是计数循环语句;另一种是条件循环语句。Visual Basic 支持的循环结构有多种,这里只介绍两种:For.Next DoLoop,说明:For.Next 循环用于事先知道次数的循环。DoLoop 循环用于事先不知道循环次数的循环结构。,3-3 循环结构程序设计 循环是在指定的条件下,1.For Next循环,格式:For 循环变量=初值 To 终值 Step 步长 Next 循环变量,说明:格式中的参数说明:循环变量必须为数值型。循环的初值、终值和步长都是数值表达式。其中,步长可正可负。如果没有设置step,则增量默认为1。增量为正时,初值应该小于等于终值,增量为负时初值应该大于等于终值,否则不执行循环。步长不能为 0 Next是循环终端语句,在Next后面的循环变量与For中的循环变量必须相同。当循环是单层循环时,Next后面的循环变量可以不写。,1.For Next循环 1.For Next循环循,For循环的执行过程:首先把初值赋给循环变量,接着检查循环变量的值是否超过终值,如果超过就不执行循环体,跳出循环,执行Next后面的语句;否则执行一次循环体,然后把循环变量增加步长,再赋给循环变量,重复上述过程。,当初值等于终值时,不管步长是正数还是负数,都执行一次循环体。循环次数由初值、终值和步长决定,计算公式为:循环次数=INT(终值 初值)/步长+1),程序进入For循环后,是否跳离循环的判断条件是依据循环变量的值做决定的。在循环体中可以使用循环变量,但一般不再对循环变量赋值。如果在循环中任意改变循环变量的值,会导致循环异常(见下页的例子)。,For循环的执行过程:首先把初值赋给循环变量,接着检查循,例:找出所有小于50的正整数中等于7的倍数的数。,Private Sub Form_Click()Dim I As IntegerFor I=1 To 50 If I Mod 7=0 Then Print INextEnd Sub,例:找出所有小于50的正整数中等于7的倍数的数。Priva,Private Sub Form_Click()Dim I As Integer,Sum As IntegerSum=0For I=1 To 100 Step 1 Sum=Sum+INext IPrint SumEnd Sub循环结束后,I 的值是101计算奇数和、偶数和只要改变步长即可,例:求1+2+3+100,步长为1可以省略,Private Sub Form_Click()例:求1+,例1:for n=1 to 3 print“第”&n&“次运行”n=5 next print n运行结果:第1次执行 6,例2:for I=1 to 3 print“第”&I&“次运行”I=1 next print I运行结果:第1次执行 第2次执行 第2次执行,私自修改循环控制变量导致的异常情况(不够次数或者无限(死)循环),例1:for n=1 to 3例2:for I=1 to 3,2.Do.Loop循环,格式1:Do While|Until 条件 循环体Loop,说明:While和Until只能取其一。While和Until使用相反的条件。Do和Loop应成对出现。循环体中要有更改条件的语句,以避免出现死循环。格式1 可以一次也不执行循环体。格式2 至少要执行一次循环体。特别注意:如果While和Until都省略,则应该在循环体中用EXIT DO语句退出循环。循环内可有多处存在EXIT DO语句。,格式2:Do 循环体Loop While|Until 条件,2.Do.Loop循环格式1:说明:2.Do.,格式:Do While 条件表达式 循环体 Exit Do 循环体 Loop,说明:条件表达式可以是一个逻辑表达式,也可以是一个关系表达式或数值表达式,其值应是逻辑型。条件为真时循环,为假时结束循环。若为数值型表达式,其值为非0时表示为真,为0时表示为假。Do While和Loop应成对出现。循环体中要有控制循环的语句,以避免出现死循环。由于该循环的特点是先判断条件,然后再决定是否要执行循环体里的语句。所以,这种循环可以一次也不执行循环体。其流程图如图3.14所示。Exit Do 表示当遇到该语句时,强制退出循环,执行Loop后的下一条语句。,格式:Do While 条件表达式.Do Whi,格式:Do 循环体 Exit Do 循环体 Loop While条件表达式,说明:至少要执行循环体一次。与Do While循环的区别:Do While循环先测试条件是否成立,只有成立才执行循环;而该循环先执行循环体,后测试条件是否成立。,TF条件循环体图3.15 DoLoop While格式:,格式:Do Until条件表达式 循环体 Exit Do 循环体 Loop,格式:Do 循环体 Exit Do 循环体 Loop Until条件表达式,条件为假时循环,与DoWhile循环相反,格式:.Do Until Loop语句图3.1,格式:While 条件表达式 循环体 Exit Do 循环体 wend 这种格式和Do While.Loop结构的功能完全相同,2.Do.Loop循环,格式:While 条件表达式2.Do.Loop循,例 求1到100之间所有自然数的平方和。即,Private Sub cmdDoWhileLoop_Click()Dim i As Integer,Total As Long i=1:Total=0 Do While i=100 Total=Total+i*i i=i+1 Loop Label1.Caption=Do While Loop方法结果:Label2.Caption=Format(Total)End Sub,Private Sub cmdDoLoopWhile_Click()Dim i As Integer,Total As Long i=1:Total=0 Do Total=Total+i*i i=i+1 Loop While i=100 Label1.Caption=Do Loop While方法结果:Label2.Caption=Format(Total)End Sub,例 求1到100之间所有自然数的平方和。即Priva,Private Sub cmdDoUntilLoop_Click()Dim i As Integer,Total As Long i=1:Total=0 Do Until i 100 Total=Total+i*i i=i+1 Loop Label1.Caption=Do Until Loop方法结果:Label2.Caption=Format(Total)End Sub,Private Sub CmdForNext_Click()Dim i As Integer,Total As Long Total=0 For i=0 To 100 Total=Total+i*i Next i Label1.Caption=For Next方法结果:Label2.Caption=Format(Total)End Sub,Private Sub cmdDoUntilLoop_Cli,3.循环的强制退出,除了For 语句以计数值来判断循环是否结束之外,也可以用“Exit For”语句强制结束循环的执行。通常“Exit For”语句和If、Select Case语句配合使用,代表在某种特定的情况下,循环中的程序不再继续进行。同样地,Exit Do用于退出DO循环。,3.循环的强制退出 3.循环的强制退出 除了For,Private Sub Form_Click()Dim I As Integer,Sum As IntegerFor I=100 To 1000 If I Mod 3=0 Then Sum=Sum+I Print I If Sum 3000 Then Exit For End IfNextPrint SumEnd Sub,例:求100到1000间能被3整除的数的和,直到和大于3000为止,Private Sub Form_Click()例:求10,循环的嵌套是指一个循环体内完整地包括了另一个循环。一套一称为二重循环,如果二重循环的内循环中又包含一个循环,则称为三重循环,依此类推。三重以上的可称为多重循环。For循环和Do可以混合嵌套,但是各循环间只能平行嵌套,不得交叉。下例是非法的循环嵌套。For IFor JNext INext J,就和我们一层层的包裹东西是一样的!,内循环变量和外循环变量不能同名外循环必须完全包含内循环,不能交叉,4.循环的嵌套循环的嵌套是指一个循环体内完整地包括了另一,嵌套循环的工作过程:Dim i As Integer,j As IntegerFor i=1 To 2 Print i=;i For j=1 To 3 Print j=;j Next j Print i=;i,j=;jNext iPrint End,i=;i,j=;j,嵌套循环的工作过程:外循环i的值 j的值内循环第 1 轮11,例:步长小于0的嵌套循环例子。用“*”输出一个倒三角形。,Private Sub Form_Click()For i=10 To 1 Step-1 For j=1 To i Print*;Next j PrintNext iEnd Sub,例:步长小于0的嵌套循环例子。用“*”输出一个倒三角形。,4、求一类三位数,该数中有某两位为相同数字,且该数是一个完全平方数,输出这些数并统计个数。Dim n As Integer,a As Integer,b As IntegerDim c As Integer,d As Integer,t As SingleFor i=100 To 999a=i 100 得到百位上的数字b=(i-a*100)10得到十位上的数字c=(i-a*100-b*10)得到个位上的数字 If a=b Or b=c Or a=c Then t=Sqr(i)If t=Int(t)Then Print i n=n+1 End If End IfNext iPrintPrint 这些数个数是;n,4、求一类三位数,该数中有某两位为相同数字,且该数是一个完全,例:百元买百鸡问题:公鸡,母鸡,小鸡分别为5、3和1/3元一只则有方程 x+y+z=100 5x+3y+z/3=100,Private Sub Command1_Click()Cls Rem 百元买百鸡问题 For x=0 To 20 For y=0 To 33 z=100-x-y If 5*x+3*y+z/3=100 Then Print 公鸡;x,母鸡=;y,小鸡=;z End If Next y,xEnd Sub,例:百元买百鸡问题:公鸡,母鸡,小鸡分别为5、3和1/3元,作业与上机实验:上课教材95页习题11,12,14题实验教材67页的实验5:3.编程题(2)、(3),作业与上机实验:,习题讲解:上课教材95页习题11.编写程序计算 11+22+33+1010的值,个位数与十位数相同的数字和:Private Sub Command1_Click()Dim i As Integer,sum As Integersum=0For i=1 To 10 sum=sum+Val(i&i)NextPrint sumEnd Sub,若理解为是等差为11的序列:Private Sub Command1_Click()Dim i As Integer,sum As Lontsum=0For i=11 To 1010 step11 sum=sum+INextPrint sumEnd Sub,