48
第4第 VB 第第第第 4.1 顺顺顺顺 4.2 顺顺顺顺 4.3 顺顺顺顺 4.4 顺顺顺顺顺顺顺顺 4.5 顺顺顺顺 4.6 顺顺顺顺

第 4 章 VB 控制结构

Embed Size (px)

DESCRIPTION

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. 根据条件决定执行的语句. - PowerPoint PPT Presentation

Citation preview

Page 1: 第 4 章   VB 控制结构

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

Page 2: 第 4 章   VB 控制结构

4.1 顺序结构 VB 具有结构化程序设计的三种程序控制结构,即顺序结构、选择结构、循环结构,是程序设计的基础。

本章目录

( 1 )顺序结构 各语句按出现的先后次序执行

b

A

B

a

用传统流程图表示为

Page 3: 第 4 章   VB 控制结构

( 2 )选择结构

传统流程图 :

b

a

条件?

A B

不成立成立

根据条件决定执行的语句

Page 4: 第 4 章   VB 控制结构

( 3 )循环结构

I 、 当型循环结构

条件?成立

循环体

b

不成立

a a

循环体

b

不成立 成立条件?

II 、直到型循环结构

根据条件重复执行语句 ( 称为循环体 )

Page 5: 第 4 章   VB 控制结构

4.1 顺序结构 一般程序设计语言中顺序结构的语句主要 :

赋值语句和 输入 / 输出语句等。 在 VB 中 赋值语句 输入 / 输出通过 :

文本框控件、标签控件、 InputBox 函数、 MsgBox 函数和过程 Print 方法等来实现。

Page 6: 第 4 章   VB 控制结构

4.1.1 赋值语句 形式: 变量名=表达式 [ 对象名 .] 属性名 = 表达式 功能:计算表达式的值,再将此值赋给变量或对

象属性。给变量赋值和设定属性是 VB 编程中常见的两个任务。例如:n = n + 1 ' 计数累加

Text1.Text = "" ' 清除文本框的内容Text1.Text = " 欢迎使用 VB " ' 文本框显示字符串 本章目录

Page 7: 第 4 章   VB 控制结构

赋值语句注意点 “=” 符号有两个意义

赋值号、关系运算符等号 形式相同 , 系统会根据所处的位置判断符号的意义。 赋值号左边只能是变量,不能是常量、常数符号、

表达式。下面均为错误的赋值语句:Now()=x+y ' 左边是表达式 ( 函数 )

5=sqr(s)+x+y ‘ 左边是常量X+y=z ‘ 左边是表达式

本章目录

Page 8: 第 4 章   VB 控制结构

1. InputBox 函数 打开一个对话框,等待用户输入,返回字符串类型的输入值。形式: InputBox( 提示 [, 标题 ][, 默认值 ][,x坐标位置 ][,y 坐标位置 ])

4.1.2 数据输出和输入

本章目录

注意 : 提示项不能省略。若要多行提示,可在每行行末加回车换行 vbCrLf 。

例 4.1 利用 InputBox 输入基本工资和营业额,按营业额的 5%提成,计算实发工资并显示。

Page 9: 第 4 章   VB 控制结构

打开一个信息框,等待用户选择一个按按钮。 MsgBox 函数返回所选按钮的值, MsgBox 过程不返回值MsgBox 函数形式: 变量 [%] = MsgBox( 提示 [, 按钮 ][, 标题 ])

MsgBox 过程形式: MsgBox 提示 [, 按钮 ][, 标题 ]按钮项是一整型表达式,决定信息框按钮的数目和类型及出现在信息框上的图标形式。

2.MsgBox 函数和 MsgBox 过程

本章目录

Page 10: 第 4 章   VB 控制结构

MsgBox 按钮设置

第 3 个按钮为默认512VBDefaultButton3

第 2 个按钮为默认 56VBDefaultButton2

第 1 个按钮为默认 0VBDefaultButton1默认按钮

信息图标 64VBInformation

警告信息图标 48VBExclamation

询问信息图标 32VBQuestion

关键信息图标 16VBCritical

图标类型

重试、取消按钮 5VBRetryCancel

是、否按钮 4VBYesNo

是、否、取消按钮 3VBYesNoCancel

终止、重试、忽略按钮 2VBAboutRetryIgnore

确定、取消按钮 1VBOkCancel

确定按钮 0VBOkOnly

按钮数目

描 述值内 部 常 数分组

本章目录

Page 11: 第 4 章   VB 控制结构

