收藏 分享(赏)

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

上传人:hyngb9260 文档编号:7255846 上传时间:2019-05-11 格式:PPT 页数:50 大小:840.50KB
下载 相关 举报
第四章基本的控制结构.ppt_第1页
第1页 / 共50页
第四章基本的控制结构.ppt_第2页
第2页 / 共50页
第四章基本的控制结构.ppt_第3页
第3页 / 共50页
第四章基本的控制结构.ppt_第4页
第4页 / 共50页
第四章基本的控制结构.ppt_第5页
第5页 / 共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变量名表达式 或者 对象.属性=属性值作用: 将表达式的值赋值给变量名或属性名。 一般用于给变量赋值或对控件设定属性值。例: sum!=sum+xT

2、ext1.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) 标题:字符串,对话框标题,显示在对话框顶部的标题区。3) 默认值: 字符串,用

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

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

6、gz 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列上输出; 分号:紧凑格式,定位在上一个被显示的字符之后; 逗号:标准格式,定位在下一个打印区开始处(每区14列); Print语句尾

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

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

10、是单行结构,否则为块结构,块结构必须以End if结束。,2. IfThenElse语句(双分支结构)If ThenElseEnd IfIf Then Else 例4.6 计算分段函数:,单分支结构实现: y=cos(x)x3+3*x If x0 Then y=sin(x)+sqr (x*x+1),双分支结构实现: If x0 Theny=sin(x)+sqr (x*x+1)Elsey=cos(x)x3+3*xEnd If,3. IfThenElseIf语句(多分支结构)形式: If ThenElseIf Then Else 语句块 n+1 End If 注意: 1) 此处Else和If之间不

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

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

13、If yz Thent=y: y=z: z=t If xy Then t=x: x=y: y=tEnd IfEnd 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 Case 变量或表达式Case 表达式列表1语句块1Case 表达式列表2语句块2Case Else语句块n+1End Select

14、,注意: 如果“测试表达式”匹配某个case”表达式列表”,则执行其下的“语句块”,它可是一个语句,也可是多个语句。A、如果“测试表达式”和所有的Case子句中的“表达式列表”都不匹配时,则会执行Case Else子句 ;B、如果都不匹配且没有Case Else子句,则不执行任何操作,程序会从End Select之后的语句继续执行;C、如果“测试表达式”匹配一个以上的Case子句中的“表达式列表”,则只有第一个匹配的后面的语句会被执行 Select Case结构可以针对字符串指定范围和多重表达式。如: Case “ Hello World!” , “any” To “every” Select

15、 Case结构可以进行嵌套,但每个嵌套的Select Case结构必须要有End Select语句 。,例4.7 变量ch中存放了一个字符,判断该字符是数字字符、字母字符还是其他字符。 用多分支结构实现:If Ucase(ch) =“A“ And Ucase (ch) =“0“ And ch =“9“ ThenPrint ch + “是数字字符“ ElsePrint ch + “其他字符“ End If 用Select Case语句实现:Select Case cjCase “a“ To “z“,“A“ To “Z“Print ch + “是字母字符“Case “0“ To “9“Print

16、ch + “是数字字符“Case ElsePrint ch + “其他字符“End Select,例4.9 已知坐标点(x,y),判断其落在哪个象限。,哪个能实现,哪个不能实现?,方法一 If x 0 And y 0 ThenPrint “在第一象限“ ElseIf x 0 ThenPrint “在第二象限“ ElseIf x 0 And y 0 ThenPrint “在第四象限“ End If,方法二 Select Case x,yCase x 0 And y 0Print “在第一象限“Case x 0Print “在第二象限“Case x 0 And y 0Print “在第四象限“ E

17、nd 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的值,转换成 + 、-、运算符的语句如下:Op= Choose(Nop,“+“,“-“,“,“)当值为1,返回字符串“+”,然后放入Op变量中,值为2,返回字符串“-”,依次类推;当Nop是1-4的非整数,系统自动

18、取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 初值终值 =0 死循环,(3)循环次数,(2)步长,其中: (1)循环变量必须为数值型。,2.执行流程,4.3 循 环 结 构,3.注意的问题(1) 出了循环,循环控制变量值的问题。例程序段:For i=2 To 13 Ste

19、p 3Print i , Next iPrint : 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,例 改变循环控制变量对循环的影响。 Private Sub Command1_Click()j = 0For i = 1 To 20 Step 2i = i + 3j = j + 1 Print “第“; j; “次循环i=“; iNext iPrint “退出循

20、环后i=“; iEnd 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.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码字符与它的编

21、码值。,4.3.2 DoLoop循环语句(用于控制循环次数未知) 形式1: Do While|Until 语句块Exit Do 语句块Loop,形式2:Do 语句块Exit Do语句块Loop While|Until ,例4.13 我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。 分析:解此问题两种方法,可根据公式:26=13*(1+0.008)n 直接利用标准对数函数求得;也可利用循环求得,程序如下: Private Sub Command1_Click()x = 13n = 0Do While x 26x = x * 1.008n = n + 1LoopPrint

