第四章基本的控制结构.ppt

上传人:本田雅阁 文档编号:2262692 上传时间:2019-03-13 格式:PPT 页数:50 大小:840.51KB
返回 下载 相关 举报
第四章基本的控制结构.ppt_第1页
第1页 / 共50页
第四章基本的控制结构.ppt_第2页
第2页 / 共50页
第四章基本的控制结构.ppt_第3页
第3页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第四章基本的控制结构.ppt》由会员分享,可在线阅读,更多相关《第四章基本的控制结构.ppt(50页珍藏版)》请在三一文库上搜索。

1、第四章 基本的控制结构,4.1 顺序结构 4.2 选择结构 4.3 循环结构 4.4 其他辅助控制语句 4.5 综合应用 4.6 程序调试 4.7 常见错误,4.1 顺序结构,顺序结构就是各语句按出现的先后次序执行。一般的程序设计语言中,顺序结构的语句主要是赋值语句、输入/输出语句等。在VB中也有赋值语句;而输入/输出可以通过文本框控件、标签控件、InputBox函数、MsgBox函数或过程及Print方法等来实现。,本章目录,4.1.1 赋值语句 形式:LET变量名表达式 或者 对象.属性=属性值 作用: 将表达式的值赋值给变量名或属性名。 一般用于给变量赋值或对控件设定属性值。 例: su

2、m!=sum+x Text1.Text “欢迎使用Visual Basic 6.0 “ 注意: 当表达式值的精度与变量的精度不一致时,强制转换成左边的精度,如m% = 10/3 ,则m中的结果为3 当表达式是数字字符串,左边变量是数值类型,自动转换为数值类型再赋值,但表达式有非数字字符时,则出错。 例如: n%=“123” n%=“12a3”,当逻辑型赋值给数值型时,True转换为-1, False转换为0;反之当数值型赋值给逻辑型时,非0转换为True,0转换为False。 任何非字符类型赋值给字符类型,自动转换为字符类型。 虽然赋值号与关系运算符等于号都用“=”表示,VB系统会根据所处的位

3、置自动判断是何种意义的符号。 赋值号左边只能是变量,不能是常量、常数符号或表达式。如:x+y=3, sin(x)=x+z 理解n=n+1与s=s+x语句的含义。,4.1.2 数据的输入与输出 1.标签和文本框控件 标签可以输出信息,文本框即可输入也可输出信息。 2. 输入对话框InputBox函数 InputBox$(提示, 标题, 默认值, Xpos, Ypos) 其中: 1) 提示: 字符串,长度不超过1024个字符,用来提示用户输入。文本可自动换行。如想强制插入回车换行则用: Chr$(13)+Chr$(10)或常数vbCrLf。 2) 标题:字符串,对话框标题,显示在对话框顶部的标题区

4、。 3) 默认值: 字符串,用来显示输入区的默认初值。 4) Xpos,Ypos:是两个整数值,确定对话框在屏幕上的位置;如果省略,则对话框显示在屏幕中心线向下约1/3处。,使用InputBox函数时的注意事项: 1)默认值表示输入的初始默认值,如果直接按下回车键或单击“确定”按钮,函数的返回值(函数值)为该默认值。 2)变量名=InputBox(参数表) 函数值默认为字符类型。输入数值时,函数值可以利用 Val函数转换为数值后,再参加运算。如果变量已被正确地定义了类型时,则不必进行类型转换。 3)输入数据后,按回车键或单击“确定”按钮表示确认,并返回在文本框中输入的数据;如果单击“取消”按钮