MsgBox 所选按钮返回值

例 4.2 编一账号和密码输入的检验程序,当输入不正确,如账号为非数字字符,密码不正确等,显示有关信息,再输入。

本章目录

内部常数 返回值 被单击的按钮

vbOk 1 确定vbCancel 2 取消vbAbort 3 终止vbRetry 4 重试vbIgnore 5 忽略vbYes 6 是vbNo 7 否

Page 12: 第 4 章   VB 控制结构

3.Print 方法作用 : 在对象上输出信息。对象 .Print[Spc(n)|Tab(n)][ 输出列表 ][;|,]对象:窗体、图形框或打印机。缺省为窗体。Spc(n) 函数:从当前位置起空 n 个空格Tab(n) 函数:从最左端开始计算的第 n 列分号:定位在上一个被显示的字符之后逗号:定位在下一个打印区开始处 ( 每区 14

列 )Print 语句尾无分号或逗号,输出后换行例 4.3 Print 方法输出图形 利用 String 函数显示重复字符 利用循环结构、 Spc 、 Tab 函数显示有规律图

Page 13: 第 4 章   VB 控制结构

4.Format 格式输出函数 形式: Format ( 表达式 [, " 格式字符串 "])

常用数值格式化符及举例

1.23E-01"0.00E+00"1234.567用指数表示E+

$1234.57"$###.##"1234.567在数字前强加$$123456.7%"####.##%"1234.567数值乘以 100 ,加百分号%

1,234.567"##,##0.000"1234.567千分位,1234.567"#####.####"1234.567位置不足时不填充 0#

01234.5670"00000.0000"1234.567用 0 填充不足的位置0

显示结果格式字符串表达式作 用符号

例 4.4 利用 Format 函数显示数值。

Page 14: 第 4 章   VB 控制结构

4.2 选择结构

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

本章目录

Page 15: 第 4 章   VB 控制结构

4.2.1 If 条件语句 1. If…Then 语句 (单分支结构 )

If <表达式 > Then 语句块(可以是一句或多句语句) End If或 If <表达式 > Then <语句 >

表达式:关系表达式、逻辑表达式,算术表达式。表达式值按非零为 True ,零为 False进行判断。该语句的作用是当表达式的值为 True ,执行 Then后面的语句块,否则不做任何操作。

表达式

语句块

T

F

本章目录

IF 演示

Page 16: 第 4 章   VB 控制结构

单分支结构 例:已知两个数 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 时,只能是一句语句或语句间用冒号分隔,而且必须在一行上书写。

t

y x

本章目录

Page 17: 第 4 章   VB 控制结构

双分支结构2. If…Then…Else 语句If 表达式 Then

语句块 1Else

语句块 2End If或 If 表达式 Then 语句 1 Else 语句 2

当表达式的值为 True时,执行 Then 后面的语句块 1 ,否则执行 Else 后面的语句块2

表达式

F

语句块1

T

语句块2

本章目录

Page 18: 第 4 章   VB 控制结构

双分支结构例

计算分段函数 yx x x

x x x x

sin

cos

2

3

1 0

3 0

单分支 y=cos(x)- x^3+3*x 结构实现 If x<>0 Then y=sin(x)+sqrt (x*x+1)

单分支 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

If x<>0 Then 双分支 y=sin(x)+sqr (x*x+1) Else结构实现 y=cos(x)- x^3+3*x End If

本章目录

Page 19: 第 4 章   VB 控制结构

多分支结构 3. If…Then…ElseIf 语句 If 表达式 1 Then

语句块 1 ElseIf 表达式 2 Then

语句块 2 …

[Else 语句块 n+1] End If

表达式 2

表达式 n

T

F

T

F

语句块 n+1

语句块 2

语句块 1

F T

表达式 1

语句块 n

作用:根据不同的表达式值确定执行哪个语句块

本章目录

Page 20: 第 4 章   VB 控制结构

例 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 + " 是其他字符 ") End If不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余分支不再执行;若条件都不满足,且有 Else 子句,则执行该语句块,否则什么也不执行。 ElseIf 不能写成 Else If

多分支结构例

本章目录

Page 21: 第 4 章   VB 控制结构

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 IfEnd If

If 语句的嵌套

例 已知 x , y , z 三个数,使得 x>y>z用一个 IF 语句和一个嵌套的 IF 语句实现

本章目录

Page 22: 第 4 章   VB 控制结构

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

表达式列表与变量或表达式的类型必须相同,是下面 4 种形式之一 :•表达式 例 : "A"

