第5章 选择分支与循环.ppt_第1页
第5章 选择分支与循环.ppt_第2页
第5章 选择分支与循环.ppt_第3页
第5章 选择分支与循环.ppt_第4页
第5章 选择分支与循环.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Visual Basic Programming 1,选择分支与循环 第5章,5.1 分支结构与分支结构语句 5.2 循环结构与循环结构语句 5.3 程序实例,Visual Basic Programming 2,分支结构与分支结构语句,分支结构是程序的基本算法结构之一。VB提供了实现分支结构的相关语句。 If-Then-Else-End If 结构语句 Select-Case-End Select 结构语句,5.1,Visual Basic Programming 3,If-Then-Else-End If 结构语句,该结构语句的一般形式 该结构的变形1 该结构的变形2 例5-1 已知三角形

2、三个边的长度,设计求此三角形面积的程序 例5-2一个有多个分支的示例程序,5.1.1,Visual Basic Programming 4,If结构语句的一般形式,If e Then A组语句 Else B组语句 End If,Visual Basic Programming 5,If结构的变形1不对称分支,Visual Basic Programming 6,If结构的变形2多分支,Visual Basic Programming 7,当a+bc 且 a+cb 且 b+ca 时,三角形存在,其面积 式中: p=(a+b+c)/2,例5-1 已知三角形三个边的长度,设计求此三角形面积的程序,算

3、法流程图 程序代码,Visual Basic Programming 8,例5-1 算法流程图,Visual Basic Programming 9,例5-2一个有多个分支的示例程序,程序代码,True,False,True,False,Visual Basic Programming 10,例5-2 程序代码,Private Sub Command1_Click() Dim x As Integer x = Val(Text1.Text) If x 1 Then Text2.Text = “这是小于1的数” ElseIf x = 10 Then Text2.Text = “这是1到10之间的

4、数” Else Text2.Text = “这是大于10的数” End If End Sub,Visual Basic Programming 11,给出下列程序的执行结果,a = 75 If a 80 Then i = 3 ElseIf a 70 Then i = 2 ElseIf a 60 Then i = 1 End If Print i,a = 75 If a 80 Then i = 3 If a 70 Then i = 2 If a 60 Then i = 1 Print i,a = 75 If a 80 Then If a 70 Then If a 60 Then i = 1 En

5、d If i = 2 End If i = 3 End If Print i,a = 75 If a 60 Then If a 70 Then If a 80 Then i = 1 End If i = 2 End If i = 3 End If Print i,12 03,Visual Basic Programming 12,Select-Case-End Select 结构语句,本结构语句提供了实现多分支结构的另一种方法。它的一般形式是: 例5-2的程序代码也可使用本结构语句实现,5.1.2,Select Case e Case c1 A组语句 Case c2 B组语句 . Case E

6、lse n组语句 End Select,e称为测试表达式,可以是算术表达式或字符表达式;c1,c2,.是测试项,(1)具体取值:如:3、5、7.2等(当测试表达式是算术表达式时); (2)连续的数据范围:如:8 To 20;B To H等; (3)满足某个判决条件:如:Is20;Is 30等。,Visual Basic Programming 13,例5-2的程序代码使用本结构语句实现,Private Sub Command1_Click() Dim x As Integer x = Val(Text1.Text) Select Case x Case Is 1 Text2.Text = 这是

7、小于1的数 Case 1 To 10 Text2.Text = 这是1到10之间的数 Case Else Text2.Text = 这是大于10的数 End Select End Sub,Visual Basic Programming 14,Select-Case-End Select 结构语句,在Select Case X结构中的如果判断条件是3x7 ,如何表示? A. Case 3 =3 C. Case Is=3 D. Case 3 To 7,Visual Basic Programming 15,循环结构与循环结构语句,循环结构也是程序的基本算法结构。所谓循环,就是重复地执行某些操作。

