1 / 48

第 4 章 VB 控制结构

4.1 顺序结构 4.2 选择结构 4.3 循环结构 4.4 其它辅助控制语句 4.5 综合应用 4.6 程序调试. 第 4 章 VB 控制结构. ( 1 )顺序结构 各语句按出现的先后次序执行. a. A. B. b. 4.1 顺序结构. VB 具有结构化程序设计的三种程序控制结构,即 顺序结构 、 选择结构 、 循环结构 ,是程序设计的基础。. 用传统流程图表示为. 本章目录. ( 2 )选择结构. 传统流程图 :. a. 成立. 不成立. 条件?. A. B. b. 根据条件决定执行的语句.

Download Presentation

第 4 章 VB 控制结构

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 4.1 顺序结构 4.2 选择结构 4.3 循环结构 4.4 其它辅助控制语句 4.5 综合应用 4.6 程序调试 第4章 VB控制结构

  2. (1)顺序结构 各语句按出现的先后次序执行 a A B b 4.1 顺序结构 VB具有结构化程序设计的三种程序控制结构,即顺序结构、选择结构、循环结构,是程序设计的基础。 用传统流程图表示为 本章目录

  3. (2)选择结构 传统流程图: a 成立 不成立 条件? A B b 根据条件决定执行的语句

  4. (3)循环结构 a a 循环体 不成立 条件? 条件? 成立 不成立 成立 循环体 b b 根据条件重复执行语句(称为循环体) I 、 当型循环结构 II 、直到型循环结构

  5. 4.1 顺序结构 • 一般程序设计语言中顺序结构的语句主要: • 赋值语句和 输入/输出语句等。 • 在VB中 • 赋值语句 • 输入/输出通过: • 文本框控件、标签控件、 • InputBox函数、MsgBox函数和过程 • Print方法等来实现。

  6. 4.1.1 赋值语句 形式: 变量名=表达式 [对象名.] 属性名=表达式 功能:计算表达式的值,再将此值赋给变量或对 象属性。 给变量赋值和设定属性是VB编程中常见的两个任务。例如: n = n + 1'计数累加 Text1.Text="" ' 清除文本框的内容 Text1.Text="欢迎使用VB " ' 文本框显示字符串 本章目录

  7. 赋值语句注意点 • “=”符号有两个意义 • 赋值号、关系运算符等号 • 形式相同,系统会根据所处的位置判断符号的意义。 • 赋值号左边只能是变量,不能是常量、常数符号、表达式。下面均为错误的赋值语句: • Now()=x+y '左边是表达式(函数) • 5=sqr(s)+x+y ‘ 左边是常量 • X+y=z ‘ 左边是表达式 本章目录

  8. 4.1.2 数据输出和输入 1. InputBox函数 打开一个对话框,等待用户输入,返回字符串类型的输入值。 形式:InputBox(提示[,标题][,默认值][,x坐标位置][,y坐标位置]) 注意:提示项不能省略。 若要多行提示,可在每行 行末加回车换行vbCrLf。 例4.1利用InputBox输入基本工资和营业额,按营业额的5%提成,计算实发工资并显示。 本章目录

  9. 2.MsgBox函数和MsgBox过程 打开一个信息框,等待用户选择一个按按钮。 MsgBox函数返回所选按钮的值, MsgBox过程不返回值 MsgBox函数形式: 变量[%] = MsgBox(提示[,按钮][,标题]) MsgBox过程形式: MsgBox提示[,按钮][,标题] 按钮项是一整型表达式,决定信息框按钮的数目和类型及出现在信息框上的图标形式。 本章目录

  10. 分组 内 部 常 数 值 描 述 按钮 数目 VBOkOnly 0 确定按钮 VBOkCancel 1 确定、取消按钮 VBAboutRetryIgnore 2 终止、重试、忽略按钮 VBYesNoCancel 3 是、否、取消按钮 VBYesNo 4 是、否按钮 VBRetryCancel 5 重试、取消按钮 图标 类型 VBCritical 16 关键信息图标 VBQuestion 32 询问信息图标 VBExclamation 48 警告信息图标 VBInformation 64 信息图标 默认 按钮 VBDefaultButton1 0 第1个按钮为默认 VBDefaultButton2 56 第2个按钮为默认 VBDefaultButton3 512 第3个按钮为默认 MsgBox按钮设置 本章目录

  11. MsgBox所选按钮返回值 例4.2 编一账号和密码输入的检验程序,当输入不正确,如账号为非数字字符,密码不正确等,显示有关信息,再输入。 本章目录

  12. 3.Print方法 作用:在对象上输出信息。 对象.Print[Spc(n)|Tab(n)][输出列表][;|,] 对象:窗体、图形框或打印机。缺省为窗体。 Spc(n)函数:从当前位置起空n个空格 Tab(n)函数:从最左端开始计算的第n列 分号:定位在上一个被显示的字符之后 逗号:定位在下一个打印区开始处(每区14列) Print语句尾无分号或逗号,输出后换行 例4.3 Print方法输出图形 利用String函数显示重复字符 利用循环结构、Spc、Tab函数显示有规律图形

  13. 符号 作 用 表达式 格式字符串 显示结果 0 用0填充不足的位置 1234.567 "00000.0000" 01234.5670 # 位置不足时不填充0 1234.567 "#####.####" 1234.567 , 千分位 1234.567 "##,##0.000" 1,234.567 % 数值乘以100,加百分号 1234.567 "####.##%" 123456.7% $ 在数字前强加$ 1234.567 "$###.##" $1234.57 E+ 用指数表示 1234.567 "0.00E+00" 1.23E-01 4.Format格式输出函数 形式:Format (表达式[, "格式字符串"]) 常用数值格式化符及举例 例4.4 利用Format函数显示数值。

  14. 4.2 选择结构 • 计算机要处理的问题往往是复杂多变的,仅采用顺序结构是不够的。 • 必须利用选择结构等来解决实际应用中的各种问题。 • VB中主要通过If条件语句和Select情况语句来实现。它们都是对条件进行判断,根据判断结果,选择执行不同的分支。 本章目录

  15. 4.2.1 If条件语句 1. If…Then语句(单分支结构) If <表达式> Then 语句块(可以是一句或多句语句) End If 或If <表达式> Then <语句> 表达式:关系表达式、逻辑表达式,算术表达式。表达式值按非零为True,零为False进行判断。 该语句的作用是当表达式的值为True,执行Then后面的语句块,否则不做任何操作。 IF演示 本章目录

  16. 单分支结构 例:已知两个数x和y,比较它们的大小,使得x大于y。 If x<y Then t=x x=y y=t End If 或 If x<y Then t=x: x=y: y=t 简单If形式无End If时,只能是一句语句或语句间用冒号分隔,而且必须在一行上书写。 本章目录

  17. 双分支结构 2. If…Then…Else语句 If 表达式Then 语句块1 Else 语句块2 End If 或 If 表达式Then语句1Else语句2 当表达式的值为True时,执行Then后面的语句块1,否则执行Else后面的语句块2 本章目录

  18. 双分支结构例 计算分段函数 单分支y=cos(x)-x^3+3*x 结构实现 If x<>0 Then y=sin(x)+sqrt (x*x+1) If x<>0 Then 双分支y=sin(x)+sqr (x*x+1) Else 结构实现y=cos(x)-x^3+3*x End If 本章目录

  19. 多分支结构 3. If…Then…ElseIf 语句 If 表达式1 Then 语句块1 ElseIf 表达式2 Then 语句块2 … [Else 语句块 n+1] End If 作用:根据不同的表达式值确定执行哪个语句块 本章目录

  20. 多分支结构例 例4.7 已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。 If UCase(ch) >= "A" And UCase(ch) <= "Z" Then MsgBox(ch + "是字母字符") '考虑大小写字母 ElseIf ch >= " 0" And ch <= "9" Then' 数字字符 MsgBox(ch + "是数字字符") Else ' 除上述字符以外的字符 MsgBox(ch + "是其他字符") EndIf 不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余分支不再执行;若条件都不满足,且有Else子句,则执行该语句块,否则什么也不执行。 ElseIf不能写成Else If 本章目录

  21. If语句的嵌套 If语句的嵌套是指If或Else后面的语句块中又包含If语 If 表达式1 Then If 表达式2 Then … End If … End If If x<y Then t=x: x=y: y=t If y<z Then t=y: y=z: z=t If x<y Then t=x: x=y: y=t End If End If 例 已知x,y,z三个数,使得x>y>z 用一个IF语句和一个嵌套的IF语句实现 本章目录

  22. 4.2.2 Select Case语句 Select Case变量或表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 … [Case Else 语句块n+1] End Select • 表达式列表与变量或表达式的类型必须相同,是下面4种形式之一 : • 表达式 例: "A" • 一组用逗号分隔的枚举值2,4,6,8 • 表达式1 To 表达式2 60 To 100 • Is 关系运算符表达式 Is < 60 本章目录

  23. Select Case语句例 将例4.7 改用 Select Case 语句实现: Select Case ch Case "a" To "z","A" To "Z" MsgBox( ch + "是字母字符") Case "0" To "9" MsgBox (ch +"是数字字符") Case Else MsgBox( ch + "是其他字符") End Select 多分支结构,用Select Case语句比If…Then…ElseIf语句直观,程序可读性强。但不是所有的多分支结构均可用Select Case语句代替If…Then…ElseIf语句。 本章目录

  24. Select Case语句例 例4.9判断坐标点(x,y),落在哪个象限。 代码二 Select Case x,y Case x > 0 And y > 0 MsgBox(“在第一象限”) Case x < 0 And y > 0 MsgBox(“在第二象限”) Case x < 0 And y < 0 MsgBox(“在第三象限”) Case x > 0 And y <0 MsgBox(“在第四象限”) End Select 代码一 If x > 0 And y >0 Then MsgBox("在第一象限") ElseIf x < 0 And y > 0 Then MsgBox("在第二象限") ElseIf x < 0 And y < 0 Then MsgBox("在第三象限") ElseIf x > 0 And y <0 Then MsgBox("在第四象限") End If 代码二错误: 1. Select Case 后不能出现多个变量 2. Case后不能出现变量及有关运算符 本章目录

  25. 4.2.3 条件函数 (1) IIf函数 IIf(表达式,表达式为真时的值,表达式为假时的值) IIf函数是If … Then …Else 结构的简洁表示 例如,将x,y中大的数,放入Tmax变量中: Tmax = IIf(x > y,x,y) 该语句与如下语句等价: If x > y Then Tmax = x Else Tmax = y 本章目录

  26. 4.2.3 条件函数 Dim nop As Integer, op As Char Randomize() nop = Int(Rnd() * 4 + 1) op = Choose(nop, "+", "-", "×", "÷") MsgBox("nop=" & nop & " op=" & op) (2) Choose函数 Choose(整数表达式,选项列表) 根据表达式的值i,返回选项列表中第i个选项。如果整数表达式的值越出选项范围时,返回Null。 例 根据Nop的值,得到+、-、×、÷中的某运算符: Op= Choose(Nop,"+","-","×","÷") 例4.10 根据当前日期,显示今日是星期几。 t = Choose(Weekday(Now), “星期日”, “星期一”, “星期二”, “星期三”, “星期四”, “星期五”, “星期六”) MsgBox("今天是:" & Now & t) 本章目录

  27. 4.3 循环结构 • 计算机最擅长的功能之一就是按规定的条件,重复执行某些操作。 • 例如,按照人口某增长率,对人口增长统计;根据各课程的学分、绩点和学生的成绩,统计每个学生的平均绩点等。 • 这类问题都可通过循环结构来方便地实现。VB中提供了主要两类循环语句: • For循环语句(一般已知循环次数); • Do条件型循环语句(一般未知循环次数). 本章目录

  28. >0 初值<终值 =1 时,可省略 <0 初值>终值 =0 死循环 步长 4.3.1 For循环语句 Dim i%, sum% For i = 1 To 100 Step 2 sum = sum + i Next i MsgBox(sum) For循环语句用于控制循环次数预知的循环结构。 For 循环变量 =初值 To 终值[Step 步长] 语句块 [Exit For] 语句块 Next 循环变量 循环变量必须为数值型。 循环次数 例4.11计算1~100的奇数和 本章目录

  29. For循环语句 循环流程: (1) 循环变量被赋初值,它仅被赋值一次。 (2) 判断循环变量是否在终值内,如果是,执行循环体;如果否,结束循环,执行Next的下一语句。 (3) 循环变量加步长,转(2),继续循环 例4.12 将可打印的ASCII码制成表格输出 本章目录

  30. 4.3.2 Do…Loop循环语句 Do循环用于控制循环次数未知的循环结构。 形式1: Do { While|Until }<条件> 语句块 [Exit Do 语句块] Loop 形式1为先判断后执行,有可能一次也不执行; 形式2为先执行后判断,至少执行一次。 形式2: Do 语句块 [Exit Do 语句块] Loop { While|Until} <条件> 本章目录

  31. Do…Loop流程 本章目录

  32. 循环例题 例4.13 我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。 解此问题两种方法,可根据公式: 直接利用标准函数对数可求得,但求得的年数不为整数;也可利用循环求得 。 本章目录

  33. 4.3.3 循环的嵌套 在一个循环体内又包含了一个完整的循环结构称为循环的嵌套。循环嵌套对For循环语句和Do…Loop语句均适用。 例4.14 打印九九乘法表 思考:打印上三角或下三角程序如何改动? 本章目录

  34. 4.4 其他辅助控制语句 4.4.1 Go To 语句 无条件地转移到标号或行号指定的那行语句。 Go To {标号|行号} 注意:标号是字符序列,首字符必须为字母,标号后应有冒号;行号是一个数字序列; 例4.15 判断输入的数是否为素数 素数就是除1和本身以外,不能被其他任何整数整除的数。根据此定义,判别某数m是否为素数最简单的方法就是依次用i=2~m-1去除,只要有一个数能整除m,m就不是素数;否则m是素数。 要求一定范围内的素数,只要将m作为外循环体变量。 本章目录

  35. 4.4.2 退出和结束语句 1.Exit语句 VB中有多种形式的Exit语句,用于退出某种控制结构的执行。Exit的形式如下: Exit For、Exit Do、 Exit Sub、Exit Function 2.End语句 独立的End语句用于结束一个程序的运行,它可以放在任何事件过程中。 本章目录

  36. 4.5 综合应用 例4.16 由计算机自动产生四则运算题,并能判断答案的正确性。 设计思路: (1)通过随机函数Rnd产生试题的操作数和运算符,运算符+、-、×、÷可对应编号1~4。产生表达式通过Form_Load事件过程。 (2)需要有一个全局变量保存四则运算题的正确答案,用户答案可通过文本框输入。 (3)本题主要将随机函数、If语句、Select语句综合在一起使用。 本章目录

  37. 综合应用-最大公约数 例4.17用辗转相除法求两自然数的最大公约数。 求最大公约数的算法思想: (1)对于两数m,n,使得m>n (2) m除以n得余数r 例 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 MsgBox “最大公约数=” & n • 辗转相减法 • m=m-n m>n • n=n-m n>m • 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 (3)若r=0,则n为最大公约数,结束;否则执行(4) (4)mçn,nçr,再重复执行(2) 本章目录

  38. 综合应用-级数求和 例4.18求自然对数e的近似值,其误差小于0.00001。 近似公式 分析:本例涉及到程序设计中两个重要运算: 累加 、连乘i!。 累加:在原有和的基础上再加一个数; 连乘:在原有积的基础上再乘以一个数。 该题先求i!,再将1/i!进行累加,循环次数未知,可先设置一个次数很大的值,然后在循环体内判断是否到达精度,也可用Do While来实现。 本章目录

  39. 综合应用-试凑法 例4.19 百元买百鸡。假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。 分析: (1) 设母鸡、公鸡、小鸡各为x、y、z,列出方程为: x+y+z= 100 3x+2y+0.5z = 100 三个未知数,两个方程,此题求若干个整数解。 (2) 计算机求解此类问题,采用试凑法(也称穷举法)来实现,即将可能出现的各种情况一一罗列测试,判断是否满足条件,采用循环结构来实现。 本章目录

  40. 综合应用-递推法 递推(迭代)法基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次都从旧值的基础上递推出新值,并由新值代替旧值。 例4.20 小猴有桃若干,第一天吃掉一半多一个;第二天吃剩下桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天只剩一个,问小猴原有桃多少? 分析:用后一天的数推出前一天的桃子数。设第n天的桃子为xn,是前一天的桃子的二分之一减去1。 迭代法类似的应用求高次方程的近似根。 本章目录

  41. 4.6 程序调试 • 随着程序的复杂性提高,程序中的错误也伴随而来。 • 对初学者,看到出现错误不要害怕,关键是如何改正错误,失败是成功之母。 • 上机的目的,不光是为了验证你编写的程序的正确性,还要通过上机调试,学会查找和纠正错误的方法和能力。 • VB为调试程序提供了一组交互的、有效的调试工具。 本章目录

  42. 错误的代码显示为红色,窗口上显示出错的原因。 4.6.1 错误类型 语法错误、运行时错误和逻辑错误三类。 1、语法错误 本章目录

  43. 2、运行错误 指令代码执行了一非法操作引起的。例如,类型不匹配、试图打开一个不存在的文件等。程序会自动中断,并给出有关的错误信息。 本章目录

  44. 3、逻辑错误 程序运行后,得不到所期望的结果,这说明程序存在逻辑错误。 例如,运算符使用不正确、语句的次序不对、循环语句的起始、终值不正确等。 通常,逻辑错误不会产生错误提示信息,故错误较难排除,需要程序员仔细地阅读分析程序,并具有调试程序的经验。 本章目录

  45. 4.6.2 调试和排错 VB的三种模式 1、 设计模式(设计) 可以进行程序的界面设计、属性设置、代码编写等。 2、 运行模式(运行) 执行启动命令进入运行模式。在此阶段,可以查看程序代码,但不能修改。 3、 中断模式(Break) 执行中断命令,进入中断模式。在中断模式下可以查看代码、修改代码、检查数据。 本章目录

  46. 按下F9键 按F8键跟踪执行 调试和排错-插入断点 鼠标指向所关心的变量 本章目录

  47. 本章小节 • 结构化程序设计三种结构 • 顺序结构、选择结构、循环结构 • If…Then语句、Select Case语句、For与Do循环语句 • 赋值语句与复合赋值语句 • 数据输出和输入 • InputBox、MsgBox • 常用算法 素数判定、级数求和、试凑法、迭代法解方程

  48. 思考题 1. 结构化程序设计有哪三种基本结构? 2. MseBox与InputBox有何区别? 3.多分支If语句与Select Case语句有何区别? 4.如果事先不知道循环次数,如何用For…Next结构实现循环? 5.语法错误、运行时错误和逻辑错误之间有何区别? 本章目录

More Related