5、(或按Esc 键)时,则取消当前的输入,此时该函数返回一个空字符串。 4)需要输入多个值,则必须多次执行或调用InputBox函数。,例4.1利用InputBox输入基本工资和营业额,按营业额的5%提成,计算实发工资并显示。 Private Sub Form_Click() Dim sfgz!, jbgz!, y As Single jbgz = Val(InputBox(“输入基本工资“, “计算工资“, 300) y = Val(InputBox(“输入本月营业额“) sfgz = jbgz + y * 0.05 Print “本月营业额为:“ & y & “ 基本工资为:“ & jbgz

6、 Print “本月实发工资为:“ & sfgz End Sub,作用:打开一个信息框,等待用户选择一个按钮。MsgBox函数返回所选按钮的值,MsgBox过程不返回值。 MsgBox函数形式: MsgBox(提示, 按钮, 标题) MsgBox过程形式: MsgBox 提示,按钮,标题 其中:按钮项是一整型表达式,决定信息框按钮的数目、类型及出现在信息框上的图标形式。,3. 消息对话框MsgBox函数和MsgBox过程,MsgBox按钮设置,MsgBox所选按钮返回值,例4.2编一帐号和密码检验程序。要求: 帐号不超过6位数字,有错,清除原内容再输入。 密码输入时在屏幕上以 “*”代替; 若

7、密码错,显示有关信息,选择“重试”按钮,清除原内容再输入,选择“取消”按钮,停止运行。 分析: 帐号6位,MaxLength为6,LostFocus判断数字IsNumeric函数; 密码PassWordChar为“*”,MsgBox函数设置密码错对话框。,12,4. Print方法,作用:在对象上计算并输出表达式的信息。 格式:对象.PrintSpc(n)|Tab(n);输出列表 ;|, 说明: 对象:窗体、图形框或打印机,缺省为窗体; Spc(n)函数:从当前位置起空n个空格; Tab(n)函数:从最左端开始的第n列上输出; 分号:紧凑格式,定位在上一个被显示的字符之后; 逗号:标准格式,定

8、位在下一个打印区开始处(每区14列); Print语句尾无分号或逗号,输出后换行。 例4.3 Print方法输出图形,13,5. Format格式输出函数,形式: Format (表达式, “格式字符串“) 常用数值格式化符及举例,例4.4 利用Format函数显示数值。,4.2 选择结构,计算机要处理的问题往往是复杂多变的,仅采用顺序结构是不够的。必须利用选择结构等来解决实际应用中的各种问题。VB中提供了多种形式的条件语句来实现选择结构,有If条件语句和Select情况语句等。它们都是对条件进行判断,根据判断结果,选择执行不同的分支。,本章目录,1. IfThen语句(单分支结构) If T

9、hen 语句块 End If 或 If Then ,例4.5 已知两个数x和y,比较它们的大小,使得x大于y. If xy Then t=x x=y y=t End If 或 If xy Then t=x: x=y: y=t,重要的是学会两个数的交换,若上述语句次序变一下,结果如何?,4.2.1 If条件语句,注意: If语句中的表达式一般为关系表达式、逻辑表达式,也可以是算术表达式。表达式值按非零为True,零为False判断。 语句块中的语句可以是一条或多条语句。若是用行结构的形式,则多条语句必须写在同一行上,且语句之间用冒号隔开。 一般来说,语句块只有一条语句时用行结构,多条语句时用块结

10、构。 块结构与行结构的区别:看Then后面的语句是否在同一行上,若在同一行就是单行结构,否则为块结构,块结构必须以End if结束。,2. IfThenElse语句(双分支结构) If Then Else End If If Then Else 例4.6 计算分段函数:,单分支结构实现: y=cos(x)x3+3*x If x0 Then y=sin(x)+sqr (x*x+1),双分支结构实现: If x0 Then y=sin(x)+sqr (x*x+1) Else y=cos(x)x3+3*x End If,3. IfThenElseIf语句(多分支结构) 形式: If Then Els

11、eIf Then Else 语句块 n+1 End If 注意: 1) 此处Else和If之间不能有空格,否则程序出错。 2)“表达式1-n”都是逻辑表达式。 3)不管有几个分支,程序执行了满足条件的一个分支后,其余分支不再执行。 4) 一个多分支结构中只有一个End If语句。 5)当多分支中有多个表达式同时满足时,只执行第一个与之匹配的语句块。注意多分支中表达式的书写顺序。 6) 块结构的条件语句可以嵌套 。,例4.7 已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。 用多分支结构实现: ch=InputBox(“input“) If Ucase(ch) =“A“