•一组用逗号分隔的枚举值 2,4,6,8

•表达式 1 To 表达式 2 60 To 100

•Is 关系运算符表达式 Is < 60本章目录

Page 23: 第 4 章   VB 控制结构

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 ElseMsgBox( ch + " 是其他字符 ")

End Select多分支结构,用 Select Case 语句比 If…Then…ElseIf 语句直观,程序可读性强。但不是所有的多分支结构均可用 Select Case 语句代替 If…Then…ElseIf 语句。

本章目录

Page 24: 第 4 章   VB 控制结构

Select Case 语句例例 4.9 判断坐标点 (x , y) ,落在哪个象限。

代码一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

代码二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

代码二错误:1. Select Case 后不能出现多个变量2. Case 后不能出现变量及有关运算符

本章目录

Page 25: 第 4 章   VB 控制结构

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

本章目录

Page 26: 第 4 章   VB 控制结构

4.2.3 条件函数 (2) Choose 函数 Choose( 整数表达式,选项列表 )根据表达式的值 i, 返回选项列表中第 i 个选项。如果整数表达式的值越出选项范围时,返回 Null。例 根据 Nop 的值,得到 +、 -、×、÷中的某运算符:Op= Choose(Nop , "+" , "-" , "×" , "÷")

例 4.10 根据当前日期,显示今日是星期几。t = Choose(Weekday(Now), “星期日” , “星期一” , “星期二” , “星期三” , “星期四” , “星期五” , “星期六” )

MsgBox("今天是: " & Now & t) 本章目录

Dim nop As Integer, op As Char

Randomize()

nop = Int(Rnd() * 4 + 1)

op = Choose(nop, "+", "-", "×", "÷")

MsgBox("nop=" & nop & " op=" & op)

Page 27: 第 4 章   VB 控制结构

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

For 循环语句 ( 一般已知循环次数); Do 条件型循环语句 ( 一般未知循环次数 ).

本章目录

Page 28: 第 4 章   VB 控制结构

4.3.1 For 循环语句 For 循环语句用于控制循环次数预知的循环结构。For 循环变量 =初值 To 终值 [Step 步长 ]

语句块[Exit For]语句块

Next 循环变量循环变量必须为数值型。

