1、Visual Basic程序设计 第四章 程序控制结构第第4章章 程序控制结构程序控制结构程序示例程序示例循环结构程序设计循环结构程序设计选择结构程序设计选择结构程序设计顺序结构程序设计顺序结构程序设计程序设计与算法程序设计与算法 Visual Basic程序程序设计设计4.1.1 程序的基本组成程序的基本组成 程序的基本组成包括:输入、处理和输出三个程序的基本组成包括:输入、处理和输出三个部分。部分。例如,需要用计算机编程求解一个三角形的面例如,需要用计算机编程求解一个三角形的面积。根据题目的要求可以确定:积。根据题目的要求可以确定:(1)程序的)程序的“输出输出”是三角形的面积值。是三角形
2、的面积值。(2)“处理处理”是求解三角形的面积。是求解三角形的面积。(3)如果用三条边长求三角形面积,则需要输)如果用三条边长求三角形面积,则需要输入三角形的三条边长,如果用相邻的两条边及其夹入三角形的三条边长,如果用相邻的两条边及其夹角求三角形面积,就需要输入两条边长及其对应的角求三角形面积,就需要输入两条边长及其对应的夹角。夹角。Visual Basic程序程序设计设计4.1 程序设计与算法程序设计与算法 由于计算机只能执行算术运算和逻辑运算,所由于计算机只能执行算术运算和逻辑运算,所以其解决问题的方法、步骤和人们生活中解决问题以其解决问题的方法、步骤和人们生活中解决问题的方法、步骤不同,
3、必须考虑其特殊性。的方法、步骤不同,必须考虑其特殊性。Visual Basic程序程序设计设计4.1.2 算法算法 1.算法的定义算法的定义 从广义上讲,算法是解决某个问题或处理某从广义上讲,算法是解决某个问题或处理某个事件的方法和步骤。个事件的方法和步骤。从狭义上讲,算法指用计算机解决某一问题从狭义上讲,算法指用计算机解决某一问题的方法和步骤。的方法和步骤。算法可以分为两大类:一类是数值计算方法,算法可以分为两大类:一类是数值计算方法,主要是解决一般数学解析方法难以处理的一些数主要是解决一般数学解析方法难以处理的一些数学问题,如求解超越方程的根等;另一类是非数学问题,如求解超越方程的根等;另
4、一类是非数值计算方法,如排序、查找和求最大值最小值等。值计算方法,如排序、查找和求最大值最小值等。Visual Basic程序程序设计设计4.1.2 算法算法2.算法的特征算法的特征 算法具备以下五个特征:算法具备以下五个特征:(1)确定性)确定性(2)可行性)可行性(3)有穷性)有穷性(4)输入性)输入性(5)输出性)输出性 Visual Basic程序程序设计设计4.1.2 算法算法3.算法的描述算法的描述 算法本身可以采用不同的方法来描述。可以用算法本身可以采用不同的方法来描述。可以用自然语言(英语、汉语等)来描述;可以用伪代码自然语言(英语、汉语等)来描述;可以用伪代码来描述;可以用特
5、定的图形来描述。来描述;可以用特定的图形来描述。Visual Basic程序程序设计设计4.1.2 算法算法4.算法和程序的区别算法和程序的区别 算法和程序的区别主要有三点:算法和程序的区别主要有三点:(1)一个程序不一定满足有穷性。)一个程序不一定满足有穷性。(2)程序中的指令必须是机器可执行的,而)程序中的指令必须是机器可执行的,而算法中的指令则无此限制。算法中的指令则无此限制。(3)算法代表了对问题的解,而程序则是算)算法代表了对问题的解,而程序则是算法在计算机上的特定的实现。法在计算机上的特定的实现。Visual Basic程序程序设计设计4.1.3 算法的基本结构算法的基本结构 算法
6、有三种基本结构:算法有三种基本结构:v 顺序结构顺序结构v 分支结构分支结构v 循环结构。循环结构。Visual Basic程序程序设计设计4.2 顺序结构顺序结构 顺序结构的概念和执行流程顺序结构的概念和执行流程 顺序结构是指按照语句书写的先后顺序依次执顺序结构是指按照语句书写的先后顺序依次执行每条语句。顺序结构主要是由变量定义语句、赋行每条语句。顺序结构主要是由变量定义语句、赋值语句、输入输出语句和一些命令语句等构成。值语句、输入输出语句和一些命令语句等构成。Visual Basic程序程序设计设计4.2 顺序结构顺序结构如以下顺序结构程序段:如以下顺序结构程序段:Private Sub
7、Command1_Click()Dim x As Integer,y As Integer,z As Integer 变量定义变量定义 x=Val(Text1.Text)数据的输入数据的输入 y=Val(Text2.Text)数据的输入数据的输入 z=x+y 数据的数据的处理处理 Text3.Text=z 数据的输出数据的输出End Sub Visual Basic程序程序设计设计4.2 顺序结构顺序结构 该程序段自上而下依次执行各条语句。整个程该程序段自上而下依次执行各条语句。整个程序只有一个入口和一个出口。序只有一个入口和一个出口。程序中主要包含四部分内容:程序中主要包含四部分内容:(1)
8、变量的定义;)变量的定义;(2)数据的输入;)数据的输入;(3)数据的处理;)数据的处理;(4)数据的输出。)数据的输出。Visual Basic程序程序设计设计 1.输入函数输入函数InputBox InputBox函数用来接收通过键盘输入的数据。函数用来接收通过键盘输入的数据。InputBox函数的语法格式如下:函数的语法格式如下:v=InputBox(Propmt,Title,Default,x,y,Helpfile,Context)v:用于接收在:用于接收在InputBox函数中输入的数据。函数中输入的数据。Propmt:对话框中显示的提示信息。:对话框中显示的提示信息。Title:对
9、话框的标题。:对话框的标题。Default:显示在用户编辑框中的缺省值。:显示在用户编辑框中的缺省值。x,y:用于确定对话框在屏幕上显示时的位置。:用于确定对话框在屏幕上显示时的位置。Helpfile,Context:是帮助文件名和帮助主题号。:是帮助文件名和帮助主题号。Visual Basic程序程序设计设计1.输入函数输入函数InputBox 例例如如x=InputBox(“请输入一个数请输入一个数字!字!”,“程序示例程序示例”,10),显示如图所示的对话),显示如图所示的对话框。框。Visual Basic程序程序设计设计2.消息框函数消息框函数MsgBox MsgBox函数用于向用户
10、发布提示信息,并要求用户函数用于向用户发布提示信息,并要求用户做出响应。做出响应。MsgBox函数语法格式如下:函数语法格式如下:v=MsgBox(Propmt,Button,Title,Helpfile,Context)Propmt:对话框中显示的提示信息。:对话框中显示的提示信息。Button:定义信息框按钮的个数、类型和信息框中的:定义信息框按钮的个数、类型和信息框中的图标。图标。Title:信息框的标题。:信息框的标题。Helpfile,Context:Helpfile是帮助文件名,是帮助文件名,Context是帮助主题号。是帮助主题号。V:用于接收:用于接收MsgBox函数返回的一个
11、值。函数返回的一个值。Visual Basic程序程序设计设计2.消息框函数消息框函数MsgBox 例如:例如:x=MsgBox(非法数据!非法数据!,1+48+0,提示信息!提示信息!)Visual Basic程序程序设计设计4.3选择选择结构程序设计结构程序设计本节要点本节要点 选择结构先对条件进行测试,根据测试的结选择结构先对条件进行测试,根据测试的结果选择执行对应的分支语句。果选择执行对应的分支语句。1.If 1.If条件语句条件语句 2.IIf 2.IIf函数函数3.Select Case3.Select Case结构结构 4.4.选择结构应用示例选择结构应用示例 Visual Ba
12、sic程序程序设计设计4.3.1 If条件语句条件语句1.1.说明:说明:v条件可以是:条件可以是:关系表达式、逻辑表达式或算数表达式关系表达式、逻辑表达式或算数表达式。v格式格式(1)(1)中中“语句组语句组”可以是可以是一条或几条语句一条或几条语句。v格式格式(3)(3)不换行书写,不换行书写,仅一行,没有仅一行,没有End IfEnd If。vIfIf和和End IfEnd If必须成对使用必须成对使用,除非是格式,除非是格式(2)(2)。格式格式(2):(2):IfIf 条件条件 ThenThen 语句语句格式格式(1)(1):IfIf 条件条件 ThenThen 语句组语句组End
13、IfEnd If Visual Basic程序程序设计设计4.3.1 If条件语句条件语句 执行规则:执行规则:条件为条件为真真则执行则执行“语句语句”或或“语句组语句组”,否则,否则,不执行不执行“语句语句”或或“语句组语句组”,直接执行,直接执行IfIf后面的语句。后面的语句。例例4.1根据百分制成绩提示考试是否通过。根据百分制成绩提示考试是否通过。条件条件语组语组TFIfIf score=60 score=60 ThenThen Print Print 祝贺你考试通过!祝贺你考试通过!End IfEnd IfPrint Print 继续努力!继续努力!score=60score=60If
14、If score=60 score=60 ThenThen Print Print 祝贺你考试通过!祝贺你考试通过!Print Print 继续努力!继续努力!Visual Basic程序程序设计设计4.3.1 If条件语句条件语句格式格式:IfIf 条件条件 ThenThen 语句组语句组1 1 ElseElse 语句组语句组2 2 End IfEnd If条件条件语句组语句组1TF语句组语句组2 2执行规则执行规则:条件为条件为真真执行执行语句组语句组1 1,IfIf语句执行结束,否语句执行结束,否则,执行则,执行语句组语句组2 2,IfIf语句执行结束。语句执行结束。Visual Bas
15、ic程序程序设计设计4.3.1 If条件语句条件语句例例4.2 求求x和和y的最大值的最大值 IfIf x yx y ThenThen Print Print 最大值是:最大值是:,x,x Else Else Print Print 最大值是:最大值是:,y,y End IfEnd If 单分支和双分支单分支和双分支IfIf语句用于解决两种情况的问题语句用于解决两种情况的问题。Visual Basic程序程序设计设计4.3.1 If条件语句条件语句例例4.3 计算分段函数:计算分段函数:程序代码:程序代码:If x=0 Then y=(-x+Sqr(x3-3*x+7)/2Else y=Log(
16、x)+1End If0 0 x x 1 1Ln(x)Ln(x)0 0 x x 2 27 73x3xx xx x3 3y Visual Basic程序程序设计设计4.3.1 If条件语句条件语句例例4.4 4.4 计算分段函数。计算分段函数。程序代码:程序代码:I If x=0 ThenThenElseElse y=Log(x)+1EndIfEndIf 双分支双分支IfIf的的ThenThen中又包含一个中又包含一个IfIf语句。语句。0 0 x x 1 1Ln(x)Ln(x)0 0 x x 0 00 0 x x 2 27 73x3x3 3x xx xyIf x0 Then y=(-x+Sqr(
17、x3-3*x+7)/2Else y=0 EndIf Visual Basic程序程序设计设计4.3.1 If条件语句条件语句 在在IfIf语句的语句的ThenThen或或ElseElse中又包含中又包含IfIf语句,称为语句,称为IfIf结构嵌套。结构嵌套。注意:注意:注意注意IfIf嵌套结构的程序书写规范,最好采用层层缩进的方式。嵌套结构的程序书写规范,最好采用层层缩进的方式。除非采用除非采用IfIf结构的缩写格式,否则,有几个结构的缩写格式,否则,有几个IfIf语句,就有几语句,就有几个个End IfEnd If语句与之配对。语句与之配对。嵌套的结构嵌套的结构比较复杂!比较复杂!Visua
18、l Basic程序程序设计设计4.3.1 If条件语句条件语句格式:格式:If If 条件条件1 1 ThenThen 语句组语句组1 1 ElseIf ElseIf 条件条件2 2 ThenThen 语句组语句组2 2 ElseIf ElseIf 条件条件n n ThenThen 语句组语句组n n ElseElse 语句组语句组n+1n+1 End IfEnd If执行规则执行规则:首先判断:首先判断条件条件1 1,条件,条件1 1成立,执行成立,执行语句组语句组1 1,IfIf语句执语句执行结束,否则再判断条件行结束,否则再判断条件22依依此类推。此类推。n n个条件都不成立,则执个条件
19、都不成立,则执行语句组行语句组n+1n+1,n+1n+1个语句组仅执个语句组仅执行一个。行一个。注意注意:(1)(1)在书写时要注意在书写时要注意ElseIfElseIf之之间不能有空格;间不能有空格;(2)(2)条件的书写是有条件的书写是有顺序的,如有多个分支同时满足条件顺序的,如有多个分支同时满足条件,只执行第一个与之匹配的语句组。,只执行第一个与之匹配的语句组。Visual Basic程序程序设计设计4.3.1 If条件语句条件语句 多分支多分支IfIf语句用于解决三种及以上情况的问题。语句用于解决三种及以上情况的问题。把把例例4.44.4用多分支用多分支IfIf语句处理。语句处理。程序
20、代码:程序代码:If If x0 x0 ThenThen y=(-x+Sqr(x3-3y=(-x+Sqr(x3-3*x+7)/2x+7)/2ElseIf ElseIf x=0 x=0 ThenThen y=0y=0ElseElse y=Logy=Log(x x)+1+1End IfEnd If Visual Basic程序程序设计设计4.3.1 If条件语句条件语句例例4.5 4.5 编写一个按月收入额计算个人收入调节税的程序。编写一个按月收入额计算个人收入调节税的程序。计算方法如下计算方法如下:40004000PayPay 4504500.350.35*4000)4000)-(Pay(Pay
21、 40004000PayPay30003000 2002000.250.25*3000)3000)-(Pay(Pay30003000PayPay20002000 50500.150.15*2000)2000)-(Pay(Pay20002000PayPay10001000 0.050.05*1000)1000)-(Pay(Pay10001000PayPay 0 0y y Visual Basic程序程序设计设计4.3.2 条件函数条件函数IIf函数函数格式:变量格式:变量=If If x y Then max=xElse max=yEnd If IIfmax=IIf(x y,x,y)Visual
22、 Basic程序程序设计设计4.3.3 Select Case 语句语句Select CaseSelect Case 测试表达式测试表达式 CaseCase 测试项测试项1 1 语句组语句组1 1 CaseCase 测试项测试项2 2 语句组语句组2 2 CaseCase 测试项测试项n n 语句组语句组n n Case ElseCase Else 语句组语句组n+1n+1End SelectEnd Select(1)(1)测试表达式的值应是数字测试表达式的值应是数字或字符型。或字符型。(2)(2)测试项的取值测试项的取值必须必须与测试表达式与测试表达式的值的值类型相同,类型相同,常用形式为:
23、常用形式为:具体取值,用逗号隔开具体取值,用逗号隔开如:如:1 1,5 5,9 9连续的范围:界连续的范围:界1 TO 1 TO 界界2 2如:如:12 To 2012 To 20 满足某个条件:满足某个条件:IsIs运算符运算符 如:如:Is10Is10三种形式可组合使用三种形式可组合使用,用逗号隔开。用逗号隔开。Select CaseSelect Case语句执行过程语句执行过程 先计算测试表达式的结果,按先计算测试表达式的结果,按顺序判断结果与顺序判断结果与CaseCase语句后的测试语句后的测试项是否匹配,如果匹配,则执行相项是否匹配,如果匹配,则执行相应的语句组,否则继续判断,如果应
24、的语句组,否则继续判断,如果表达式结果与所有的测试项都不匹表达式结果与所有的测试项都不匹配,则执行配,则执行Case ElseCase Else后的语句组后的语句组(如果有的话)。(如果有的话)。Visual Basic程序程序设计设计4.3.3 Select Case 语句语句v 例例4.7 4.7 百分制成绩转换成三级制成绩。成绩大于等于百分制成绩转换成三级制成绩。成绩大于等于9090的为优的为优秀,小于秀,小于9090大于等于大于等于6060为及格,否则为不及格。为及格,否则为不及格。Select CaseSelect Case方法:方法:Mark=Val(Text1.Text)Mark
25、=Val(Text1.Text)Select Case MarkSelect Case Mark Case is=90 Case is=90 Print Print 优优 Case 60 to 90 Case 60 to 90 Print Print 通过通过 Case Else Case Else Print Print 未通过未通过 End SelectEnd Select多分支多分支IfIf方法:方法:Mark=Val(Text1.Text)Mark=Val(Text1.Text)If mark=90 thenIf mark=90 then Print Print 优优 ElseIf m
26、ark=60 thenElseIf mark=60 then Print Print 通过通过 ElseElse Print Print 未通过未通过 End IfEnd If Select Case Select Case 语句和多分支语句和多分支IfIf语句都是处理多分支问题。语句都是处理多分支问题。Visual Basic程序程序设计设计4.3.4 选择结构应用示例选择结构应用示例 从从“种类种类”中选择油品种类,界面上的说明文字将随之中选择油品种类,界面上的说明文字将随之改变,并将改变,并将“数量数量”文本框设为焦点;在数量文本框中文本框设为焦点;在数量文本框中输入需购的油品数量后,单
27、击输入需购的油品数量后,单击“计算计算”按钮,在按钮,在“总价总价”文本框显示所购油品种类应付的金额。已知汽油单价:文本框显示所购油品种类应付的金额。已知汽油单价:9090号号 7.21 7.21元元/升升9393号号 7.41 7.41元元/升升9797号号 7.80 7.80元元/升升 Visual Basic程序程序设计设计4.3 分支结构总结分支结构总结v单分支单分支IfIf语句语句v双分支双分支IfIf语句语句vIfIf语句的嵌套语句的嵌套v多分支多分支IfIf语句语句vIIFIIF函数函数vSelect Case Select Case 语句语句 Visual Basic程序程序设
28、计设计4.4 循环结构循环结构v循环循环:是在指定的条件下多次重复执行一组语句。是在指定的条件下多次重复执行一组语句。1.1.ForForNextNext2.Do2.DoLoopLoop 3.3.循环嵌套循环嵌套 Visual Basic程序程序设计设计4.4 循环结构循环结构 说明:说明:初值、终值和步长可以为初值、终值和步长可以为正整数,正整数,也可以为也可以为小数小数。步长可以为步长可以为正值正值,也可以为,也可以为负值负值。Exit For用于退出用于退出For循环。循环。循环的执行次数循环的执行次数=Int(Int(终值终值-初值初值)/)/步长步长)+1)+1 ForFor 循环变
29、量循环变量=初值初值 ToTo 终值终值 Step Step 步长步长 Exit ForExit For Next Next 循环变量循环变量 步长省略,步长省略,默认为默认为1 1循环体循环体可以省略可以省略 Visual Basic程序程序设计设计4.4 循环结构循环结构 执行过程(执行过程(初值小于终值,步长为正值初值小于终值,步长为正值)(1)(1)将初值赋给循环变量(将初值赋给循环变量(仅执行一次仅执行一次)(2)(2)判断循环变量值是否判断循环变量值是否小于等于终值小于等于终值(3)(3)若是则执行循环体若是则执行循环体(4)4)循环变量增加一个步长循环变量增加一个步长(5)(5)
30、重复(重复(2 2)(4 4)步骤)步骤(6)(6)否则,结束循环否则,结束循环循环变量赋初值循环变量赋初值循环变量循环变量=循环变量循环变量+步长步长语句块语句块FExit ForExit For语句块语句块T循环变量循环变量=终值终值FT Visual Basic程序程序设计设计4.4 循环结构循环结构v例例4.9 读程序写结果读程序写结果程序代码:程序代码:s=0 For i=1 To 10 step 1 s=s+i Next i Print i,s可以省略可以省略该算法是该算法是累加求和累加求和:累加求和的做法是定义一个变量:累加求和的做法是定义一个变量(如如s)s),作,作为累加器使
31、用,一般初值为为累加器使用,一般初值为0 0,再定义一个变量(如,再定义一个变量(如i i)用来保存)用来保存加数。加数。第第1 1次次:i=1,1=10,s=0+1=1,i=1,1=10,s=0+1=1,执行执行Next,iNext,i为为2 2第第2 2次次:i=2,2=10,s=1+2=3,i=2,2=10,s=1+2=3,执执行行NextNext,i i为为3 3 第第1010次次:i=10,10=10,s=45+10=55 i=10,10101110为假为假,循环结束。循环结束。Visual Basic程序程序设计设计4.4 循环结构循环结构思考:求奇数和思考:求奇数和1+3+5+9
32、9?两种方法:两种方法:1)求和前用求和前用if语句对语句对i做判断,做判断,如果如果i是奇数对是奇数对i求和求和。2)设置步长为)设置步长为2,则则i的取值全部为奇数。的取值全部为奇数。方法方法1:S=0For i=1 To 99 I If i Mod 2=0 Then s=s+i EndIfNext方法方法2:S=0For i=1 To 100 step 2 s=s+iNext Visual Basic程序程序设计设计4.4 循环结构循环结构例例4.10 4.10 求求1/2+2/3+20/211/2+2/3+20/21 该问题也是求和,是该问题也是求和,是按规律求和按规律求和,累加器第,
33、累加器第i i次加次加a ai i=i/(i+1),=i/(i+1),a ai i称为通项称为通项。程序代码:程序代码:s=0s=0 For i=1 To 20 For i=1 To 20 Next i Next i Print i,s Print i,s说明说明:通项求和一般是:通项求和一般是先计算通项先计算通项,然后把通,然后把通项加到累加器。项加到累加器。计算通项计算通项t=i/(i+1)s=s+t Visual Basic程序程序设计设计4.4 循环结构循环结构例例4.11 4.11 求积:求积:1 1*2 2*3 3*1010分析分析:把求和:把求和s=s+is=s+i改成改成s=s
34、s=s*i i。注意注意:(1)(1)把把s的初值改为的初值改为1;(2)(2)s定义成定义成Long 类型类型,整型可能不够用。,整型可能不够用。程序代码程序代码:Dim i As integer,s As Long s=1 For i=1 To 10 s=s*i Next i Print i,s Visual Basic程序程序设计设计4.4 循环结构循环结构例例4.12 4.12 输入一个正整数,求各个位上数字之和。如输入输入一个正整数,求各个位上数字之和。如输入45324532,输出各个位上的数字之和,输出各个位上的数字之和1414(1)(1)输入正整数输入正整数k k(2)(2)求它
35、是几位数求它是几位数(3)(3)用用ForFor循环:循环:1,1,位数和步长位数和步长(4)(4)取取k k的末位数的末位数(Mod)(Mod),求和,求和(5)(5)使使k k去掉末位数去掉末位数()()(6)(6)重复重复(4)(4)和和(5)(5),直到结束,直到结束 (7)(7)在在Text2Text2中显示结果中显示结果分析:分析:要求各个位数的和,必须把各个位上的数分离出来要求各个位数的和,必须把各个位上的数分离出来。Visual Basic程序程序设计设计4.4 循环结构循环结构 总总 结结:我国现有人口我国现有人口1313亿,按人口年增长率亿,按人口年增长率0.8%0.8%计
36、算,多少年后我国计算,多少年后我国人口超过人口超过2626亿?能否用亿?能否用ForFor循环解决该问题?循环解决该问题?初值、终值、步长必须是初值、终值、步长必须是数值型数值型,步长为,步长为正正,初值初值 终值终值;缺省默认为缺省默认为1 1;在已知循环次数时使用在已知循环次数时使用ForFor循环,循环次数循环,循环次数=Int(Int(终值终值-初值初值)/)/步步长长)+1)+1;组成循环体的语句块可以是组成循环体的语句块可以是一条或多条语句一条或多条语句;Exit ForExit For表示当遇到该语句时表示当遇到该语句时,退出循环体退出循环体,执行执行NextNext后面的语句;
37、后面的语句;在循环体内对循环变量可多次引用,但在循环过程中一般不改变在循环体内对循环变量可多次引用,但在循环过程中一般不改变 其值,否则影响结果;其值,否则影响结果;退出循环后,循环变量保持退出时的值。退出循环后,循环变量保持退出时的值。Visual Basic程序程序设计设计4.4 循环结构循环结构(1 1)Do Do WhileWhile Exit Do Exit Do Loop Loop(2 2)D0 D0 Exit Do Loop Loop WhileWhile (3 3)Do Do UntilUntil Exit Do Loop Loop(4 4)Do Do Exit Do Loop
38、 Loop Until Until Visual Basic程序程序设计设计4.4 循环结构循环结构格式格式 Do WhileDo While 循环体循环体 Exit Do Exit Do 循环体循环体 LoopLoop 先判断,后执行先判断,后执行:先判断循环条件先判断循环条件,若为真若为真,执行循环体执行循环体,然后再判断然后再判断循环条件。否则,跳出循环体循环条件。否则,跳出循环体,执行执行LoopLoop之后的语句。之后的语句。循环条件循环条件语句块语句块TF语句块语句块FExit DoExit DoT注意:注意:1.1.执行执行Exit Do,Exit Do,直接跳出循环体直接跳出循
39、环体,执行执行DoLoopDoLoop后面的语句。后面的语句。2.2.如果循环条件初始为假,则循环体一次都不执行。如果循环条件初始为假,则循环体一次都不执行。Visual Basic程序程序设计设计4.4 循环结构循环结构对例对例4.9 1+2+3+4+10DoLoopDoLoop方法:方法:s=0:i=1s=0:i=1Do While i=10Do While i=10 s=s+i s=s+i i=i+1 i=i+1LoopLoopForFor循环实现的程序功能,也可以用循环实现的程序功能,也可以用DoloopDoloop循环实现。循环实现。ForFor方法:方法:s=0s=0For i=1
40、 To 10For i=1 To 10 s=s+i s=s+iNext INext I Visual Basic程序程序设计设计4.4 循环结构循环结构 格式格式(2)(2)Do Do 循环体循环体 Exit Do Exit Do 循环体循环体 Loop While Loop While 执行规则:执行规则:先执行循先执行循环体,再判断循环条环体,再判断循环条件。件。注意注意:不管不管“循环条件循环条件”开始为真还是为假,循环体至少执行一次。开始为真还是为假,循环体至少执行一次。Visual Basic程序程序设计设计4.4 循环结构循环结构 对例对例4.9 1+2+3+4+104.9 1+2
41、+3+4+10程序代码:程序代码:s=0:i=1s=0:i=1Do While i=10Do While i=10 s=s+i s=s+i i=i+1 i=i+1LoopLoop程序代码:程序代码:s=0:i=1s=0:i=1DoDo s=s+i s=s+i i=i+1 i=i+1Loop While i=10Loop While i=10可以看出:可以看出:两种两种WhileWhile循环可以实现相同的功能。循环可以实现相同的功能。Visual Basic程序程序设计设计4.4 循环结构循环结构我国现有人口我国现有人口13亿,按人口年增长率亿,按人口年增长率0.8%计算,多计算,多少年后我国
42、人口超过少年后我国人口超过26亿?亿?分析:分析:可以看出,该问题是循环问题,可以看出,该问题是循环问题,但循环次数不确定,不能用但循环次数不确定,不能用ForFor循环。循环。计算公式:计算公式:26=13 26=13*(1+0.008)(1+0.008)n n;程序代码:程序代码:P=13:n=0Do n=n+1 p=p*(1+0.008)Loop While p=26Print n可以看出可以看出:(1)(1)循环次数不确定的循环只能用循环次数不确定的循环只能用WhileWhile循环;循环;(2)For(2)For循环都可以转换成循环都可以转换成WhileWhile循环,但循环,但Wi
43、leWile循环不一定都能用循环不一定都能用ForFor循环循环实现实现。Visual Basic程序程序设计设计4.4 循环结构循环结构 Do Do WhileWhile 循环体循环体 Loop Loop D0 D0 循环体循环体 Loop Loop WhileWhile 区别区别:(1)(1)执行顺序不同:执行顺序不同:形式一形式一:先判断先判断,后执行后执行循环体循环体;形式二形式二:先执行先执行循环体循环体,后判断。后判断。(2)(2)执行次数不同执行次数不同(特殊情况下):(特殊情况下):形式一形式一:条件不满足,循环体可能一次也不执行条件不满足,循环体可能一次也不执行 形式二形式二
44、:不论条件如何,不论条件如何,至少执行一次至少执行一次 Visual Basic程序程序设计设计4.4 循环结构循环结构v 例例4.14 用辗转相除法求两自然数用辗转相除法求两自然数m、n的最大公约数和最小的最大公约数和最小公倍数。公倍数。最大公约数:最大公约数:已知两数已知两数m m、n n;m Mod n m Mod n的值为的值为r r;mn mn,nrnr;若若r0 r0,则重复,则重复 ,否则,循环结束,否则,循环结束,m m为所求的为所求的最大公约数。最大公约数。最小公倍数:最小公倍数:原两个数相乘,再除以原两个数相乘,再除以最大公约数。最大公约数。程序代码:程序代码:Dim m
45、As Integer,n As Integerm=Text1.Text:n=Text2.Textm=Text1.Text:n=Text2.Textm1=m:n1=nDo Loop while r0Text3.Text=mText4.Text=m1*n1/mr=m Mod nm=nn=r能否把能否把while r0放到放到Do后面?后面?Visual Basic程序程序设计设计4.4 循环结构循环结构 格式:格式:Do Until Do Until 循环体循环体 Loop LoopWhileWhile条件与条件与UntilUntil条件的区别:条件的区别:WhileWhile条件是当条件是当条件
46、满足时执行循环体条件满足时执行循环体,UntilUntil条件条件是当是当条件满足时结束循环体的执行条件满足时结束循环体的执行。格式格式(4)(4):DoDo 循环体循环体 Loop Until Loop Until Visual Basic程序程序设计设计4.4 循环结构循环结构 对例对例4-94-9求求1+2+3+4+101+2+3+4+10i=1i=1Do Do While i=10While i10Until i10 s=s+is=s+i i=i+1 i=i+1LoopLoopPrint i,s Print i,s WhileWhile循环和循环和UntilUntil循环可以实现相同的
47、功能。循环可以实现相同的功能。Visual Basic程序程序设计设计4.4 循环结构循环结构几种形式比较几种形式比较:DoDo WhileWhile 循环体循环体 LoopLoop(While While )DoDo Until Until 循环体循环体 LoopLoop(Until Until )区别区别:While While 条件为真时执行循环体条件为真时执行循环体,否则退出循环。否则退出循环。Until Until 条件为假时执行循环体条件为假时执行循环体,否则退出循环。否则退出循环。关系:关系:whilewhile和和UntilUntil可以相互转换,但循环条件取反。可以相互转换,
48、但循环条件取反。Visual Basic程序程序设计设计4.4 循环结构循环结构v 例例4.15 输入一个正整数输入一个正整数n,求最大的,求最大的k,使得,使得1*1+2*2+k*kn成立。成立。分析:分析:由于循环次数不确定,不能用由于循环次数不确定,不能用ForFor循环,只能用循环,只能用DoLoopDoLoop循环。循环。(1)(1)输入输入n n的值。的值。(2)(2)判断累加和判断累加和sn?sn?。(3)(3)若是,若是,s s加下一个数的平方值。加下一个数的平方值。(4)(4)重复(重复(2 2)、()、(3 3)。)。(5)(5)若否,结束循环。若否,结束循环。(6)(6)
49、由由text2text2输出最后一个输出最后一个程序代码:程序代码:n=Val(Text1.Text)s=0:k=1 Do While s=A And t=A And t=Z Then Text2.Text=t+Text2.Text End If NextEnd Sub分析:分析:字符串逆序连接有两种字符串逆序连接有两种方法方法:一种正序取倒序连接一种正序取倒序连接;另另一种是倒序取正序连接。一种是倒序取正序连接。Visual Basic程序程序设计设计4.5 程序示例程序示例 例例4.19 4.19 随机生成随机生成100100个两位数,统计其中小于等于个两位数,统计其中小于等于4040、大
50、于、大于4040小于小于7070和大于等于和大于等于7070的数的个数。的数的个数。程序代码:程序代码:For i=1 To 100 x=Int(Rnd*90)+10 If x=40 Then ElseIf x70 Then Else End If Next i分析:分析:该题目属于统计问题。该题目属于统计问题。可以设计三个计数器可以设计三个计数器c1,c2c1,c2和和c3c3分别统计三种情况的数据,分别统计三种情况的数据,三种情况用多分支三种情况用多分支IfIf处理。处理。c3=c3+1c1=c1+1c2=c2+1 Visual Basic程序程序设计设计4.5 程序示例程序示例 例例4.
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。