12、 And Ucase (ch) =“0“ And ch =“9“ Then Print ch + “是数字字符“ Else Print ch + “其他字符“ End If,不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余分支不再执行;若条件都不满足,且有Else子句,则执行该语句块,否则什么也不执行。ElseIf不能写成 Else If。,例4.8 已知百分制成绩mark,显示对应的五级制成绩 哪些正确,哪些错误?,4If语句的嵌套 If语句的嵌套是指If或Else后面的语句块中又包含If语句。 形式如下: If Then If Then End If End If,例 已知x,

13、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 If,If语句的嵌套注意事项:书写锯齿型; If 与End If配对。,:与同类型的下面四种形式之一: (1) 表达式 例: “A“ (2)一组枚举表达式(用逗号分隔) 2,4,6,8 (3) 表达式1 To 表达式2 60 To 100 (4) Is 关系运算符表达式 Is 60,4.2.2 Select Case语句(情况语句) 形式: Select Ca

14、se 变量或表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 Case Else 语句块n+1 End Select,注意: 如果“测试表达式”匹配某个case”表达式列表”,则执行其下的“语句块”,它可是一个语句,也可是多个语句。 A、如果“测试表达式”和所有的Case子句中的“表达式列表”都不匹配时,则会执行Case Else子句 ; B、如果都不匹配且没有Case Else子句,则不执行任何操作,程序会从End Select之后的语句继续执行; C、如果“测试表达式”匹配一个以上的Case子句中的“表达式列表”,则只有第一个匹配的后面的语句会被执行 Select

15、 Case结构可以针对字符串指定范围和多重表达式。如: Case “ Hello World!” , “any” To “every” Select Case结构可以进行嵌套,但每个嵌套的Select Case结构必须要有End Select语句 。,例4.7 变量ch中存放了一个字符,判断该字符是数字字符、字母字符还是其他字符。 用多分支结构实现: If Ucase(ch) =“A“ And Ucase (ch) =“0“ And ch =“9“ Then Print ch + “是数字字符“ Else Print ch + “其他字符“ End If 用Select Case语句实现: S

16、elect Case cj Case “a“ To “z“,“A“ To “Z“ Print ch + “是字母字符“ Case “0“ To “9“ Print ch + “是数字字符“ Case Else Print ch + “其他字符“ End Select,例4.9 已知坐标点(x,y),判断其落在哪个象限。,哪个能实现,哪个不能实现?,方法一 If x 0 And y 0 Then Print “在第一象限“ ElseIf x 0 Then Print “在第二象限“ ElseIf x 0 And y 0 Then Print “在第四象限“ End If,方法二 Select C

17、ase x,y Case x 0 And y 0 Print “在第一象限“ Case x 0 Print “在第二象限“ Case x 0 And y 0 Print “在第四象限“ End Select,方法二代码错误: 1. Select Case 后不能出现多个变量; 2. Case后不能出现变量及逻辑运算符。,6.条件函数 (1)IIf函数形式是: IIf(表达式1,表达式2, 表达式3) 例如,求x,y中大的数,放入Tmax变量中,语句如下: Tmax=IIf(x y,x,y) (2)Choose函数形式是: Choose(数值类型变量,选项列表) 例如,Nop是1-4的值,转换成

18、 + 、-、运算符的语句如下: Op= Choose(Nop,“+“,“-“,“,“) 当值为1,返回字符串“+”,然后放入Op变量中,值为2,返回字符串“-”,依次类推;当Nop是1-4的非整数,系统自动取Nop的整数办法在判断;若Nop不在14之间,函数返回Null值。 (3) Switch函数形式是: Switch(条件表达式1,条件表达式1为True时的值 ,条件表达式2,条件表达式2为True时的值),4.3.1 For循环语句 (用于循环次数已知) 1.语句形式 For 循环变量初值 to 终值 Step 步长 语句块 Exit For 语句块 Next 循环变量,循环体,0 初值

