VB第四章顺序分支与循环结构.ppt

上传人:大米 文档编号:573298434 上传时间:2024-08-14 格式:PPT 页数:37 大小:376.50KB
返回 下载 相关 举报
VB第四章顺序分支与循环结构.ppt_第1页
第1页 / 共37页
VB第四章顺序分支与循环结构.ppt_第2页
第2页 / 共37页
VB第四章顺序分支与循环结构.ppt_第3页
第3页 / 共37页
VB第四章顺序分支与循环结构.ppt_第4页
第4页 / 共37页
VB第四章顺序分支与循环结构.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《VB第四章顺序分支与循环结构.ppt》由会员分享,可在线阅读,更多相关《VB第四章顺序分支与循环结构.ppt(37页珍藏版)》请在金锄头文库上搜索。

1、第四章第四章 基本的控制结构基本的控制结构 4.1 4.1 顺序结构顺序结构 4.2 4.2 选择结构选择结构 4.3 4.3 循环结构循环结构 4.4 4.4 其它辅助控制语句其它辅助控制语句 4.5 4.5 常用算法(一)常用算法(一) 4.6 4.6 常见错误常见错误 (顺序、条件、循环)(顺序、条件、循环)4.1 4.1 顺序结构顺序结构一一. . 赋值语句赋值语句 P96P96 形式: LET变量名表达式变量名表达式 作用: 将表达式的值赋值给变量名. 一般用于给变量赋值或对控件设定属性值. 例: sRate!=0.1 Text1.Text 欢迎使用Visual Basic 6.0”