8、 当型循环和直到型循的不同执行方式 Do-Loop循环结构语句 For-Next循环结构语句 循环嵌套,5.2,Visual Basic Programming 16,当型循环和直到型循的不同执行方式,当型循环的不同执行方式 直到型循环的不同执行方式,Visual Basic Programming 17,Do-Loop循环结构语句,Do-Loop循环结构语句的四种形式 Exit Do语句 例5-3 求两个自然数的最大公约数程序,5.2.1,1.Do While e 2. Do . . Exit Do Exit Do . . Loop Loop While e 3.Do 4. Do Until

9、 e . . Exit Do Exit Do . . Loop Until e Loop,Visual Basic Programming 18,Exit Do语句,循环体中,可以包括一条或多条Exit Do语句,如果程序执行到Exit Do语句时,就会直接退出循环,转而执行Loop语句的下一条语句。 Exit Do语句最常用的形式是与If-Then语句相结合,即: If e Then Exit Do 在执行循环体时,如果条件e被满足,则执行Exit Do语句直接退出循环。,Visual Basic Programming 19,例5-3 求两个自然数的最大公约数程序,本问题的算法采用欧几里德

10、算法求解 由于输入的数据M和N要求是自然数,所以在程序中应加入对数据的合法性进行检验的部分;考虑到程序的应用范围,数据类型可选用长整型。 本例中使用了求余(数)运算符Mod。使用Mod运算符时,切记应在它的前后各加一个空格 程序代码,Visual Basic Programming 20,For-Next循环结构语句,如果事先已知循环次数,则可使用For-Next 循环结构语句。它的一般形式是: For-Next循环结构语句的执行方式 注意 例5-4 例5-5,5.2.2,For v = e1 To e2 Step e3 . Exit For . Next v,式中,v是循环控制变量,应为整型

11、或单精度型;e1、e2和e3是控制循环的参数。e1为初值、e2为终值、e3为步长。当e3=1时,step e3部分可省略。,Visual Basic Programming 21,For-Next循环结构语句的执行方式,计算e1、e2和e3的值; 给v赋初值; 判v的值是否超过e2,即当e30时,判ve2否(当e30时,判ve2否),如果未超过,则执行循环体;如果超过了,则退出循环。 执行Next语句,v增加一个步长,即执行v = v + e3;转而执行判别操作。 正常循环次数 =Int(e2-e1)/e3)+1,Visual Basic Programming 22,For-Next循环结构

12、语句的执行方式,Private Sub Form_Click() For i = 1 To 10 Step 2 Print i; Next i Print i=; i End Sub,1 3 5 7 9 i=11,Visual Basic Programming 23,给出下列程序的执行结果,Dim x As Single For x = 0.1 To 0.9 Step 0.1 Print x Next x,Dim i As Integer, j As Integer j = 10 For i = 1 To j Step 2 i = i + 1 j = j + 1 Print i; j Nex

13、t i Print i=; i,211 512 813 1114 i= 13,0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8000001,Visual Basic Programming 24,给出下列程序的执行结果,Private Sub Form_Click() Dim I As Integer, Sum As Integer For I = 0.5 To 8.5 Step 2.5 I = I + 1.5 Sum = Sum + I * 10 Next I Print Sum Print I End Sub,180 12,Visual Basic Programming 2

14、5,注意,循环参数e1、e2和e3中包含的变量如果在循环体内被改变,不会影响循环的执行次数;但循环控制变量若在循环体内被重新赋值,则循环次数有可能发生变化。 十进制整数可准确转换为二进制数形式,而带小数点的十进制数在转换为单(双)精度数时则多半存在数制转换误差。若使用非整型数做循环控制变量和循环参数,那么循环次数就有可能发生意想不到的变化。 与Do-Loop结构中的Exit Do语句一样,For-Next结构总也可以使用Exit For语句,中途退出循环。,Visual Basic Programming 26,例5-4求1到10这十个数的和与连乘积,求若干个数之和或连乘积,可采用“累加”或“

15、累乘”法。 累加法是设置一个存放和数的变量,称为“累加器”,初始值为0,累加过程通过循环实现; 累乘的算法设置的是“累乘器”,初始值为1,在循环体内,乘数应与累乘器相乘。在求乘积时,应注意乘积的大小,设置适当的数据类型。 程序代码,Visual Basic Programming 27,例5-5大写字母逆序输出的程序,从一个字符串中找出符合要求的字符是采取对字符串的每一个字符逐个筛选的方法实现的 本例利用Mid函数可以从字符串中提取出单个字符 利用循环控制处理过程,循环的终值使用Len函数 对于符合要求的字符采用连接运算组成新字符串 逆序输出则是通过从后往前逐个提取字符再连接 程序代码,Vis

