510 likes | 629 Views
Visual Basic 程序设计简明教程 第三版. 目 录. 第 1 章 Visual Basic 程序设计概述 第 2 章 VB 可视化编程基础 第 3 章 VB 语言基础 第 4 章 VB 控制结构 第 5 章 数组 和自定义类型 第 6 章 过 程 第 7 章 用户界面设计 第 8 章 数据文件 第 9 章 图形操作 第 10 章 数据库应用基础. 教学安排. 4.1 顺序结构 4.2 选择结构 4.3 循环结构 4.4 其它辅助控制语句 4.5 综合应用 4.6 程序调试.
E N D
Visual Basic 程序设计简明教程 第三版
目 录 第1章 Visual Basic程序设计概述 第2章 VB可视化编程基础 第3章 VB语言基础 第4章 VB控制结构 第5章 数组和自定义类型 第6章 过 程 第7章 用户界面设计 第8章 数据文件 第9章 图形操作 第10章 数据库应用基础
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 根据条件决定执行的语句 传统流程图:
(3)循环结构 a a a 循环体 不成立 条件? 条件? 成立 不成立 成立 循环体 b b 根据条件重复执行语句(称为循环体) I 、 当型循环结构 II 、直到型循环结构
4.1 顺序结构 • 一般程序设计语言中顺序结构的语句主要: • 赋值语句和 输入/输出语句等。 • 在VB中 • 赋值语句 • 输入/输出通过: • 文本框控件、标签控件、 • InputBox函数、MsgBox函数和过程 • Print方法等来实现。
4.1.1 赋值语句 形式: 变量名=表达式 [对象名.] 属性名=表达式 功能:计算表达式的值,再将此值赋给变量或对 象属性。 给变量赋值和设定属性是VB编程中常见的两个任务。例如: n = n + 1'计数累加 Text1.Text="" ' 清除文本框的内容 Text1.Text="欢迎使用VB " ' 文本框显示字符串 本章目录
赋值语句注意点 • “=”符号有两个意义 • 赋值号、关系运算符等号 • 形式相同,系统会根据所处的位置判断符号的意义。 • 赋值号左边只能是变量,不能是常量、常数符号、表达式。下面均为错误的赋值语句: • Now()=x+y '左边是表达式(函数) • 5=sqr(s)+x+y ‘ 左边是常量 • X+y=z ‘ 左边是表达式 本章目录
4.1.2 数据输出和输入 1. InputBox函数 打开一个对话框,等待用户输入,返回字符串类型的输入值。 形式:InputBox(提示[,标题][,默认值][,x坐标位置][,y坐标位置]) 注意:提示项不能省略。 若要多行提示,可在每行 行末加回车换行vbCrLf。 例4.1利用InputBox输入基本工资和营业额,按营业额的5%提成,计算实发工资并显示。 本章目录
2.MsgBox函数和MsgBox过程 打开一个信息框,等待用户选择一个按钮。 MsgBox函数返回所选按钮的值, MsgBox过程不返回值 MsgBox函数形式: 变量[%] = MsgBox(提示[,按钮][,标题]) MsgBox过程形式: MsgBox提示[,按钮][,标题] 按钮项是一整型表达式,决定信息框按钮的数目和类型及出现在信息框上的图标形式。 本章目录
分组 内 部 常 数 值 描 述 按钮 数目 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按钮设置 本章目录
MsgBox所选按钮返回值 例4.2 编一账号和密码输入的检验程序,当输入不正确,如账号为非数字字符,密码不正确等,显示有关信息,再输入。 本章目录
3.Print方法 作用:在对象上输出信息。 对象.Print[Spc(n)|Tab(n)][输出列表][;|,] 对象:窗体、图形框或打印机。缺省为窗体。 Spc(n)函数:从当前位置起空n个空格 Tab(n)函数:从最左端开始计算的第n列 分号:定位在上一个被显示的字符之后 逗号:定位在下一个打印区开始处(每区14列) Print语句尾无分号或逗号,输出后换行 例4.3 Print方法输出图形 利用String函数显示重复字符 利用循环结构、Spc、Tab函数显示有规律图形
符号 作 用 表达式 格式字符串 显示结果 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+ 用指数表示 0.1234 "0.00E+00" 1.23E-01 4.Format格式输出函数 形式:Format (表达式[, "格式字符串"]) 常用数值格式化符及举例 例4.4 利用Format函数显示数值。
4.2 选择结构 • 计算机要处理的问题往往是复杂多变的,仅采用顺序结构是不够的。 • 必须利用选择结构等来解决实际应用中的各种问题。 • VB中主要通过If条件语句和Select情况语句来实现。它们都是对条件进行判断,根据判断结果,选择执行不同的分支。 本章目录
4.2.1 If条件语句 1. If…Then语句(单分支结构) If <表达式> Then 语句块(可以是一句或多句语句) End If 或If <表达式> Then <语句> 表达式:关系表达式、逻辑表达式,算术表达式。表达式值按非零为True,零为False进行判断。 该语句的作用是当表达式的值为True,执行Then后面的语句块,否则不做任何操作。 IF演示 本章目录
单分支结构 例:已知两个数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时,只能是一句语句或语句间用冒号分隔,而且必须在一行上书写。 本章目录
双分支结构 2. If…Then…Else语句 If 表达式Then 语句块1 Else 语句块2 End If 或 If 表达式Then语句1Else语句2 当表达式的值为True时,执行Then后面的语句块1,否则执行Else后面的语句块2 本章目录
双分支结构例 计算分段函数 单分支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 本章目录
多分支结构 3. If…Then…ElseIf 语句 If 表达式1 Then 语句块1 ElseIf 表达式2 Then 语句块2 … [Else 语句块 n+1] End If 作用:根据不同的表达式值确定执行哪个语句块 本章目录
多分支结构例 例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 本章目录
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语句实现 本章目录
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 本章目录
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语句。 本章目录
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后不能出现变量及有关运算符 本章目录
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 本章目录
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) 本章目录
4.3 循环结构 • 计算机最擅长的功能之一就是按规定的条件,重复执行某些操作。 • 例如,按照人口某增长率,对人口增长统计;根据各课程的学分、绩点和学生的成绩,统计每个学生的平均绩点等。 • 这类问题都可通过循环结构来方便地实现。VB中提供了主要两类循环语句: • For循环语句(一般已知循环次数); • Do条件型循环语句(一般未知循环次数). 本章目录
>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的奇数和 本章目录
For循环语句 循环流程: (1) 循环变量被赋初值,它仅被赋值一次。 (2) 判断循环变量是否在终值内,如果是,执行循环体;如果否,结束循环,执行Next的下一语句。 (3) 循环变量加步长,转(2),继续循环 例4.12 将可打印的ASCII码制成表格输出 本章目录
4.3.2 Do…Loop循环语句 Do循环用于控制循环次数未知的循环结构。 形式1: Do { While|Until }<条件> 语句块 [Exit Do 语句块] Loop 形式1为先判断后执行,有可能一次也不执行; 形式2为先执行后判断,至少执行一次。 形式2: Do 语句块 [Exit Do 语句块] Loop { While|Until} <条件> 本章目录
Do…Loop流程 本章目录
循环例题 例4.13 我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。 解此问题两种方法,可根据公式: 直接利用标准函数对数可求得,但求得的年数不为整数;也可利用循环求得 。 本章目录
4.3.3 循环的嵌套 在一个循环体内又包含了一个完整的循环结构称为循环的嵌套。循环嵌套对For循环语句和Do…Loop语句均适用。 例4.14 打印九九乘法表 思考:打印上三角或下三角程序如何改动? 本章目录
4.4 其他辅助控制语句 4.4.1 Go To 语句 无条件地转移到标号或行号指定的那行语句。 Go To {标号|行号} 注意:标号是字符序列,首字符必须为字母,标号后应有冒号;行号是一个数字序列; 例4.15 判断输入的数是否为素数 素数就是除1和本身以外,不能被其他任何整数整除的数。根据此定义,判别某数m是否为素数最简单的方法就是依次用i=2~m-1去除,只要有一个数能整除m,m就不是素数;否则m是素数。 要求一定范围内的素数,只要将m作为外循环体变量。 本章目录
4.4.2 退出和结束语句 1.Exit语句 VB中有多种形式的Exit语句,用于退出某种控制结构的执行。Exit的形式如下: Exit For、Exit Do、 Exit Sub、Exit Function 2.End语句 独立的End语句用于结束一个程序的运行,它可以放在任何事件过程中。 本章目录
4.5 综合应用 例4.16 由计算机自动产生四则运算题,并能判断答案的正确性。 设计思路: (1)通过随机函数Rnd产生试题的操作数和运算符,运算符+、-、×、÷可对应编号1~4。产生表达式通过Form_Load事件过程。 (2)需要有一个全局变量保存四则运算题的正确答案,用户答案可通过文本框输入。 (3)本题主要将随机函数、If语句、Select语句综合在一起使用。 本章目录
综合应用-最大公约数 例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) 本章目录
综合应用-级数求和 例4.18求自然对数e的近似值,其误差小于0.00001。 近似公式 分析:本例涉及到程序设计中两个重要运算: 累加 、连乘i!。 累加:在原有和的基础上再加一个数; 连乘:在原有积的基础上再乘以一个数。 该题先求i!,再将1/i!进行累加,循环次数未知,可先设置一个次数很大的值,然后在循环体内判断是否到达精度,也可用Do While来实现。 本章目录
综合应用-试凑法 例4.19 百元买百鸡。假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。 分析: (1) 设母鸡、公鸡、小鸡各为x、y、z,列出方程为: x+y+z= 100 3x+2y+0.5z = 100 三个未知数,两个方程,此题求若干个整数解。 (2) 计算机求解此类问题,采用试凑法(也称穷举法)来实现,即将可能出现的各种情况一一罗列测试,判断是否满足条件,采用循环结构来实现。 本章目录
综合应用-递推法 递推(迭代)法基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次都从旧值的基础上递推出新值,并由新值代替旧值。 例4.20 小猴有桃若干,第一天吃掉一半多一个;第二天吃剩下桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天只剩一个,问小猴原有桃多少? 分析:用后一天的数推出前一天的桃子数。设第n天的桃子为xn,是前一天的桃子的二分之一减去1。 迭代法类似的应用求高次方程的近似根。 本章目录
4.6 程序调试 • 随着程序的复杂性提高,程序中的错误也伴随而来。 • 对初学者,看到出现错误不要害怕,关键是如何改正错误,失败是成功之母。 • 上机的目的,不光是为了验证你编写的程序的正确性,还要通过上机调试,学会查找和纠正错误的方法和能力。 • VB为调试程序提供了一组交互的、有效的调试工具。 本章目录
错误的代码显示为红色,窗口上显示出错的原因。 4.6.1 错误类型 语法错误、运行时错误和逻辑错误三类。 1、语法错误 本章目录
2、运行错误 指令代码执行了一非法操作引起的。例如,类型不匹配、试图打开一个不存在的文件等。程序会自动中断,并给出有关的错误信息。 本章目录
3、逻辑错误 程序运行后,得不到所期望的结果,这说明程序存在逻辑错误。 例如,运算符使用不正确、语句的次序不对、循环语句的起始、终值不正确等。 通常,逻辑错误不会产生错误提示信息,故错误较难排除,需要程序员仔细地阅读分析程序,并具有调试程序的经验。 本章目录
4.6.2 调试和排错 VB的三种模式 1、 设计模式(设计) 可以进行程序的界面设计、属性设置、代码编写等。 2、 运行模式(运行) 执行启动命令进入运行模式。在此阶段,可以查看程序代码,但不能修改。 3、 中断模式(Break) 执行中断命令,进入中断模式。在中断模式下可以查看代码、修改代码、检查数据。 本章目录
按下F9键 按F8键跟踪执行 调试和排错-插入断点 鼠标指向所关心的变量 本章目录
本章小节 • 结构化程序设计三种结构 • 顺序结构、选择结构、循环结构 • If…Then语句、Select Case语句、For与Do循环语句 • 赋值语句与复合赋值语句 • 数据输出和输入 • InputBox、MsgBox • 常用算法 素数判定、级数求和、试凑法、迭代法解方程