19、终值 =0 死循环,(3)循环次数,(2)步长,其中: (1)循环变量必须为数值型。,2.执行流程,4.3 循 环 结 构,3.注意的问题 (1) 出了循环,循环控制变量值的问题。 例程序段: For i=2 To 13 Step 3 Print i , Next i Print : Print “I=“, i,例4.11 计算1100的奇数和,程序段如下: Dim i %, s% s=0 For i = 1 To 100 step 2 s = s + i Next i Print s,循环执行次数,输出 i的值分别为: 2 5 8 11 出了循环输出为: I=14,例 改变循环控制变量对循环

20、的影响。 Private Sub Command1_Click() 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,(2)在循环体内对循环控制变量可多次引用;但最好不要对其赋值,否则影响原来的循环控制规律。,计算下列循环语句的次数: (1)For i=-3 To 20 step 4 (2)For i=-3.5 To 5.5 step 0

21、.5 (3)For i=-3.5 To 5.5 step -0.5 (4)For i=-3 To 20 step 0 解答 (1)循环次数为6次 (2)循环次数为19次 (3)不循环 (4)无数次,死循环,例4.12 输出可打印的ASCII码字符与它的编码值。,4.3.2 DoLoop循环语句(用于控制循环次数未知) 形式1: Do While|Until 语句块 Exit Do 语句块 Loop,形式2: Do 语句块 Exit Do 语句块 Loop While|Until ,例4.13 我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。 分析:解此问题两种方法,可根

22、据公式:26=13*(1+0.008)n 直接利用标准对数函数求得;也可利用循环求得,程序如下: Private Sub Command1_Click() x = 13 n = 0 Do While x 26 x = x * 1.008 n = n + 1 Loop Print n, x End Sub,Do until x = 26,4.3.3 循环的嵌套 一个循环体内又包含了一个完整的循环结构称为循环的嵌套。 例4.14打印九九乘法表 For i = 1 To 9 For j = 1 To 9 se = i Next j Picture1.Print Next i,思考:打印上三角或下三角

23、程序如何改动?要打印下三角?,For j = 1 To x,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 ii,对于循环的嵌套,要注意以下事项: 内循环变量与外循环变量不能同名; 外循环必须完全包含内循环,不能交叉; 不能从循环体外转向循环体内,反之则可以。 正确 错误,4

24、.4 其他辅助控制语句 1. Go To 语句 形式: Go To 标号|行号 作用:无条件地转移到标号或行号指定的那行语句。 标号是一个字符序列,行号是一个数字序列。 2.Exit语句 多种形式: Exit For、Exit Do、Exit Sub、Exit Function等。 作用:退出某种控制结构的执行。 3. End语句 多种形式: End、End If、End Select、End With、End Type、End Sub、End Function。 作用:End结束一个程序的运行;其余表示某个结构的结束,与对应的结构语句配对出现。,求n以内素数的代码: For m = 2 To

25、 n For i = 2 To m - 1 If (m Mod i) = 0 Then GoTo NotNextM Next i Print m NotNextM: Next m,m是否为素数,求n以内的素数,思考: 此例用Go To语句对非素数不作判断,若不用GoTo语句,如何修改程序?,例4.15 判断输入的数是否为素数 素数是一个大于2,且不能被1和本身以外的整数整除的整数。 判别某数m是否为素数最简单的方法是: 对于m 从 i=2,3,m-1判别m能否被i整除,只要有一个能整除,m不是素数,否则m是素数。,4.5 综合应用,1.四则运算 例4.16 由计算机自动产生四则运算题,并能判断

26、答案的正确性。 设计思路: (1)通过随机函数Rnd产生试题的操作数和运算符,运算符+、-、可对应编号14。产生表达式通过Form_Load事件过程。 (2)需要有一个全局变量保存四则运算题的正确答案,用户答案可通过文本框输入。 (3)本题主要将随机函数、If语句、Select语句综合在一起使用。,例4.17用辗转相除法求两自然数m,n的最大公约数和最小公倍数。 分析:求最大公约数的算法思想: (1) m除以n得余数r; (2)若r=0,则n为最大公约数结束;否则执行(3); (3) mn,nr,再重复执行(1)。 例 求 m=14 ,n=6 的最大公约数. r=m mod n Do Whil