16、ual Basic Programming 28,例5-5大写字母逆序输出的程序,For i = 1 To Len(s)用循环和Mid函数判断每个字符 If Mid(s, i, 1)=A And Mid(s, i, 1)=Z Then t = t *; j; =; i * j; Next j Print Next i End Sub 执行本程序,窗体上将显示九九乘法表,Visual Basic Programming 31,例5-6一个模拟摇奖的程序,设有100个人中签,要从中找出中奖人。由机器自动随机产生1000个1100间的数据,第1000个随机数据即为中奖人的号码。 问题的关键是如何产生

17、1100之间的随机整数。VB提供了一个可以产生01之间均匀分布的随机数的随机函数Rnd(x)。 为了生成某个范围内的随机整数,可用以下公式: Int(ub - lb + 1) * Rnd + lb) 这里,ub、 lb分别是随机整数范围的上下限。 程序代码,Visual Basic Programming 32,随机函数Rnd(x),其中,可选的 x 参数是 Single 或任何有效的数值表达式 如果使用参数且参数 x0,则得到随机序列的下一个随机数;参数 x=0,则返回上一次生成的随机数。不使用x的结果与x0相同。 对最初给定的种子都会生成相同的数列,因为每一次调用 Rnd 函数都用数列中的

18、前一个数作为下一个数的种子。 调用 Rnd 之前,可先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有从系统计时器获得到的种子。,Visual Basic Programming 33,例5-6一个模拟摇奖的程序,Randomize 随机化语句 For i = 1 To 1000 intranum=Int(100 * Rnd) + 1 产生1100间随机整数 a = 0 For j = 1 To 10000 延时 a = a + 1 Next j Text1.Text = CStr(intranum) Text1.Refresh 文本框刷新 Next i,Visual B

19、asic Programming 34,程序示例,例5-7一个简易函数计算器程序 例5-8 个人收入调节税应用程序 例5-9 寻找水仙花数程序 例5-10 利用牛顿迭代法求方程根 例5-11 原码转换成反码的程序,5.3,Visual Basic Programming 35,例5-7一个简易函数计算器程序,为了保证“计算器”在各种操作状况下都正常工作,程序需要考虑用户没有在文本框中输入数据或输入的数据超出函数的定义域时的出错处理。 程序中使用的IsNumeric(s)函数用于检测自变量s是否是一个可转换成数值的数字串,如果是,则返回逻辑值True,否则返回False。 程序代码,Visual