2、 当表达式的类型与变量的类型不一致时,强制转换成左边的精度 iA% = 10 / 3 iA中的结果为3 注意:注意:错误的赋值语句错误的赋值语句 二二. . 与用户交互函数和过程与用户交互函数和过程 1.1.InputBoxInputBox函数函数 P80P80 InputBoxInputBox( (提示提示 ,标题,标题,缺省,缺省,x x 坐标位置坐标位置,y y坐标位置坐标位置) 其中:提示 提示信息,标题 对话框标题,缺省输入区缺省值 函数返回字符类型.注意多行提示信息的显示方法注意多行提示信息的显示方法:Dim strName As String * 40 strName= Inpu

3、tBox( “请输入你的姓名” + vbCrLf + “然后单击确定” , “输入框” )也可以使用如下语句:Dim strName As String * 40, strS1 As String * 40strS1 = “请输入你的姓名” + Chr(13) + Chr(10) + “然后单击确定” strName= InputBox(strS1, “输入框”, , 100,100) 当键盘输入“王晓明” 后,变量strName获得键盘输入的值.2. MsgBoxMsgBox函数和函数和MsgBoxMsgBox过程过程P81P81 函数形式:变量% = MsgBox(提示,按钮,标题) 过程

4、形式: MsgBox 提示,按钮,标题 按钮值如下: 函数返回所选按钮整数值:例例4.1 编一帐号和密码检验程序。要求: 帐号不超过6位数字,有错,清除原内容再输入. 密码输入时在屏幕上以 “*”代替; 若密码错,显示有关信息,选择“重试”按钮,清除原内容再输入,选择“取消”按钮,停止运行。分析: 帐号6位,MaxLength为6 , LostFocus判断数字IsNumeric函数 密码PassWordChar为“*”,MsgBox函数设置密码错对话框.常见错误常见错误数据合法性检查中引起程序的死循环Private Sub Text1_LostFocus() If Not IsNumeric

5、(Text1) Then msgbox “请输入正整数 Text1 = Text1.SetFocus End IfEnd SubPrivate Sub Text2_LostFocus() If Not IsNumeric(Text2) Then msgbox “请输入正整数 Text2 = Text2.SetFocus End IfEnd SubIf Text2 And Not IsNumeric(Text2)当年龄框中输入非字符串,并按下Tab键时。就会出现循环的错误提示。例4-1-12009-3-22 4.2 4.2 选择结构选择结构 1. 1. IfThenIfThen语句语句( (单分

6、支结构单分支结构) )P100P100 If Then 语句块语句块 End If 或或 If Then 例:已知两个数x和y,比较它们的大小, 使得x大于y. If xy Then t=x x=y y=t End If 或或 If xy Then t=x: x=y: y=t重要的是学会两个数的交换,若上述语句次序变一下,结果如何?重要的是学会两个数的交换,若上述语句次序变一下,结果如何?单分支结构实现: y=cos(x)x3+3*x If x0 Then y=sin(x)+sqr (x*x+1) 例如:计算分段函数思考:如果上面的两个语句换一下顺序即: If x0 Then y=sin(x)

7、+sqr (x*x+1) y=cos(x)x3+3*x 会是什么结果?2. 2. IfThenElseIfThenElse语句语句( (双分支结构双分支结构) )P101P101 If Then Else End If 也可以写为一行,格式为:If Then Else 双分支结构实现: If x0 Then y=sin(x)+sqr (x*x+1) Else y=cos(x)x3+3*x End If3 3IfIf语句的嵌套语句的嵌套P102P102 If语句的嵌套是指If或Else后面的语句块中又包含If语句。 形式如下: If Then If Then End If End If 例例4.

8、4 已知x,y,z三个数,使得xyz用一个IF语句和一个嵌套的IF语句实现 If xy Then t=x: x=y: y=t If yz Then t=y: y=z: z=t If xy Then t=x: x=y: y=t End If End IfIf语句的嵌套注意事项:书写锯齿型; If 与End If配对。4. IfThen4. IfThenElseIfElseIf语句语句( (多分支结构多分支结构) )P106P106 形式: If Then ElseIf Then Else 语句块语句块 n+1 End If例如:成绩小于60吗,否的话小于70吗,例例4.2 已知变量strC中存放

9、了一个字符,判断该字符是字母字符、数字字符还是其他字符。注:Ucase()小写变大写,Lcase()相反用多分支结构实现用多分支结构实现: If Ucase(strC) =A And Ucase (strC) =0 And strC =60 thenI= “及格及格”if mark=70 thenI= “中中”if mark=80 thenI= “良良”if mark=90 thenI= “优优”end ifEnd ifend ifprint IElseprint “不及格不及格”End if:与同类型的下面四种形式之一: 表达式 例: A 一组枚举表达式(用逗号分隔) 2,4,6,8 表达式

10、1 To 表达式2 60 To 100 Is 关系运算符表达式 Is =A And Ucase (strC) =0 And strC 0 And y 0 Then Print 在第一象限ElseIf x 0 Then Print 在第二象限ElseIf x 0 And y 0 And y 0 And y 0Print 在第一象限 Case x 0Print 在第二象限 Case x 0 And y 0 And y 0Print 在第四象限End Select方法二代码错误:1. Select Case 后不能出现多个变量,应写为后不能出现多个变量,应写为select case x2. Case

11、后不能出现变量及有关运算符,应写为后不能出现变量及有关运算符,应写为 is 0,而非而非x y,x,y) (2)Choose函数形式是: Choose(数字类型变量,值为数字类型变量,值为1的返回值,值为的返回值,值为2的返回值的返回值) 例如,No是14的值,转换成 + 、-、运算符的语句如下:No= int(rnd*4+1) Ysf= Choose(No,+,-,) 当值为1,返回字符串“+”,然后放入Ysf变量中,值为2,返回字符 串“-”,依次类推;当No是1-4的非整数,系统自动取No的整数办法在判断;若No不在1-4之间,函数返回Null值。 注意注意Rnd的用法,避免出现的用法,

12、避免出现 “固定的随机数固定的随机数” (使用使用Randomize语句)语句)常见错误常见错误1在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的 End If语句结束。2. ElseIf关键字不要写成Else If; 多个条件表达式次序问题,见例4.33. Select Case语句的使用 Select Case 后不能出现多个变量;Case子句后不能出现变量见例见例4.64.64.3 循环结构循环结构P1101. DoLoop循环语句循环语句(用于控制循环次数未知)形式1: Do While|Until 语句块语句块 Exit Do 语句块语句块 Loop形式2:Do 语句