22、n, x End Sub,Do until x = 26,4.3.3 循环的嵌套一个循环体内又包含了一个完整的循环结构称为循环的嵌套。例4.14打印九九乘法表For i = 1 To 9For j = 1 To 9se = i Next jPicture1.PrintNext i,思考:打印上三角或下三角程序如何改动?要打印下三角?,For j = 1 To x,For ii =1 To 10For jj=1 To 20 Next ii Next jj,For ii =1 To 10For ii=1 To 20 Next ii Next ii,For ii =1 To 10For jj=1 T

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

24、nd语句多种形式: End、End If、End Select、End With、End Type、End Sub、End Function。 作用:End结束一个程序的运行;其余表示某个结构的结束,与对应的结构语句配对出现。,求n以内素数的代码:For m = 2 To n For i = 2 To m - 1If (m Mod i) = 0 Then GoTo NotNextMNext iPrint m NotNextM:Next m,m是否为素数,求n以内的素数,思考: 此例用Go To语句对非素数不作判断,若不用GoTo语句,如何修改程序?,例4.15 判断输入的数是否为素数 素数是一

25、个大于2,且不能被1和本身以外的整数整除的整数。 判别某数m是否为素数最简单的方法是: 对于m 从 i=2,3,m-1判别m能否被i整除,只要有一个能整除,m不是素数,否则m是素数。,4.5 综合应用,1.四则运算 例4.16 由计算机自动产生四则运算题,并能判断答案的正确性。 设计思路: (1)通过随机函数Rnd产生试题的操作数和运算符,运算符+、-、可对应编号14。产生表达式通过Form_Load事件过程。 (2)需要有一个全局变量保存四则运算题的正确答案,用户答案可通过文本框输入。 (3)本题主要将随机函数、If语句、Select语句综合在一起使用。,例4.17用辗转相除法求两自然数m,

26、n的最大公约数和最小公倍数。 分析:求最大公约数的算法思想:(1) m除以n得余数r;(2)若r=0,则n为最大公约数结束;否则执行(3);(3) mn,nr,再重复执行(1)。 例 求 m=14 ,n=6 的最大公约数. r=m mod nDo While (r 0) m=nn=rr= m mod nLoopPrint “最大公约数=“, n,m n r14 6 26 2 0,辗转相减法m=m-n mnn=n-m nmm、n为公约数 m=n Do While m n m nIf m n Then 14 6m = m n 8 6Else 2 6n = n m 2 4End If 2 2 Loo

27、p,2.求最大公约数和最小公倍数,3.计算部分级数和,例4.18求自然对数e的近似值,其误差小于0.00001。,近似公式,分析:本例涉及到程序设计中两个重要运算,累加和连乘。累加是在原有和的基础上再加一个数;连乘则是在原有积的基础上再乘以一个数。该题先求i!,再将1/i!进行累加,循环次数未知,可先设置一个次数很大的值,然后在循环体内判断是否到达精度,也可用Do While来实现。,4. 试凑法求方程的解,例4.19 百元买百鸡。假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。 分析: (1) 设母鸡、公鸡、小鸡各为x、y、z,列出方程为:x+y+z= 1003x+2y+0.

28、5z = 100 三个未知数,两个方程,此题求若干个整数解。 (2) 计算机求解此类问题,采用试凑法(也称穷举法)来实现,即将可能出现的各种情况一一罗列测试,判断是否满足条件,采用循环结构来实现。,5. 递推法,递推(迭代)法基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次都从旧值的基础上递推出新值,并由新值代替旧值。 例4.20 小猴有桃若干,第一天吃掉一半多一个;第二天吃剩下桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天只剩一个,问小猴原有桃多少? 分析:用后一天的数推出前一天的桃子数。设第n天的桃子为xn,是前一天的桃子的二分之一减去1。,4.6 程序调试,随着

29、程序的复杂性提高,程序中的错误也伴随而来。对初学者,看到出现错误不要害怕,关键是如何改正错误,失败是成功之母。上机的目的,不光是为了验证你编写的程序的正确性,还要通过上机调试,学会查找和纠正错误的方法和能力。VB为调试程序提供了一组交互的、有效的调试工具,在此逐一介绍。,4.6.1 错误类型,语法错误、运行时错误和逻辑错误三类。 1.语法错误,2. 运行错误,指令代码执行了一非法操作引起的。例如,类型不匹配、试图打开一个不存在的文件等。程序会自动中断,并给出有关的错误信息。,3.逻辑错误,程序运行后,得不到所期望的结果,这说明程序存在逻辑错误。例如,运算符使用不正确、语句的次序不对、循环语句的

30、起始、终值不正确等。通常,逻辑错误不会产生错误提示信息,故错误较难排除,需要程序员仔细地阅读分析程序,并具有调试程序的经验。,4.6.2 调试和排错,VB的三种模式 (1) 设计模式(设计) 可以进行程序的界面设计、属性设置、代码编写等。 (2) 运行模式(运行) 执行启动命令进入运行模式。在此阶段,可以查看程序代码,但不能修改。 (3) 中断模式(Break) 执行中断命令,进入中断模式。在中断模式下可以查看代码、修改代码、检查数据。,1.调试和排错-插入断点,2. 调试窗口 立即窗口、本地窗口、监视窗口,4.7 常见错误 4.7.1 判断结构中常见错误 1.在选择结构中缺少配对的结束语句,

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

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报