1、第四章 Visual Basic控制结构,第一次课,本章导读,顺序结构与顺序结构语句 选择结构与选择结构语句 循环结构与循环结构语句,实例解析,题目:从键盘上输入一个正整数X(不超过3位),单击“计算”命令按钮,计算该数每位数字之和。输出界面如下图:,Dim x Private Sub Command1_Click() Dim c1 As String, c2 As String, c3 As StringMsgBox “X必须为一个正整数并且不超过三位!“s$ = Chr$(13) + Chr$(10)c1$ = “请输入具体数值“c2$ = “输入后按回车“c3$ = “或单击“确定”按钮
2、“x = InputBox(c1$ + s$ + c2$ + s$ + c3$) End SubPrivate Sub Command2_Click() Dim a%, b%, c%a = x 100 求百位数b = x 10 Mod 10 求十位数c = x Mod 10 求个位数Label1.Caption = “输入的数是:“Label2.Caption = xLabel3.Caption = “该数每位数字之和为:“Label4.Caption = a + b + c End SubPrivate Sub Command3_Click() End End Sub,赋值语句,赋值语句,赋
3、值语句,输入对话框-InputBox函数,消息对话框-MsgBox 过程,赋值语句,4.1 顺序结构与顺序结构语句,赋值语句 赋值语句的使用格式 赋值语句的两个常用形式 不同数据类型数据的赋值 数据的输入与输出 数据的输入/输出控件 输入对话框-InputBox函数 消息对话框-MsgBox函数与MsgBox过程 Print方法,4.1 顺序结构与顺序结构语句,了解顺序结构的运行特点 掌握赋值语句的使用格式 领会不同数据类型间数据的赋值方式 掌握InputBox函数的使用方法 掌握MsgBox函数及过程的使用方法,学习目标,4.1 顺序结构与顺序结构语句,顺序结构中程序在运行时按照语句在各事件
4、中出现的先后顺序逐条执行; 顺序结构中的每一条语句都被执行一次,而且只能被执行一次; 先执行A语句,再执行B语句“自上而下”依次执行。,4.1 顺序结构与顺序结构语句,顺序结构是任何程序的主体结构。 在Visual Basic中,组成顺序结构的语句主要是赋值语句、输入语句和输出语句。,4.1.1 赋值语句,赋值语句的使用格式 赋值语句的两个常用形式 不同数据类型数据的赋值,4.1.1 赋值语句,赋值语句的使用格式语法格式:= . = = . 当系统执行赋值语句时,可使变量或某个对象的某个属性获得一个新值,也可以获取某个对象的某个属性值。,Dim x Private Sub Command1_C
5、lick() Dim c1 As String, c2 As String, c3 As StringMsgBox “X必须为一个正整数并且不超过三位!“s$ = Chr$(13) + Chr$(10)c1$ = “请输入具体数值“c2$ = “输入后按回车“c3$ = “或单击“确定”按钮“x = InputBox(c1$ + s$ + c2$ + s$ + c3$) End SubPrivate Sub Command2_Click() Dim a%, b%, c%a = x 100 求百位数b = x 10 Mod 10 求十位数c = x Mod 10 求个位数Label1.Capti
6、on = “输入的数是:“Label2.Caption = xLabel3.Caption = “该数每位数字之和为:“Label4.Caption = a + b + c End SubPrivate Sub Command3_Click() End End Sub,4.1.1 赋值语句,赋值语句的使用格式注意点: 一个赋值语句只能对一个变量赋值; 要在一行中给多个变量赋值,可以用冒号将语句与语句之间隔开; 赋值号左边的只能是变量或属性名,不能是常量、符号常量和表达式; 赋值语句右边的表达式可以是变量、常量、调用函数等; “=”在赋值语句中作为赋值号,而在表达式中作为关系运算符。,4.1.1
7、 赋值语句,赋值语句的两个形式 累加 Sum = Sum +x 计数 n = n +1,4.1.1 赋值语句,不同数据类型数据的赋值 如果变量与表达式都是数值类型,系统先求出表达式的值,然后将其转换为左边变量的类型后,再赋值。 如果变量为数值型,而表达式为字符型,则自动转换成数值类型再赋值。如果表达式中含非数字字符或空串,则系统将给出“类型不匹配”的错误提示。 当逻辑值赋给数值型变量时,True转换为-1,False转换为0;反之当数值赋给逻辑型变量时,非0转换为True,0转换为False。 任何非字符的值赋给字符型变量,则系统将其自动转换为字符型,再赋值。,4.1.2 数据的输入与输出,数
8、据的输入/输出控件 输入对话框-InputBox函数 消息对话框-MsgBox函数与MsgBox过程 Print方法,4.1.2 数据的输入与输出,数据的输入/输出控件 文本框 标签 列表框 图片框,4.1.2 数据的输入与输出,输入对话框-InputBox函数 InputBox函数可以产生一个对话框,称为输入对话框,这个对话框作为输入数据的界面,用于接受用户通过键盘输入的数据。 在调用InputBox函数时,打开对话框等待用户输入数据,当用户单击“确定”按钮或按回车键时,函数将输入的数据作为字符串返回,并保存在变量中。,4.1.2 数据的输入与输出,输入对话框-InputBox函数 函数格式
9、:, = InputBox(,),提示信息,缺省值,标 题,图4-3 InputBox函数打开的输入对话框,:用于存放InputBox函数的返回值。 Prompt:不可缺省项,表示显示的提示信息字符串。 Title:指定输入对话框的标题,是一个字符串表达式。 Default:显示在用户编辑框中的初始设定值。 x, y:指定输入对话框在屏幕上显示的位置,单位是特维(twip)。 Helpfile, Context:帮助文件名与帮助主题号。 各项参数次序必须一一对应,除了Prompt项不能省略外,其余各项均可省略。如果处于“中间位置”的参数省略,其对应的逗号不能省略。, = InputBox(,)
10、,输入并打印x值,输入并打印x值,4.1.2 数据的输入与输出,输入对话框-InputBox函数,若要在多行显示提示用 的文字信息,怎么办,?,Dim x Private Sub Command1_Click() Dim c1 As String, c2 As String, c3 As StringMsgBox “X必须为一个正整数并且不超过三位!“s$ = Chr$(13) + Chr$(10)c1$ = “请输入具体数值“c2$ = “输入后按回车“c3$ = “或单击“确定”按钮“x = InputBox(c1$ + s$ + c2$ + s$ + c3$) End SubPrivat
11、e Sub Command2_Click() Dim a%, b%, c%a = x 100 求百位数b = x 10 Mod 10 求十位数c = x Mod 10 求个位数Label1.Caption = “输入的数是:“Label2.Caption = xLabel3.Caption = “该数每位数字之和为:“Label4.Caption = a + b + c End SubPrivate Sub Command3_Click() End End Sub,还可以通过什么方法 实现多行显示?,4.1.2 数据的输入与输出,消息对话框-MsgBox函数与MsgBox过程 MsgBox函数
12、可以打开一个消息对话框,用于向用户发布消息,并可以通过用户在该对话框上的选择接收用户所做的响应,作为程序继续执行的依据。,4.1.2 数据的输入与输出,消息对话框-MsgBox函数与MsgBox过程 MsgBox有两种使用格式 函数格式:过程格式:,MsgBox , = MsgBox(,),图4-5 MsgBox函数或过程打开的消息对话框,4.1.2 数据的输入与输出,消息对话框-MsgBox函数与MsgBox过程 MsgBox过程与MsgBox函数的功能相同,但MsgBox过程没有返回值,调用时不能有括号,作为一个独立的语句,通常用于显示某些信息,而不作程序流程的选择控制。,Dim x Pr
13、ivate Sub Command1_Click() Dim c1 As String, c2 As String, c3 As StringMsgBox “X必须为一个正整数并且不超过三位!“s$ = Chr$(13) + Chr$(10)c1$ = “请输入具体数值“c2$ = “输入后按回车“c3$ = “或单击“确定”按钮“x = InputBox(c1$ + s$ + c2$ + s$ + c3$) End SubPrivate Sub Command2_Click() Dim a%, b%, c%a = x 100 求百位数b = x 10 Mod 10 求十位数c = x Mod
14、 10 求个位数Label1.Caption = “输入的数是:“Label2.Caption = xLabel3.Caption = “该数每位数字之和为:“Label4.Caption = a + b + c End SubPrivate Sub Command3_Click() End End Sub,:用于存放MsgBox函数的返回值。 Prompt:不可缺省项,显示在消息对话框中的提示信息字符串。Button:用于决定消息对话框中按钮的数目和类型以及出现在消息框中的图标类型 。 Title:消息对话框标题。 Helpfile, Context:有本选项时,在消息对话框中自动增加一个帮
15、助按钮。, = MsgBox(,),MsgBox函数格式,下一节,输入口令的例子,按钮的类型,图标的类型,活动按钮的位置,强制返回模式,注意点,每种数值都有相应的系统内部常量,其作用与数值相同,两者都可以使用。用内部常量直观,可读性高;用数值则输入简单方便,且Button可用参量表达式的值表示。 A = MsgBox(“输入数据错误!“, 2 + vbExclamation, “简例2“) 或者:A = MsgBox(“输入数据错误!“, vbAbortRetryIgnore + vbExclamation, “简例2“) 即:2 + vbExclamation、vbAbortRetryIgn
16、ore + 48、vbAbortRetryIgnore + vbExclamation、50等与2 + 48效果相同。,返回,MsgBox函数的返回值,返回,4.1.2 数据的输入与输出,Print 方法,实例 4-1,已知圆的半径,求圆的周长和面积。 其中输入/输出操作可以通过文本框、标签以及InputBox函数与MsgBox过程来进行,也可以使用Print方法。,实例 4-1,图4-6 实例4-1(1)程序运行界面,图4-7 实例4-1(2)程序运行界面,图4-8 实例4-1(3)程序运行界面,作业,圆的周长和面积的三种实现方法,实例解析-复习,题目:从键盘上输入一个正整数X(不超过3位)
17、,单击“计算”命令按钮,计算该数每位数字之和。输出界面如下图:,复习,Dim x Private Sub Command1_Click() Dim c1 As String, c2 As String, c3 As StringMsgBox “X必须为一个正整数并且不超过三位!“s$ = Chr$(13) + Chr$(10)c1$ = “请输入具体数值“c2$ = “输入后按回车“c3$ = “或单击“确定”按钮“x = InputBox(c1$ + s$ + c2$ + s$ + c3$) End SubPrivate Sub Command2_Click() Dim a%, b%, c%
18、a = x 100 求百位数b = x 10 Mod 10 求十位数c = x Mod 10 求个位数Label1.Caption = “输入的数是:“Label2.Caption = xLabel3.Caption = “该数每位数字之和为:“Label4.Caption = a + b + c End SubPrivate Sub Command3_Click() End End Sub,赋值语句,赋值语句,赋值语句,输入对话框-InputBox函数,消息对话框-MsgBox 过程,赋值语句,思考题,编程计算二次函数y=6x2+5x+12,x由键盘输入,其值在(0,10)之间,输入输出界面
19、如下图:,思考题,编写程序随机产生3个两位正整数,统计并输出平均值。要求3个随机数在文本框中显示,单击“计算”按钮,显示计算结果,单击“下一题”按钮产生下一组随机数,单击“退出”按钮,结束程序的运行。,第四章 Visual Basic控制结构,第二次课,新课,Dim x Private Sub Command1_Click() Dim c1 As String, c2 As String, c3 As String s$ = Chr$(13) + Chr$(10) c1$ = “请输入一个数(不超过3位)“ c2$ = “输入后按回车“ c3$ = “或单击“确定”按钮“ x = InputB
20、ox(c1$ + s$ + c2$ + s$ + c3$) If Not IsNumeric(x) Or x 999 Then MsgBox “X为非数字字符“ + s$ + “或X超过3位了,错误!“ End if End Sub Private Sub Command2_Click() Dim a%, b%, c% a = x 100 求百位数 b = x 10 Mod 10 求十位数 c = x Mod 10 求个位数 Label1.Caption = “输入的数是:“ Label2.Caption = x Label3.Caption = “该数每位数字之和为:“ Label4.Cap
21、tion = a + b + c End Sub Private Sub Command3_Click() End End Sub,4.2 选择结构与选择结构语句,If-Then-Else-End If 结构语句 Select-Case-End Select 结构语句,先对条件测试,根据测试的结果选择执行不同的分支,4.2 选择结构与选择结构语句,在VB程序设计中,实现分支的方法: 单分支结构 双分支结构 多分支结构,If-Then-Else-End If 结构语句,4.2 选择结构与选择结构语句,单分支结构,If-Then-Else-End If 结构语句,单分支结构语句的一般形式:,单分支
22、结构语句的简化形式:,If ThenA组语句End If,If Then ,Private Sub Form_Click()End Sub,程序如下:,If的单分支结构(简化形式),Private Sub Form_Click() Dim x As Integer x = InputBox(“请输入x的值: “)End Sub,Private Sub Form_Click() Dim x As Integer x = InputBox(“请输入x的值: “) If x =0 Then Print “这是大于等于0的数“ End Sub,案例1a 键盘输入一个数,判断其是小于0,还是大于等于0。
23、,程序如下:,If的单分支结构(一般形式),Private Sub Form_Click() Dim x As Integer x = InputBox(“请输入x的值: “) If x =0 Then Print “这是大于等于0的数“ End if End Sub,案例1b 键盘输入一个数,判断其是小于0,还是大于等于0。,程序如下:,案例2a 判断一个数是小于1,大于等于1小于等于10,还是大于10。,Private Sub Form_Click() Dim x As Integer x = InputBox(“请输入x的值: “) If x =1 and x 10 Then Print
24、 “这是大于10的数“ End Sub,If的单分支结构-实现,注意复合条件的使用!,4.2 选择结构与选择结构语句,双分支结构,If-Then-Else-End If 结构语句,双分支结构语句的一般形式:,双分支结构语句的简化形式:,If ThenA组语句ElseB组语句End If,If Then Else ,程序如下:,案例3 已知三边的长,设计求面积的程序。,If的双分支结构-实现,输入一年份,判断是否是闰年,并显示有关信息,输出界面如下:,动手写一写,Private Sub Form_Click() Dim x As Integer x = InputBox(“请输入x的值: “)
25、If x 1 Then Print “这是小于1的数“ ElseIf x = 10 ThenPrint “这是1到10之间的数“ElsePrint “这是大于10的数“End If End If End Sub,If的双分支结构-实现,If语句的嵌套,程序如下:,案例2b 判断一个数是小于1,大于等于1小于等于10,还是大于10。,4.2 选择结构与选择结构语句,If 语句的嵌套,If-Then-Else-End If 结构语句,If ThenIf thenElseEnd If Else End If,If Then ElseIf ThenElseEnd If End If,4.2 选择结构与
26、选择结构语句,多分支结构,If-Then-Else-End If 结构语句,If ThenA1语句块 ElseIf ThenA2语句块 ElseAn+1语句块 End If,Private Sub Form_Click() Dim x As Integer x = InputBox(“请输入x的值: “) If x 1 Then Print “这是小于1的数“ ElseIf x = 10 ThenPrint “这是1到10之间的数“ ElsePrint “这是大于10的数“ End If End Sub,If的多分支结构-实现,程序如下:,案例2c 判断一个数是小于1,大于等于1小于等于10,
27、还是大于10。,Option Explicit Private Sub Form_Click() Dim Score As Single Score = Val(InputBox(“请输入学生的考试成绩:“, “评定等级“) If Score 100 Then Print “输入成绩错误!“ ElseIf Score = 90 ThenPrint “优秀“ ElseIf Score = 80 Then Score = 80 And Score = 70 ThenPrint “中等“ ElseIf Score = 60 ThenPrint “及格“ ElseIf Score = 0 ThenPr
28、int “不及格“ ElsePrint “输入成绩错误!“ End If End Sub,If的多分支结构-实现,程序如下:,案例4 输入一组学生考试成绩,评定其等级。,动手写一写,输出如下:,案例欣赏 模拟简单计算器,解读:简单模拟计算器,对输入的两个数进行加、减、乘、除运算。在“输入运算式”文本框中输入运算式,当焦点移到“结果”文本框时,在“结果”文本框中显示运算式的计算结果;单击“清除”按钮,清空两个文本框的内容,并将焦点设置到“输入运算式”文本框中;单击“结束”按钮,结束程序运行。,Private Sub Command1_Click() Text1 = “ Text2 = “ Tex
29、t1.SetFocus End SubPrivate Sub Command2_Click() End End Sub,程序如下:,案例欣赏 模拟简单计算器,Private Sub Text1_LostFocus() Dim x As String, p As String Dim a!, b!, y!, n% x =trim(Text1.text) a = Val(x) n = Len(cstr(a) p = Mid(x, n + 1, 1) b = Val(Mid(x, n + 2) If p = “+“ Theny = a + b ElseIf p = “-“ Theny = a - b
30、 ElseIf p = “*“ Theny = a * b ElseIf p = “/“ Theny = a / b Else End If Text2 = y End Sub,程序如下:,案例欣赏 模拟简单计算器,4.2 选择结构与选择结构语句,多分支结构语句的一般形式:,Select-Case-End Select 结构语句,Select Case 测试表达式Case 测试项1A组语句Case 测试项2B组语句Case Elsen组语句 End Select,案例5:输入二级考试成绩,要求显 示对应三级制的评定。 Mark=Val(Text1.Text) Select case Markc
31、ase is=90Print “优“case 90 to 60Print “通过“Case ElsePrint “未通过“ End select,案例2d 一个多分支的示例程序。(测试数据),Private Sub Command1_Click() Dim x As Integerx = Val(Text1.Text)Select Case xCase Is 1Text2.Text = “这是小于1的数“Case 1 To 10Text2.Text = “这是1到10之间的数“Case ElseText2.Text = “这是大于10的数“End Select End Sub,程序清单:,案例
32、7 一个多分支的示例程序。(显示当天的日期),Private Sub Command1_Click() Dim s As Long, w As Long, w1 As Long Dim Y As Integer, m As Integer, d As Integer Dim w2 As String Dim Rq As Date Rq = Date Y = Year(Rq) m = Month(Rq) d = Day(Rq) w1 = Weekday(Rq) Select Case w1 Case 1 w2 = “日“ Case 2 w2 = “一“,程序清单:,Case 3 w2 = “二“
33、 Case 4 w2 = “三“ Case 5 w2 = “四“ Case 6 w2 = “五“ Case 7 w2 = “六“ End Select LblDate.Caption = “今天是“ & Y & “ 年“ & m & “ 月“ & d & “日,星期“ & w2 End Sub,总结:,对于多分支结构,用select case语句比用If-Then-ElseIf语句更为直观,程序可读性强; 但不是所有的多分支结构均可用select case语句代替If-Then-ElseIf语句,当对于多个变量进行条件判断时,只能使用If-Then-ElseIf语句。,思考,输入若干字符,统计
34、有多少元音字母,有多少其他字母,直到按回车键结束,并显示结果,大小写不区分。输出界面如下:,思考,输入一元二次方程ax2+bx+c=0的系数a,b,c,计算并输出一元二次方程的两个根x1,x2,输出界面如下图。要求,对输入数据进行合法性检验;求根时要对a、b、c三个系数分别考虑多种情况的处理,即:重根、复根等;利用Format函数输出结果(保留两位小数)。,第四章 Visual Basic控制结构,-循环语句,循环:是在指定的条件下多次重复执行一组语句,4.3 循环结构与循环结构语句,For-Next 循环结构语句 Do-Loop 循环结构语句 循环嵌套,For-Next循环结构语句,For
35、循环变量=初值 TO 终值 Step 步长语句块Exit For语句块 Next 循环变量,For循环格式:,4.3 循环结构与循环结构语句,Private Sub Command1_Click() Dim i As Integer, s As Long s = 0 For i = 1 To 100 step 1 s = s + i Next i Print s End Sub,案例4-8 a 计算1+2+3+4+ +100之和。,程序清单,For-Next循环结构语句,通用过程 (通用 Sub 过程),程序示例:,程序如下:,Private Sub Form_Click() Dim n As
36、 Integer, Sum As Integer For n = 1 to 100 Sum = Sum + n Next n Print “Sum = “ ; Sum End Sub,Step 1,Step -1,步长可以为负数吗!,Private Sub Form_Click() Dim n As Integer, Sum As Integer For n = 100 to 1 Sum = Sum + n Next n Print “Sum = “ ; Sum End Sub,说明: 执行For语句时,系统将做如下操作: 计算循环变量的初值、终值和步长的值; 给循环变量赋初值; 进行判别。,
37、通用过程 (通用 Sub 过程),程序示例:,程序如下:,( 求 1+2+3+10 的和 . ),Private Sub Form_Click() Dim n As Integer, Sum As Integer For n = 1 to 10 Sum = Sum + n Next n Print “Sum = “ ; Sum End Sub,读程序,写结果?,?思考,Print “ n = “ ; n,结果:n = 11,Step 2,Step 3,结果:n = 13,通用过程 (通用 Sub 过程),程序示例:,程序如下:,Private Sub Form_Click() Dim n As
38、 Single, Sum As Single For n = 1 to 10 Sum = Sum + n Next n Print “n = “ ; n End Sub,读程序,写结果?,?思考,结果:n = 11.5,Step 1.5,通用过程 (通用 Sub 过程),程序示例:,程序如下:,Private Sub Form_Click() Dim n As Single, Sum As Single For n = 1 to 10 Print n Next n End Sub,读程序,写结果?,?思考,结果:12345678910,Step 1,Step 1.5,结果:12.545.578
39、.510,比较:书本105页第15题,Private Sub Command1_Click()Dim i As Integer, t As Longt = 1For i = 1 To 10 step 1t = t * iNext iPrint t End Sub,案例4-9 求10!(即计算1234 10之积。),动手写一写,For-Next循环结构语句,比较:书本90页实例4-7,输入一个正整数,判断该数是否是素数。,动手抄一抄,For-Next循环结构语句,方法一: 方法二:,S1 =0 S2 =0 For I = 1 To 1000If I mod 20 thenS1 = S1 + IE
40、lse S2 = S2 + IEnd If Next I Print S1,S2,案例4-10计算11000的奇数和与偶数和。,For-Next循环结构语句,案例4-11 输入一个正整数,求各位数字之和。,输入正整数k求它的位数用For循环 1,位数和步长取k的末位数,求和使k去掉末位数重复以上两步,直到结束在text2中显示结果,Private Sub Command1_Click()Dim x As String, s As IntegerDim i As Integerx = Text1.TextFor i = 1 To Len(x)s = s + Mid(x, i, 1)Next iT
41、ext2.Text = CStr(s) End Sub,程 序 清 单,For-Next循环结构语句,范例4-12 求出给定的自然数a的所有因子。,Private Sub Command1_Click()Dim i As Integer, x As Integerx = Val(InputBox(“请输入自然数a的值:”, “案例4-12“)For i = 1 To xIf x Mod i = 0 Then Print i;Next iPrint End Sub,程 序 清 单,循环结构与循环结构语句,案例4-13 字符串中查找大写字母并逆序输出。,Private Sub Command1_C
42、lick()Dim s As String, d As String, t As StringDim i As IntegerText1.SetFocuss = Text1.TextFor i = 1 To Len(s)If Mid(s, i, 1) = “A“ And Mid(s, i, 1) = “Z“ Thent = t & Mid(s, i, 1)End IfNext iFor i = Len(t) To 1 Step -1d = d & Mid(t, i, 1)Next iText2.Text = d End Sub,程 序 清 单,循环结构与循环结构语句,循环的嵌套:在一个循环体内
43、又包含了一个完整的循环结构,For I = 1 To 9For J = 1 To Is = I Next JPicture1.PrintNext I,注意:内、外循环变量不能同名外循环必须完全包含内循环,不能出现交叉,循环嵌套,Private Sub Form_Click()For i = 1 To 5t = 1For j = 1 To it = t * jNext js = s + tNext iPrint s End Sub,案例4-19 计算!,程序清单,循环嵌套,Private Sub Form_Click()For i = 1 To 9For j = 1 To iPrint i; “
44、*“; j; “=“; i * j;Next jPrintNext i End Sub,案例4-20 设计在窗体界面上显示九九乘法表的程序。,程 序 清 单,循环嵌套,Private Sub Command1_Click()Dim x As Integer, y As IntegerDim z As Integer, s As IntegerFor x = 0 To 9For y = 0 To 9For z = 1 To 9If x 3 + y 3 + z 3 = z * 100 + y * 10 + x ThenPrint z * 100 + y * 10 + xEnd IfNext zNe
45、xt yNext x End Sub,案例4-21 求水仙花数。水仙花数是指一个3位数,其各个数字的立方和等于数字本身。,分析: 用三种循环 个位x的可能取值为0-9 十位y的可能取值为0-9 百位z的可能取值为1-9, 看三个位置上的数是否满足如下条件, 若满足,即是其中一个解 X3+y3+z3=z100y10x,程 序 清 单,循环嵌套,案例 搬砖问题:72块砖,共72人搬,每次男的搬4块,女的搬3块,2个小孩抬1块,要求一次全部搬完,问男、女、小孩各多少人?,循环嵌套思考,案例 猴子吃桃子:小猴摘了一些桃子,当天吃了一半多一个,第二天吃了剩下的一半多一个,以后每天如此。第七天小猴一看,就
46、剩下一个桃子了。问小猴总共摘了多少个桃子?,Do-Loop循环结构语句 用 Do-Loop 语句实现循环,用 If语句控制循环,4.3 循环结构与循环结构语句,用 Do While -Loop 语句实现循环;,用 Do-Loop While 语句实现循环;,Do-Loop语句有四种形式,当型Do-Loop语句有两种形式 :,Do While e Exit Do Loop,Do Exit Do Loop While e,Do-Loop循环结构语句,4.3 循环结构与循环结构语句,两种格式的当型Do-Loop对应的流程图如下图所示 :,Do-Loop循环结构语句,4.3 循环结构与循环结构语句,直
47、到型Do-Loop语句有两种形式 :,Do-Loop循环结构语句,4.3 循环结构与循环结构语句,直到型Do-Loop语句的格式有两种,其对应的流程图如下图所示,Do-Loop循环结构语句,4.3 循环结构与循环结构语句,程序示例:,Private Sub Form_Click() Dim n As Integer, Sum As Integer Do n = n + 1 Sum = Sum + n If n = 100 Then Exit Do Loop Print “Sum = “ ; Sum End Sub,DoLoop,n = n + 1 Sum = Sum + n,Dim n As
48、Integer, Sum As Integer,Print “Sum = “ ; Sum,If n =100 Then Exit Do,程序如下:,说明: 用 Do-Loop 语句实现循环; 用 If语句控制循环;n=100 是循环“终止条件”;Exit Do是退出循环语句。,?思考一,循环“终止条件”只有一个吗? 循环体中语句行之间的顺序可以调整吗?,无限循环!,程序示例:,Private Sub Form_Click() Dim n As Integer, Sum As Integer Do n = n + 1 Sum = Sum + n If n = 100 Then Exit Do Loop Print “Sum = “ ; Sum End Sub,