《择分支与循环》PPT课件.ppt_第1页
《择分支与循环》PPT课件.ppt_第2页
《择分支与循环》PPT课件.ppt_第3页
《择分支与循环》PPT课件.ppt_第4页
《择分支与循环》PPT课件.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1,第5章 选择分支与循环,2,本章主要内容,5.1 分支结构与分支结构语句 5.2 循环结构与循环结构语句 5.3 程序示例,3,5.1 分支结构与分支结构语句,分支结构是程序的基本算法结构之一。VB提供 了实现分支结构的相关语句。 If-Then-Else-End If 结构语句 Select-Case-End Select 结构语句,4,If-Then-Else-End If 结构语句,该结构语句的一般形式 该结构的变形1 该结构的变形2 例5-1 已知三角形三个边的长度,设计求此三角形面积的程序 例5-2一个有多个分支的示例程序,5,If 结构语句的一般形式,If e Then A组语句 Else B组语句 End If,6,If 结构的变形 1,7,If 结构的变形 2,8,例5-1 已知三角形三个边的长度,设计求此三角形面积的程序,算法流程图 程序代码,当a+bc 且 a+cb 且 b+ca 时,三角形存在,其面积 式中: p=(a+b+c)/2,9,例5-1 算法流程图,10,11,例5-2一个有多个分支的示例程序,程序代码,12,例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之间的数” Else Text2.Text =”这是大于10的数” End If End Sub,13,Select-Case-End Select 结构语句,本结构语句提供了实现多分支结构的另一种方法。它的一般形式是:,Select Case e Case c1 A 组语句 Case c2 B 组语句 . Case Else n 组语句 End Select,e称为测试表达式,可以是算术表达式或字符表达式;c1,c2,.是测试项,(1) 具体取值:如:3、5、7.2等(当测试表达式是算术表达式时); (2) 连续的数据范围:如:8 To 20; “B“ To “H“等; (3) 满足某个判决条件:如:Is20;Is=“P“等。,例5-2的程序代码也可使用本结构语句实现,14,例5-2的程序代码使用本结构语句实现,Private Sub Command1_Click() Dim x As Integer x = Val(text1.Text) Select Case x Case Is 1 Text2.text = “这是小于1的数“ Case 1 To 10 Text2.Text = “这是1到10之间的数“ Case Else Text2.Text = “这是大于10的数“ End Select End Sub,15,5.2 循环结构与循环结构语句,循环结构也是程序的基本算法结构。所谓循环,就是重复地执行某些操作。 当型循环和直到型循的不同执行方式 Do-Loop循环结构语句 For-Next循环结构语句 循环嵌套,16,当型循环和直到型循的不同执行方式,当型循环的不同执行方式 直到型循环的不同执行方式,17,1. Do-Loop 循环结构语句,Do-Loop循环结构语句的四种形式 Exit Do语句 例5-3 求两个自然数的最大公约数程序,1. Do While e 2. Do . . Exit Do Exit Do . . Loop Loop While e 3. Do Until e 4. Do . . Exit Do Exit Do . . Loop Loop Until e,18,Exit Do语句,循环体中,可以包括一条或多条 Exit Do 语句;如果程序执行到 Exit Do 语句时,就会直接退出循环,转而执行 Loop 语句的下一条语句。 Exit Do 语句最常用的形式是与 If-Then 语句相结合,即: If e Then Exit Do Exit Do 在执行循环体时,如果条件 e 被满足,则执行 Exit Do 语句,直接退出循环。,19,例5-3 求两个自然数的最大公约数程序,本问题的算法采用欧几里德算法求解 由于输入的数据M和N要求是自然数,所以在程序中应加入对数据的合法性进行检验的部分;考虑到程序的应用范围,数据类型可选用长整型。 本例中使用了求余(数)运算符Mod。使用Mod运算符时,切记应在它的前后各加一个空格。 程序代码,20,例5-3 程序代码,21,2. For-Next 循环结构语句,如果事先已知循环次数,则可使用For-Next 循环结构语句。它的一般形式是: For-Next循环结构语句的执行方式 注意 例5-4 例5-5,For v = e1 To e2 Step e3 . Exit For . Next v,v是循环控制变量,应为整型或单精度型;e1、e2和e3是控制循环的参数。e1为初值、e2为终值、e3为步长。当e3 = 1时,Step e3部分可省略。,22,For-Next循环结构语句的执行方式,计算 e1、e2 和 e3 的值。 给 v 赋初值。 判断 v 的值是否超过 e2: 即当 e30 时,判断是否 ve2; 当 e30 时,判断是否 ve2; 如果未超过,则执行循环体; 如果超过了,则退出循环。 执行 Next 语句,v 增加一个步长,即执行 v = v + e3 ;然后转而执行判断操作。,23,注意,循环参数e1、e2和e3中包含的变量如果在循环体内被改变,不会影响循环的执行次数;但循环控制变量若在循环体内被重新赋值,则循环次数有可能发生变化。 十进制整数可准确转换为二进制数形式,而带小数点的十进制数在转换为单(双)精度数时则多半存在数制转换误差。若使用非整型数做循环控制变量和循环参数,那么循环次数就有可能发生意想不到的变化。 当循环变量为整型,而循环参数为带小数点的实数时,系统将其转换为与循环变量相同的整数型。,24,例5-4 求1到10这十个数的和与连乘积,求若干个数之和或连乘积,可采用“累加”或“累乘”法。累加法是设置一个存放和数的变量,称为“累加器”,初始值为0,累加过程通过循环实现;累乘的算法设置的是“累乘器”,初始值为1,在循环体内,乘数应与累乘器相乘。在求乘积时,应注意乘积的大小,设置适当的数据类型。 程序代码,25,例5-5 大写字母逆序输出的程序,从一个字符串中找出符合要求的字符是采取对字符串的每一个字符逐个筛选的方法实现的,本例利用Mid函数可以从字符串中提取出单个字符,利用循环控制处理过程,循环的终值使用Len函数;对于符合要求的字符采用连接运算组成新字符串;逆序输出则是通过从后往前逐个提取字符再连接。 程序代码,26,3. 循环嵌套,无论是Do-Loop循环,还是For-Next循环,都可以在大循环中套小循环。必须注意:小循环一定要完整地被包含在大循环之内,而不得相互交叉。 Private Sub Form_Click() For i = 1 To 9 For j = 1 To 9 Print i; “*“; j; “=“; i * j; Next j Print Next i End Sub 执行本程序,窗体上将显示九九乘法表 例5-6 一个模拟摇奖的程序,27,例5-6 一个模拟摇奖的程序,【题目】设有100个人中签,要从中找出中奖人。由机器自动随机产生1000个1100间的数据,第1000个随机数据即为中奖人的号码。 【分析】问题的关键是如何产生1100之间的随机整数。VB提供了一个可以产生01之间均匀分布的随机数的随机函数Rnd(x)。 为了生成某个范围内的随机整数,可用以下公式: Int(ub - lb + 1) * Rnd + lb) 这里,ub、 lb分别是随机整数范围的上下限。 程序代码,28,随机函数Rnd(x),其中,可选的 x 参数是 Single 或任何有效的数值表达式 如果使用参数且参数 x 0,则得到随机序列的下一个随机数;参数 x =0,则返回上一次生成的随机数。不使用x的结果与 x0相同。 对最初给定的种子都会生成相同的数列,因为每一次调用 Rnd 函数都用数列中的前一个数作为下一个数的种子。 调用 Rnd 之前,可先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有从系统计时器获得到的种子。,29,5.3 程序示例,例5-7一个简易函数计算器程序 例5-8 个人收入调节税应用程序 例5-9 找出水仙花数 例5-10利用牛顿迭代法求方程根 例5-11 原码转换成反码的程序,30,例5-7 一个简易函数计算器程序,为了保证“计算器”在各种操作状况下都正常工作,程序需要考虑在用户没有在文本框中输入数据或输入的数据超出函数的定义域时的出错处理。 程序中使用的 IsNumeric()函数用于检测自变量s是否是一个可转换成数值的数字串,如果是,则返回逻辑值True,否则返回False。 程序代码,31,例5-8 个人收入调节税应用程序,按月收入额计个人收入调节税的计税公式 式中,income为纳税人的月收入。 程序代码,32,例5-9 找出所有三位水仙花数,利用“穷举法”在三位数中查找具有“水仙花数”特征的数 题中在判断一个数是否是“水仙花数”时采用了两种方法:一种是将三位数循环变量的各位数字拆开,然后进行比较;一种是采用三重循环,用三个循环变量来构成一个三位数,然后进行比较 程序代码(1) 程序代码(2),33,例5-10 利用牛顿迭代法求方程根,利用牛顿迭代法求方程xex - 1 = 0 在x0 = 0.5附近的一个根,要求精确到10-7 牛顿迭代法算法说明 程序代码,34,牛顿迭代法算法说明,牛顿迭代法是求解一元超越方程的常用算法。设要求解的方程为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,35,例5-11 原码转换成反码的程序,Mid函数的功能除可提取字符串的指定位置的字符之外。也可以如同一个变量一样用在赋值语句中,其功能是用指定的字符替换字符串中指定位置的内容。本示例使用了Mid函数的这一功能。 程序代码,36,例5-4,37,例5-5,38,例5-6,39,例5-7,40,例5-8,41,例5-9 方法一,Option Explicit Private Sub Command1_Click() Dim I As Integer, a As Integer, b As Integer, 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 If Next I End Sub,42,例5-9 方法二,Option Explicit Private Sub Command1_Click() Dim I As Integer, a As Integer, b As Integer, c As Integer, st As String For a = 1 To 9 For b = 0 To 9 For c = 0 To 9 I = 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,43,例5-10,Option Explicit Private Sub cmd1_Click() Dim x As Sing

温馨提示

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

最新文档

评论

0/150

提交评论