13、块语句块Exit Do语句块语句块 Loop While|Until 先判断后执行,语句块可先判断后执行,语句块可能一次也不执行能一次也不执行先执行后判先执行后判 断,语句块至少执断,语句块至少执行一次行一次Do While LoopDo While Loop示例示例 i = 5 Do While i 10 Print i; i = i + 2 Loop结果:5 7 9Do Loop While Do Loop While 示例示例 i = 5 Do Print i; i = i + 2 Loop While i 10结果:5 7 9例4.11 我国有13亿人口,按人口年增长0.8%计算,多少

14、年后我国人口超过26亿。分析:解此问题两种方法,可根据公式:26=13*(1+0.008)n 直接利用标准对数函数求得;也可利用循环求得,程序如下:Private Sub Command1_Click() x = 13 n = 0 Do While x n; (2) m除以n得余数r; (3)若r=0,则n为最大公约数结束;否则执行(4); (4)m n,n r,再重复执行(2)。 例 求 m=14 ,n=6 的最大公约数. If m n Then t = m: m = n: n = t r=m mod n Do While (r 0) m=n n=r r= m mod n Loop Prin

15、t 最大公约数最大公约数=, n m n r 14 6 2 6 2 0辗转相减法 m=m-n mn n=n-m nm m、n为公约数 m=nDo While m n m n If m n Then 14 6 m = m n 8 6 Else 2 6 n = n m 2 4 End If 2 2Loop2. For循环语句循环语句 (一般用于循环次数已知)形式: For 循环变量初值循环变量初值 to 终值终值 Step 步长步长 语句块语句块Exit For 语句块语句块 Next 循环变量循环变量循环体例4.8 计算1100的奇数和,程序段如下: Dim i %, s% s=0 For i

16、= 1 To 100 step 2 s = s + I Next i 0 初值终值 =1 时,可省略终值=0 死循环循环次数要注意:要注意:v 出了循环,循环控制变量值的问题。 例程序段: For i=2 To 13 Step 3 输出 i的值分别为: Print i 2 5 8 11 Next I 最后输出结果为: I=14 Print 循环次数为 Print “I=“, I For语句执行次数为5次v 在循环体内对循环控制变量可多次引用;但最好不要对其赋值,否则影响原来的循环控制规律(参下面的例题)。步长例4.9 改变循环控制变量对循环的影响。Private Sub Command1_Cl

17、ick() j = 0 For i = 1 To 20 Step 2 i = i + 3 j = j + 1 Print 第; j; 次循环i=; i Next i Print 退出循环后i=; i End Sub正常情况:i=1,3,5,7,9,11,13,15,17,19现在:i=4,9,14,19例4.10 输出可打印的ASCII码字符与它的编码值。 3.循环的嵌套循环的嵌套 一个循环体内又包含了一个完整的循环结构称为循环的嵌套. 例例4.13打印各种九九乘法表. For i = 1 To 9 For j = 1 To 9 se = i & & j & = & i * j Picture

18、1.Print Tab(j - 1) * 9 + 1); se; Next j Picture1.Print Next i思考:思考:打印上三角或下三角程序如何改动?要打印下三角打印上三角或下三角程序如何改动?要打印下三角? For ii =1 To 10 For jj=1 To 20 Next ii Next jj For ii =1 To 10 For ii=1 To 20 Next ii Next ii For ii =1 To 10 For jj=1 To 20 Next jj Next ii For ii =1 To 10 Next ii For ii =1 To 10 Next i

19、i 对于循环的嵌套,要注意以下事项:内循环变量与外循环变量不能同名;外循环必须完全包含内循环,不能交叉;不能从循环体外转向循环体内,反之则可以。正正 确确错错 误误4.4 4.4 其他辅助控制语句其他辅助控制语句 1. Go To 语句语句 形式形式: Go To 标号标号|行号行号 作用:无条件地转移到标号或行号指定的那行语句. 标号是一个字符序列,行号是一个数字序列. 2.Exit语句语句 多种形式: Exit For、Exit Do、Exit Sub、Exit Function等。 作用:退出某种控制结构的执行。 3. End语句语句 多种形式: End、 End If、 End Sel