20、 Basic Programming 36,例5-7一个简易函数计算器程序,If Text1.Text = Then temp = MsgBox(请输入X值!, 48 + vbOKOnly) ElseIf IsNumeric(Text1.Text) Then X = Val(Text1.Text) Label2.Caption = Exp(X)=: Text2.Text = Str(Exp(X) Else temp = MsgBox(输入数据错误!, 16 + vbOKOnly) Text1.Text = End If,Visual Basic Programming 37,MsgBox的返回

21、值,temp = MsgBox(输入数据错误!, 16 + vbOKOnly) Print temp 当单击MsgBox上的OK按钮之后,temp就获得了一个返回值,显示在窗体上为“1” 使用赋值语句。如: ans = MsgBox(“非法数据!”,48,”提示信息”) 使用Print方法。例如: Print MsgBox(“非法数据!”,48,”提示信息”) 也可以把它等同为一个方法使用。如: MsgBox “非法数据!”,48,”提示信息”,Visual Basic Programming 38,例5-8个人收入调节税应用程序,按月收入额计个人收入调节税的计税公式 式中,income为纳税

22、人的月收入。 程序代码,Visual Basic Programming 39,income = Text1.Text If Check1.Value = 1 Or income = 1600 Then tax = 0 ElseIf income = 2100 Then tax = (income - 1600) * 0.05 ElseIf income = 3600 Then tax = (income - 1600) * 0.1 - 25 ElseIf income = 6600 Then tax = (income - 1600) * 0.15 - 125 ElseIf income =

23、 21600 Then tax = (income - 1600) * 0.2 - 375 ElseIf income = 41600 Then tax = (income - 1600) * 0.25 - 1375 ElseIf income = 61600 Then tax = (income - 1600) * 0.3 - 3375 ElseIf income = 81600 Then tax = (income - 1600) * 0.35 - 6375 ElseIf income = 101600 Then tax = (income - 1600) * 0.4 - 10375 El

24、se tax = (income - 1600) * 0.45 - 15375 End If,Visual Basic Programming 40,income = Text1.Text Select Case Check1.Value Case 1 tax = 0 Case Else Select Case income Case Is = 1600 tax = 0 Case Is = 2100 tax = (income - 1600) * 0.05 Case Is = 101600 tax = (income - 1600) * 0.4 - 10375 Case Else tax =

25、(income - 1600) * 0.45 - 15375 End Select End Select,Visual Basic Programming 41,例5-9穷举法找水仙花数,找出所有三位数的水仙花数。 水仙花数是指各位数字的立方和等于该数本身的数。 算法说明,153 = 13 + 53 + 33 153就是一个水仙花数,Visual Basic Programming 42,例5-9穷举法找水仙花数算法说明,穷举法是从某个数据集合中查找具有特定性质的数据的基本算法。 即对该数据集合中的每一个数据进行检查判别,再将符合特定条件的数据筛选出来。 本题是对组成一个数的各位数字进行判别,

26、因此有两种不同做法。 做法一 做法二,Visual Basic Programming 43,Private Sub Command1_Click() Dim I As Integer, a As Integer, b As Integer Dim c As Integer, st As String For I = 100 To 999 a = I 100 b = (I Mod 100) 10 c = I Mod 10 If I = a 3 + b 3 + c 3 Then st = I & = & a & 3+ & b & 3+ & c & 3 List1.AddItem st End I

27、f Next I End Sub,例5-9穷举法找水仙花数做法一,拆分100999的每个数字(数值的方式拆分),Visual Basic Programming 44,Private Sub Command1_Click() Dim I As Integer, a As Integer, b As Integer Dim c As Integer, st As String For I = 100 To 999 a = Mid(i, 1, 1) b = Mid(i, 2, 1) c = Mid(i, 3, 1) If I = a 3 + b 3 + c 3 Then st = I & = &

28、a & 3+ & b & 3+ & c & 3 List1.AddItem st End If Next I End Sub,例5-9穷举法找水仙花数做法一(另),拆分100999的每个数字(字符的方式拆分),Visual Basic Programming 45,例5-9穷举法找水仙花数做法二,Private Sub Command1_Click() Dim I As Integer, a As Integer, b As Integer Dim c As Integer, st As String For a = 1 To 9 For b = 0 To 9 For c = 0 To 9 I

29、 = a * 100 + b * 10 + c If I = a 3 + b 3 + c 3 Then st = I & = & a & 3+ & b & 3+ & c & 3 List1.AddItem st End If Next c Next b Next a End Sub,将 3 个个位数拼凑起来,Visual Basic Programming 46,例5-10利用牛顿迭代法求方程根,利用牛顿迭代法求方程xex - 1 = 0 在x0 = 0.5附近的一个根,要求精确到10-7 牛顿迭代法算法说明 程序代码,Visual Basic Programming 47,牛顿迭代法算法说明,牛顿迭代法是求解一元超越方程的常用算法。设要求解的方程为f(x)=0,并已知一个不够精确的初始根x0,则有: 上式称为牛顿迭代公式。式中,f(x)是f(x)的导函数。利用迭代公式,可以依次求出x1、x2、x3、,当|xn+1 xn|时的xn+1即为要求的根。,xn+1 = xn - f(xn)/f(xn) n=0,1,2,3,Visual Basic Programming 48,例5-10利用牛顿迭代法求方程根,x = InputBox(输入初始值x:, 牛顿迭代法) Eps=InputB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论