循环次数 )1( 步长

初值终值Int

>0 初值 < 终值 =1 时,可省略<0 初值 > 终值=0 死循环

步长

例 4.11 计算 1~100 的奇数和

本章目录

Dim i%, sum%

For i = 1 To 100 Step 2

sum = sum + i

Next i

MsgBox(sum)

Page 29: 第 4 章   VB 控制结构

For 循环语句 循环流程:(1) 循环变量被赋初值,它仅被赋值一次。(2) 判断循环变量是否在终值内,如果是,执行循环体;如果否,结束循环,执行 Next 的下一语句。(3) 循环变量加步长,转 (2) ,继续循环

循环流程:(1) 循环变量被赋初值,它仅被赋值一次。(2) 判断循环变量是否在终值内,如果是,执行循环体;如果否,结束循环,执行 Next 的下一语句。(3) 循环变量加步长,转 (2) ,继续循环

T

T ≤循环变量 终值

语句块

语句块

循环变量=循环变量+步长

F

循环变量=初值

有 Exit For

F

Next 的下一语句

例 4.12 将可打印的ASCII码制成表格输出

本章目录

Page 30: 第 4 章   VB 控制结构

4.3.2 Do…Loop 循环语句 Do 循环用于控制循环次数未知的循环结构。形式 1 : Do { While|Until }< 条件 > 语句块 [Exit Do 语句块 ]Loop

形式 1 为先判断后执行,有可能一次也不执行;形式 2 为先执行后判断,至少执行一次。

形式 2 :Do 语句块 [Exit Do 语句块 ]Loop { While|Until} < 条件>

本章目录

Page 31: 第 4 章   VB 控制结构

Do…Loop 流程

F

T

语句块

语句块

Do While…Loop

表达式列表 1

有 Exit Do

F

T

T

F

语句块

语句块

表达式列表 1

Do …Loop While

有 Exit Do F

T

本章目录

Page 32: 第 4 章   VB 控制结构

循环例题例 4.13 我国有 13 亿人口,按人口年增长 0.8% 计算,多少年后我国人口超过 26 亿。解此问题两种方法,可根据公式:

)008.1log(

)2log(n

0.008)13(126 n

直接利用标准函数对数可求得,但求得的年数不为整数;也可利用循环求得 。

本章目录

Page 33: 第 4 章   VB 控制结构

4.3.3 循环的嵌套 在一个循环体内又包含了一个完整的循环结构称为循环的嵌套。循环嵌套对 For 循环语句和Do…Loop 语句均适用。例 4.14 打印九九乘法表

思考:打印上三角或下三角程序如何改动?本章目录

Page 34: 第 4 章   VB 控制结构

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

要求一定范围内的素数,只要将 m 作为外循环体变量。 要求一定范围内的素数,只要将 m 作为外循环体变量。

本章目录

Page 35: 第 4 章   VB 控制结构

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

本章目录

Page 36: 第 4 章   VB 控制结构

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

本章目录

Page 37: 第 4 章   VB 控制结构

综合应用 -最大公约数例 4.17 用辗转相除法求两自然数的最大公约数。求最大公约数的算法思想:

(1) 对于两数 m , n ,使得 m>n

(2) m除以 n得余数 r

例 m=14 ,n=6 的最大公约数If m < n Then t = m: m = n: n = tr=m mod nDo While (r <> 0) m=n n=r r= m mod nLoopMsgBox “ 最大公约数 =” & n

例 m=14 ,n=6 的最大公约数If m < n Then t = m: m = n: n = tr=m mod nDo While (r <> 0) m=n n=r r= m mod nLoopMsgBox “ 最大公约数 =” & n

辗转相减法 m=m-n m>n n=n-m n>m 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 2Loop

辗转相减法 m=m-n m>n n=n-m n>m 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 2Loop

(3)若 r=0 ,则 n 为最大公约数,结束;否则执行 (4)

(4)mn , nr ,再重复执行 (2)

本章目录

Page 38: 第 4 章   VB 控制结构

综合应用 - 级数求和例 4.18 求自然对数 e 的近似值,其误差小于 0.00001 。近似公式

分析:本例涉及到程序设计中两个重要运算: 累加 、连乘 i!。累加:在原有和的基础上再加一个数;连乘:在原有积的基础上再乘以一个数。该题先求 i!,再将 1/i!进行累加,循环次数未知,可先设置一个次数很大的值,然后在循环体内判断是否到达精度,也可用 Do While来实现。

本章目录

Page 39: 第 4 章   VB 控制结构

综合应用 -试凑法例 4.19 百元买百鸡。假定小鸡每只 5角,公鸡每只 2元,母鸡每只 3元,编程求解购鸡方案。分析:(1) 设母鸡、公鸡、小鸡各为 x 、 y 、 z ,列出方程为:

x+y+z= 1003x+2y+0.5z = 100

三个未知数,两个方程,此题求若干个整数解。(2) 计算机求解此类问题,采用试凑法 (也称穷举法 )来实现,即将可能出现的各种情况一一罗列测试,判断是否满足条件,采用循环结构来实现。

本章目录

Page 40: 第 4 章   VB 控制结构

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

2)1(12

111 nnnn xxxx 也就是:即:

迭代法类似的应用求高次方程的近似根。 本章目录

Page 41: 第 4 章   VB 控制结构

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

本章目录

Page 42: 第 4 章   VB 控制结构

4.6.1 错误类型语法错误、运行时错误和逻辑错误三类。

1 、语法错误

本章目录

错误的代码显示为红色,窗口上显示出错的原因。

Page 43: 第 4 章   VB 控制结构

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

本章目录

Page 44: 第 4 章   VB 控制结构

3 、逻辑错误

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

本章目录

Page 45: 第 4 章   VB 控制结构

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

本章目录

Page 46: 第 4 章   VB 控制结构

调试和排错 -插入断点

按下 F9

按 F8 键跟踪执行

鼠标指向所关心的变量

本章目录

Page 47: 第 4 章   VB 控制结构

本章小节结构化程序设计三种结构

顺序结构、选择结构、循环结构 If…Then 语句、 Select Case 语句、 For与 Do 循环语句 赋值语句与复合赋值语句数据输出和输入

InputBox 、 MsgBox常用算法

素数判定、级数求和、试凑法、迭代法解方程

Page 48: 第 4 章   VB 控制结构

思考题1. 结构化程序设计有哪三种基本结构?2. MseBox与 InputBox 有何区别?3.多分支 If 语句与 Select Case 语句有何区别?4. 如果事先不知道循环次数,如何用 For…Ne

xt 结构实现循环?5. 语法错误、运行时错误和逻辑错误之间有何区别?

本章目录