20、ect、 End With、 End Type、 End Sub、 End Function、 作用:End结束一个程序的运行;其余表示某个结构的结束,与对应的结构语句配对出现。4.With 语句语句 形式如下: With 对象 语句块 End With 作用:对某个对象执行一系列的操作,而不用重复指出对象的名称。 With Label1 .Height = 2000 .Width = 2000 .FontSize=22 .Caption = MyLabel End With Label1.Height = 2000 Label1.Width = 2000 Label1.FontSize=22

21、 Label1.Caption = MyLabel 等价实际应用举例实际应用举例1.1.累加、连乘累加、连乘1100的5或7的倍数的和 Sum = 0 For i = 1 To 100 If i Mod 5 = 0 Or i Mod 7 = 0 Then Sum = Sum + i End If Next i Print Sum 310的乘积 t = 1 For i =3 To 10 t = t * i Next i Print t思考:若把循环体前面置各变量初值的语句放在循环体内,程序运行时会产生什么情况?求下面表达式的近似值,要求其误差小于0.00001 Private Sub Comma

22、nd1_Click() Dim x! 表达式的最终值 Dim t! 表达式中通项的值 Dim n& 下一通项中n的值,由于可能计算的项比较多,因此定义为长整型 x = 1 x的初始值为1 n = 2 该计算下一个通项2/(1*3)了 t = n / (n - 1) / (n + 1) 下一个通项的值,也可以写为t = n / (n - 1)*(n + 1) Do Until t =0.00001 x = x + t n = n + 1 t = n / (n - 1) / (n + 1) Loop Print 计算结果为; x; 计算了; n; 项End Sub2.求素数求素数素数是一个大于2,

23、且不能被1和本身以外的整数整除的整数。 判别某数m是否为素数最简单的方法是:对于m 从 i=2,3,m-1判别m能否被i整除,只要有一个能整除,m不是素数,否则m是素数。例例4.15 求100以内素数的代码: For m = 2 To 100 For i = 2 To m - 1 If (m Mod i) = 0 Then GoTo NotNextM Next i Print mNotNextM: Next mm是否为素数求100以内的素数思考:思考: 此例用Go To语句对非素数不作判断,若不用GoTo语句,如何修改程序?(参见例题4.15) 3.3.穷举法穷举法 “穷举法”也称为“枚举法”

24、或“试凑法”, 即将可能出现的各种情况一一测试,判断是否满足条件,一般采用循环来实现。 例例4.16 百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。 设母鸡、公鸡、小鸡各为x、y、z只,根据题目要求,列出方程为: x+y+y=100 3x+2y+0.5z=100三个未知数,两个方程,此题有若干个解。解决此类问题采用“试凑法”,把每一种情况都考虑到。 方法一:最简单三个未知数利用三重循环来实现。 方法二:从三个未知数的关系,利用两重循环来实现。4.4.递推法递推法 “递推法”又称为“迭代法”,其基本思想是把一个复杂的计

25、算过程转化为简单过程的多次重复。每次重复都从旧值的基础上递推出新值,并由新值代替旧值。 例例4.17 猴子吃桃子。小猴在某天摘桃若干个,当天吃掉一半多一个;第二天吃了剩下的桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天要吃时只剩下一个,问小猴共摘下了多少个桃子?分析:这是一个“递推”问题,先从最后一天推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子。设第n天的桃子为xn,那么它是前一天的桃子数的xn-1 的一半减1,即xn =( xn-1 +1)25.5.最小、最大值最小、最大值在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一

26、个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。例例 随机产生随机产生1010个个100100200200之间的数,求最大值。之间的数,求最大值。 Private Sub Command1_Click() Max = 100 For i = 1 To 10 x = Int(Rnd * 101 + 100) Print x; If x Max Then Max = x Next i Print Print 最大值=; MaxEnd Sub4.4.7 7 常见错误常见错误1. 不循环或死循环的问题不循环或死循环的问题 主要是循环条件、循环初值、循环终值、循环步长的设置有问题。2. 循环结构中缺少配对的结束语句循环结构中缺少配对的结束语句 For 少 配对的Next 3. 循环嵌套时循环嵌套时, ,内外循环交叉内外循环交叉4. 累加、连乘时,存放累加、连乘结果的变量赋初值问题累加、连乘时,存放累加、连乘结果的变量赋初值问题 (1)一重循环 在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。(2)多重循环 这要视具体问题分别对待。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号