27、e (r 0) m=n n=r r= m mod n Loop Print “最大公约数=“, n,m n r 14 6 2 6 2 0,辗转相减法 m=m-n mn n=n-m nm m、n为公约数 m=n Do 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 2 Loop,2.求最大公约数和最小公倍数,3.计算部分级数和,例4.18求自然对数e的近似值,其误差小于0.00001。,近似公式,分析:本例涉及到程序设计中两个重要运算,累加和连乘。累加是在原有和的基础上再加一个数;连乘则是在原有积的

28、基础上再乘以一个数。 该题先求i!,再将1/i!进行累加,循环次数未知,可先设置一个次数很大的值,然后在循环体内判断是否到达精度,也可用Do While来实现。,4. 试凑法求方程的解,例4.19 百元买百鸡。假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。 分析: (1) 设母鸡、公鸡、小鸡各为x、y、z,列出方程为: x+y+z= 100 3x+2y+0.5z = 100 三个未知数,两个方程,此题求若干个整数解。 (2) 计算机求解此类问题,采用试凑法(也称穷举法)来实现,即将可能出现的各种情况一一罗列测试,判断是否满足条件,采用循环结构来实现。,5. 递推法,递推(迭代

29、)法基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次都从旧值的基础上递推出新值,并由新值代替旧值。 例4.20 小猴有桃若干,第一天吃掉一半多一个;第二天吃剩下桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天只剩一个,问小猴原有桃多少? 分析:用后一天的数推出前一天的桃子数。设第n天的桃子为xn,是前一天的桃子的二分之一减去1。,4.6 程序调试,随着程序的复杂性提高,程序中的错误也伴随而来。对初学者,看到出现错误不要害怕,关键是如何改正错误,失败是成功之母。上机的目的,不光是为了验证你编写的程序的正确性,还要通过上机调试,学会查找和纠正错误的方法和能力。VB为调试程序

30、提供了一组交互的、有效的调试工具,在此逐一介绍。,4.6.1 错误类型,语法错误、运行时错误和逻辑错误三类。 1.语法错误,2. 运行错误,指令代码执行了一非法操作引起的。例如,类型不匹配、试图打开一个不存在的文件等。程序会自动中断,并给出有关的错误信息。,3.逻辑错误,程序运行后,得不到所期望的结果,这说明程序存在逻辑错误。例如,运算符使用不正确、语句的次序不对、循环语句的起始、终值不正确等。通常,逻辑错误不会产生错误提示信息,故错误较难排除,需要程序员仔细地阅读分析程序,并具有调试程序的经验。,4.6.2 调试和排错,VB的三种模式 (1) 设计模式(设计) 可以进行程序的界面设计、属性设

31、置、代码编写等。 (2) 运行模式(运行) 执行启动命令进入运行模式。在此阶段,可以查看程序代码,但不能修改。 (3) 中断模式(Break) 执行中断命令,进入中断模式。在中断模式下可以查看代码、修改代码、检查数据。,1.调试和排错-插入断点,2. 调试窗口 立即窗口、本地窗口、监视窗口,4.7 常见错误 4.7.1 判断结构中常见错误 1.在选择结构中缺少配对的结束语句,对多行式的If块语句中,应有配对的 End If语句结束。 2.多边选择ElseIf关键字的书写和条件表达式的表示,ElseIf 不要写成Else If;多个条件表达式次序问题。 3.Select Case语句的使用,Se

32、lect Case 后不能出现多个变量;Case子句后不能出现变量。,4.7.2 循环结构中常见错误 1. 不循环或死循环的问题 主要是循环条件、循环初值、循环终值、循环步长的设置有问题。 2. 循环结构中缺少配对的结束语句 For 少 配对的Next 3. 循环嵌套时,内外循环交叉 4. 累加、连乘时,存放累加、连乘结果的变量赋初值问题 (1)一重循环 在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。 (2)多重循环,这要视具体问题分别对待。,本章小节,结构化程序设计三种结构 顺序结构、选择结构、循环结构 IfThen语句、Select Case语句、For与 Do循环语句 赋值语句与复合赋值语句 数据输出和输入 InputBox、MsgBox 常用算法 素数判定、级数求和、试凑法、迭代法解方程,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1