当前位置:首页 >> 其它课程 >> 2010VB教案

2010VB教案


Visual Basic 程序设计基础
计算中心 许迅文 二〇一一年二月

Visual Basic 程序设计基础
第 1章 VB 程序与编程环境

第2章
第 3章 第 4章 第 5章 第 6章 第 7章 第 8章 第 9章

数据的类型、表示以及运算
程序界面与基本输入输出

控制结构 数组和自定义类型 过程 外存数据的访问 对话框与菜单的设计 绘图
2

几个基本概念
? 程序
计算机为完成某个任务(解决某个问题) 所必须执行的指令序列称为程序,它包括数据 结构(描述问题的每个对象及它们之间的关系) 和算法(对问题的处理规则)两个部分。

? 程序设计
程序员为使计算机完成某任务所进行的编 写程序的工作称为程序设计。

第1章 VB 程序与编程环境

3

几个基本概念
? 程序设计语言
程序设计语言是能被计算机直接或间接识 别和执行的语言,是程序员编写计算机程序的 工具。按照其发展过程,可分为机器语言、汇 编语言和高级语言三类。

? 继续回忆以下的基本概念
源程序、语言处理程序、编译程序、解释 程序、目标程序、连接程序、可执行程序。

第1章 VB 程序与编程环境

4

几个基本概念
? VB 程序设计语言
采用可视化界面设计、事件驱动的编程机 制和基于对象的程序设计方法,有利于软件的 开发和维护,极其易于被非计算机专业人员掌 握使用。

第1章 VB 程序与编程环境

5

观察一个 VB 程序(P1)
? 要求如下
1. 程序开始运行时,只能输入考试成绩和平时成 绩而不能做其他; 2. 输完考试成绩和平时成绩后, [ 计算 ]按钮可用; 3. 单击 [ 计算 ] 按钮,程序自动按考试成绩和平时 成绩以 7:3 的比例计算并显示总评成绩。

第1章 VB 程序与编程环境

6

观察一个 VB 程序(P1)
? 界面设计
① 窗体(Form) ②③ 标签(Label) ④⑤ 文本框(TextBox) ⑥ 图形框(PictureBox) ⑦ 命令按钮 (CommandButton) ⑧ 定时器(Timer)

第1章 VB 程序与编程环境

7

观察一个 VB 程序(P1)
? 动手编写程序
1. 2. 3. 4. 界面设计 ── 8个对象及其属性设置; 编写事件过程代码 ── 2个对象的事件过程; 运行 ── 解释方式,可跟踪调试; 保存工程 ── 保存窗体文件( .frm )和工程 文件(.vbp); 5. 生成可执行程序 ── 编译方式,可单独运行。

第1章 VB 程序与编程环境

8

如何学习 Visual Basic
? Visual Basic 程序通常分为两个部分
1. Visual 可视化界面设计 2. Basic 程序设计

前者界面设计直观、简单,容易掌握;后 者因涉及解题思路分析、算法设计、代码编写 等,难度较大。

第1章 VB 程序与编程环境

9

VB 的集成开发环境
工具箱 窗体窗口 工程资 源管理 器窗口 属性窗口

代码窗口 窗体布 局窗口

立即窗口

第1章 VB 程序与编程环境

10

VB 的集成开发环境
? 应用程序窗口(主窗口)
1. 2. 3. 4. 标题栏 菜单栏 工具栏 几个独立的窗口

? 窗体(Form)窗口
1. 用于设计 VB 程序的界面; 2. 设计模式的窗体中显示了网格点; 3. 一个应用程序至少有一个窗体窗口。
第1章 VB 程序与编程环境
11

VB 的集成开发环境
? 代码(Code)窗口
用于编辑窗体、标准模块中的代码。

? 属性(Properties)窗口
用于设置、显示或修改所选定窗体或控件的属性。

? 工程资源管理器(Project Explorer)窗口
保存应用程序所有的属性及组成它的所有文件。
? 工程文件的扩展名为 .vbp; ? 窗体文件的扩展名为 .frm; ? 标准模块文件的扩展名为 .bas。
第1章 VB 程序与编程环境
12

VB 的集成开发环境
? 工具箱(Toolbox)窗口
显示各种控件的制作工具,供用户在窗体上设计。

? 立即(Immediate)窗口
用于调试所编写的程序代码。

? 窗体布局( Form Layout )窗口
用于指定程序运行时在屏幕上的初始位置。

第1章 VB 程序与编程环境

13

创建应用程序的过程
? 建立一个应用程序分为几个步骤
1. 2. 3. 4. 5. 建立用户界面的对象 对象属性的设置 对象事件过程及编程 运行和调试程序 保存程序

第1章 VB 程序与编程环境

14

VB 程序的执行步骤
1. 启动应用程序,装载和显示窗体;
2. 窗体(或窗体上的控件)等待事件的发生; 3. 事件发生时,执行对应的事件过程; 4. 重复执行步骤2.和3. ; 5. 直到遇到 END(结束语句)结束程序的运行, 或用户强行停止程序的运行。

第1章 VB 程序与编程环境

15

保存程序
? 应用程序的组成
在 VB 中,一个应用程序以工程文件的形式保 存在磁盘上,一个工程涉及到多种文件类型。

1. 工程文件(.vbp)
2. 窗体文件(.frm)

第1章 VB 程序与编程环境

16

保存程序
? 首次保存
1. 保存窗体文件:选择保存位置和窗体文件名; 2. 保存工程文件:选择保存位置和工程文件名。

? 再次以原文件名保存
只需保存工程文件即可。

? 换名保存
1. 保存窗体文件:另选择保存位置和窗体文件名; 2. 保存工程文件:另选择保存位置和工程文件名。
第1章 VB 程序与编程环境
17

编码规则
? VB 代码不区分字母大小写
1. VB 对用户程序代码进行自动转换(关键字首字 母被换为大写,其余字母换为小写;多个单词组 成的关键字,各单词首字母被换为大写); 2. 用户自定义的变量、过程名以第一次为准,之后 输入的自动转换。

第1章 VB 程序与编程环境

18

编码规则
? VB 代码不区分字母大小写
? 语句书写自由
1. 一行可书写多条语句,语句间用冒号分隔; 2. 一条语句可分多行书写,行尾用续行符 “□_‖ ; 3. 一行可写多达 255 个字符。

第1章 VB 程序与编程环境

19

编码规则
? VB 代码不区分字母大小写
? 语句书写自由 ? 加注释有利于程序的维护和调试
1. 注释行以 Rem 或 ’ 开头,VB 以绿色显示; 2. 注释也可以出现在语句的后面; 3. 可利用“编辑”工具栏的“设置注释块”和 “解除注释块”按钮。
第1章 VB 程序与编程环境
20

VB 对象的概念
? 对象
是具有某些特征的具体事物或抽象事物,如 命令按钮、文本框等,对象一般上称为控件。

? 对象的三要素
1. 属性:反映对象的性质 2. 事件:发生在对象上的事情 3. 方法:对象的动作

第1章 VB 程序与编程环境

21

VB 对象的概念
? 属性
对象的性质,即描述对象特征的参数。 如:名称(Name)、标题(Caption)、颜色 (Color)、是否可见(Visible)等。 对象属性决定其外观和状态。

第1章 VB 程序与编程环境

22

VB 对象的概念
? 设置属性的两种方法:
1. 静态设置:在设计模式利用属性窗口进行设置, 表现为对象的初始外观和状态;

2. 动态设置:在程序代码中用赋值语句进行设置, 使对象的外观和状态发生改变。

第1章 VB 程序与编程环境

23

VB 对象的概念
? 事件
发生在对象上的事情或消息(对象所接受的刺激)。 如:单击(Click)、双击(DblClick)、获得焦点 (GotFocus) 、键盘按下(KeyPress)等。

第1章 VB 程序与编程环境

24

VB 对象的概念
? 事件过程
1. 对事件的处理步骤; 2. 是附在对象上的用户编写的程序代码; 3. 与该对象的一个事件相联系。 形式如下: Sub 对象名_事件([参数列表]) <事件过程代码> End Sub
第1章 VB 程序与编程环境
25

VB 对象的概念
? 事件驱动
1. 对象等待事件的发生; 2. 事件一旦发生便执行相应的事件过程;

3. 执行完后,对象重新处于等待事件发生的状态。
事件驱动程序设计是图形用户界面的本质,由 用户控制事件的发生,而代码作出规定的响应。

第1章 VB 程序与编程环境

26

VB 对象的概念
? 方法
1. 对象的行为; 2. 将一些通用的过程和函数编写好并封装起来,作 为方法供用户直接调用。

? 对象方法的调用
[对象.] 方法 [参数名表] 如:Print方法 Form1.Print "欢迎使用 VB 6.0" 对于当前对象,可省略[对象.],一般指窗体。
第1章 VB 程序与编程环境
27

通用属性
1. Name(名称)属性 所创建对象的名称,每个对象都有一个默 认的名称。在程序中,控件名作为对象的标识 被引用,而不会显示在窗体上。
2. Caption(标题)属性 决定控件上显示的内容。 3. Height(高度)和 Width(宽度)属性 决定控件的大小,单位为 twip。
第1章 VB 程序与编程环境
28

通用属性
4. Top (上边距)和Left (左边距)属性 决定控件在窗体上的位置。 5. Enabled 属性 决定控件是否可操作。属性值有 True 和 False 两个,当设置为 False 时,呈灰色,禁止 用户进行操作。 6. Visible 属性 决定控件是否可见。属性值有 True 和 False 两个,当设置为 False 时,用户看不到, 但控件本身存在。
第1章 VB 程序与编程环境
29

通用属性
7. Font(字体)系列属性
FontName: FontSize: 字体(属性为字符型); 字号(属性为整型);

FontBold:
FontItalic:

粗体(True、False);
斜体(True、False);

FontStrikethru:删除线(True、False); FontUnderline:下划线(True、False)。 窗体的 Font 属性决定后续控件的 Font 属性。
第1章 VB 程序与编程环境
30

通用属性
8. ForeColor(前景色)属性 设置控件的前景色(即正文颜色)。其值 是一个十六进制常数,也可在调色板中直接选 择所需颜色。
9. BackColor(背景色)属性 设置正文以外的显示区域的颜色,其设置 同 ForeColor 。

第1章 VB 程序与编程环境

31

通用属性
10. BackStyle(背景风格)属性 0-Transparent:透明显示,即控件背景 颜色显示不出来,而控件后面的对象均透过它 而显示出来。 1-Opaque:不透明,可为控件设置背景 颜色。 11. BorderStyle(边框风格)属性 0-None:控件周围没有边框; 1-Fixed Single:控件带有单边框。
第1章 VB 程序与编程环境
32

通用属性
12. Alignment 属性 决定控件上正文的对齐方式。 0-Left Justify: 正文左对齐。 1-Right Justify:正文右对齐。 2-Center: 正文居中。
13. AutoSize 属性 决定控件可否根据内容自动调整大小。 Ture:自动调整大小。 False:保持原设计大小。
第1章 VB 程序与编程环境
33

通用属性
14. WordWarp 属性 AutoSize 属性为 True 时才有效。 Ture:按正文的字数和字体大小在垂直方向 上改变控件的大小。 False:按正文的字数和字体大小在水平方向 上改变控件的大小。

第1章 VB 程序与编程环境

34

通用属性
15. 控件默认属性
反映该控件最重要的属性,使用时可省略其属 性名。
控件 文本框 命令按钮
单选按钮

属性 Text Default
Value

控件 标签 图形、图像框
复选框

属性 Caption Picture
Value

Command 的默认属性为 Default,当该属 性为 True,按 Enter 键时该控件起作用。
第1章 VB 程序与编程环境
35

窗体
? 窗体的作用
1. 是 VB 应用程序的用户界面; 2. 是所有其他控件的容器。

第1章 VB 程序与编程环境

36

窗体
? 主要属性
1. 2. 3. 4. 5. 6. Caption 属性 MaxButton 和 MinButton 属性 Icon 和 ControlBox 属性 Picture 属性 BorderStyle 属性(0 1 2 3 4 5 ) WindowsState 属性(0-正常、1-最小化、 2-最大化)
第1章 VB 程序与编程环境
37

窗体
? 常用的窗体事件
1. Click 事件 2. DblClick 事件 3. Resize 事件 4. Load 事件

Load 事件当装入窗体时激发,通常用于对属 性和变量进行初始化。
第1章 VB 程序与编程环境
38

窗体
? 窗体上常用的方法
1. Print 方法
? 形式 [对象.]Print 表达式 ? 作用 在窗体或图形框中显示输出信息。

第1章 VB 程序与编程环境

39

窗体
? 窗体上常用的方法
2. Cls 方法
? 形式 [对象.]Cls ? 作用 清除运行时在窗体或图形框中显示的文本或图 形,而不清除在设计时设置的文本和图形。

第1章 VB 程序与编程环境

40

窗体
? 窗体上常用的方法
3. Move 方法
? 形式 [对象.]Move 左边距离[,上边距离[,宽度[,高度]]] ? 作用 移动窗体或控件,并可改变其大小。

第1章 VB 程序与编程环境

41

窗体例
? 窗体常用事件、方法的演示例

第1章 VB 程序与编程环境

42

标签
? 标签的作用
用于显示(输出)文本信息,但不能作为输 入信息的界面。

? 主要属性
1. 2. 3. 4. Caption 属性 Font 属性 Left 和 Top 属性 BorderStyle 和 BackStyle 属性
第1章 VB 程序与编程环境
43

标签例
? 标签常用属性设置演示例

第1章 VB 程序与编程环境

44

标签
? 标签经常接收的事件
1. Click 事件 2. DblClick 事件 3. Chang 事件

标签仅用来显示文字,一般不需编写事件过
程。
第1章 VB 程序与编程环境
45

文本框
? 文本框的作用
1. 是一个文本编辑区域(文本编辑器); 2. 用于输入,编辑和显示正文内容。

第1章 VB 程序与编程环境

46

文本框
? 文本框的主要属性
1. Text 属性 文本框的正文内容。 2. Maxlength 属性 正文的最大字符个数,0 值为任意长度。 3. MultiLine 属性 正文内容是否为多行,默认(False)为1行。

第1章 VB 程序与编程环境

47

文本框
? 文本框的主要属性
4. ScrollBars 属性 滚动条的形式,当 MultiLine 属性的值为 True 时有效。(0-无、1-竖直、2-水平、3二者)。 5. PasswordChar 属性 设置显示文本框中的替代符(一般为*), 当 MultiLine 属性为 True 时,该属性无效。
48

第1章 VB 程序与编程环境

文本框
? 文本框的主要属性
6. Locked 属性 是否可被编辑,默认(False)为可编辑。设 置为 True 时,文本框控件相当于标签的作用。 7. SelStart、SelLength 和 SelText 属性 所选定文本的起始位置、长度和内容。

第1章 VB 程序与编程环境

49

文本框例
? 复制所选定文本的演示例

第1章 VB 程序与编程环境

50

文本框
? 文本框能响应的事件
1. Change 事件 当改变文本框的 Text 属性时会引发该事件。 2. KeyPress 事件 每键入一个字符时即引发该事件,并可返回一 个 KeyAscii 参数的值。按回车键时 KeyAscii 值 为 13,表示文本的输入结束。

第1章 VB 程序与编程环境

51

文本框
? 文本框能响应的事件
3. LostFocus 事件 当文本框控件失去焦点时发生(按 Tab 键或 单击另一个对象)。 4. GotFocus 事件 当文本框控件获得焦点时发生。

第1章 VB 程序与编程环境

52

文本框
? 文本框最有用的方法
SetFocus 方法 把光标移到指定的文本框对象中。 形式为: [对象.] SetFocus SetFocus 方法还可用于 CommandButton、 CheckBox 和 ListBox 等控件。

第1章 VB 程序与编程环境

53

文本框例
? 数据过滤演示例
1. 要求输入合法的数字数据,当按 Enter 键或 Tab 键时输入结束 ; 2. 对输入的非数字数据,则清除文本框中的内容, 并使焦点重新回到文本框。

第1章 VB 程序与编程环境

54

文本框例
? 数据过滤演示例的实现
1. Text1_LostFocus 当输入结束按 Tab 键时,该事件激发。 2. Text1.SetFocus 使焦点重新回到文本框。 3. IsNumeric(Text2) 判断是否输入非数字数据。

第1章 VB 程序与编程环境

55

命令按钮
? 命令按钮的作用
接受用户输入的命令。

? 选中命令按钮的三种方式
1. 用鼠标单击; 2. 按 Tab 键将焦点移到该按钮上再按回车键;

3. 设置快捷键(Alt+带下划线的字母)。

第1章 VB 程序与编程环境

56

命令按钮
? 主要属性
1. Caption 属性 命令按钮上显示的内容。可为其设置快捷键, 如 &Ok 则显示 Ok。 2. Style 属性 设置命令按钮显示的形式:0-只显示文字、 1-文字、图形均可可显示。

第1章 VB 程序与编程环境

57

命令按钮
? 主要属性
3. Picture 属性 命令按钮可显示图片文件(.bmp 和.Ico), 当 Style 属性为 1 时有效。 4. ToolTipText 属性 设置工具提示,和 Picture 属性结合使用。

? 命令按钮接收的事件
Click 事件
第1章 VB 程序与编程环境
58

综合应用例
? 建立一个允许剪切、复制和粘贴的简单便 笺板程序的演示例
可利用 MouseMove 事件决定命令按钮的有 效性,即当选中内容时,“剪切”、“复制”按 钮有效,否则无效。

第1章 VB 程序与编程环境

59

常见错误
1. 使用中文标点符号 系统产生 “无效字符”,以红色显示。 2. 字母和数字形状相似 小写字母 l 和数字 1 、小写字母 o 与数字 0。 3. 对象名称(Name)属性写错 4. 对象的属性名、方法名、标准函数名写错 尽量使用自动列出成员功能。 5. 无意形成控件数组 建立控件时小心使用 “复制”、“粘贴” 按钮。 6. 打开工程时找不到对应的文件 先保存.frm 文件、再保存.vbp 文件,注意路径。
第1章 VB 程序与编程环境
60

数据类型
数据是程序处理的对象
1. 不同的数据在计算机内的存储方式不同; 2. 不同的数据类型参与的运算也各不相同。

第2章 数据的类型、表示以及运算

61

数据类型
? 数值(Numeric)数据类型
1. 整形(Integer)和长整形(Long) 用于保存整数,运算快速、精确,表示数的 范围小。 整形的类型符为 “%‖,可以省略。如:-5、 +10、12%。 长整形的类型符为 “&‖。如:-5&、+10&、 12&。
第2章 数据的类型、表示以及运算
62

数据类型
? 数值(Numeric)数据类型
2. 单精度型(Single)和双精度型(Double) 用于保存浮点实数,运算速度慢、有误差, 表示数的范围大。

第2章 数据的类型、表示以及运算

63

数据类型
? 数值(Numeric)数据类型
2. 单精度型(Single)和双精度型(Double) 单精度浮点数的类型符为 “!‖,表示形式包 括 3 种:小数形式、整数加 “!‖ 形式、指数形 式。如:-5.0、5.0!、10!、12E+3、-31E-7。 双精度浮点数的类型符为 “#‖,表示形式将 单精度浮点数的 “!‖ 换成 “#‖、指数形式后加 “#‖ 或将 E 换成 D。如:-5.0#、5.0#、10#、 12E+3#、-31D-7。
第2章 数据的类型、表示以及运算
64

数据类型
? 数值(Numeric)数据类型
3. 货币型(Currency) 是定点实数或整数,最多保留小数点右边 4 位和左边 15 位,用于货币计算。 货币形的类型符为 “@‖。如:-234.56@、 61000@。

4. 字节型(Byte) 占一个字节的无符号整数,用于存储二进制 数。
第2章 数据的类型、表示以及运算
65

数据类型
? 字符(String)数据类型
包括所有的 ASCII 字符和汉字字符。 字符串两侧要用双引号 “ ” ” 括起来。 如:” Hello! ”、”程序设计”、”120”。 分为定长(String * n)和变长(String) 两种,前者存放长度被固定为 n 的字符串,后 者则长度可变。

第2章 数据的类型、表示以及运算

66

数据类型
? 逻辑(Boolean)数据类型
用于逻辑判断,只有 True 和 False 两个 值。

逻辑数据转换成整型数据时,True 转换为 -1、False 转换为 0。
其他类型数据转换成逻辑数据时,非 0 数 转换为 True、0 转换为 False。

第2章 数据的类型、表示以及运算

67

数据类型
? 日期(Date)数据类型
表示的日期范围从公元 100 年 1 月 1 日到 9999 年 12 月 31 日,时间范围为 0:00:00 到 23:59:59。

第2章 数据的类型、表示以及运算

68

数据类型
? 日期(Date)数据类型
日期型数据有 2 种表示法: 1. 字符表示 可被认作日期和时间的字符,用 “#‖ 括起来。 如:#March 17,2008#、#4/8/1964#、 #1990-8-9 8:39:00 PM#。

2. 数字序列 整数部分代表日期、小数部分代表时间。如 33094.75 代表 1990年 8 月 9 日下午 6 时。
第2章 数据的类型、表示以及运算
69

数据类型
? 变体(Variant)数据类型
所有未定义的变量的默认数据类型。可以用 函数 VarType(),根据其返回值检测该变量中 数值的数据类型。

第2章 数据的类型、表示以及运算

70

数据类型
? 变体(Variant)数据类型
常数 返回值 描述

vbEmpty
vbNull vbInteger vbLong

0
1 2 3

Empty(未初始化)
Null(无有效数据) 整数 长整数

vbSingle
vbDouble

4
5

单精度浮点数
双精度浮点数
71

第2章 数据的类型、表示以及运算

数据类型
? 变体(Variant)数据类型
常数 vbCurrency vbDate 返回值 6 7 货币值 日期 描述

vbString
vbObject vbError vbBoolean

8
9 10 11

字符串
对象 错误值 逻辑值
72

第2章 数据的类型、表示以及运算

数据类型
? 变体(Variant)数据类型
常数 vbVariant vbDataObject vbDecimal vbByte vbUserDefinedType vbArray 返回值 12 13 14 17 36 8192 数据访问对象 十进制值 字节型 包含用户定义类型的变量 数组
73

描述 Variant(只与变体中的数组一起使用)

第2章 数据的类型、表示以及运算

数据类型
? 对象(Object)数据类型
用 32 位地址来存储的对应用程序中对象的引 用,可以是控件对象、OLE 对象等。

第2章 数据的类型、表示以及运算

74

变量与常量
计算机处理的数据都必须先装入内存,而所谓 的变量和常量都是一些被命名的内存单元。
? 变量:在程序运行中其值可以发生变化的量。

? 常量:在程序运行中其值不可改变的量。

第2章 数据的类型、表示以及运算

75

变量与常量
? 变量或常量的命名规则
1. 以字母或汉字开头,后可跟汉字、字母、数字或 下划线组成,最大长度 255 个字符; 2. 不要使用 VB 中的关键字; 3. 在 VB 中不区分变量名的大小写;
? 变量名一般采用首字母大写,其余字母小写。

? 常量名一般采用全部字母大写。

4. 为增加程序的可读性,最好在变量名前加一个缩 写的前缀来表明该变量的数据类型。
第2章 数据的类型、表示以及运算
76

变量与常量
? 变量或常量的命名规则
标准数据类型的缩写前缀:
1. 2. 3. 4. 字节型: 逻辑型: 整型: 长整型: byt bln int lng 7. 货币型:cur 8. 日期型:dtm 9. 字符型:str 10. 对象型:obj 11. 变体型:vnt

5. 单精度型:sng 6. 双精度型:dbl

第2章 数据的类型、表示以及运算

77

变量与常量
? 变量或常量的命名规则
? 合法的变量名如:
1. strMystring (字符串)

2. intCount
3. sng最大值 4. lngX_y_z 5. dtmYear 6. blnTorF

(整型)
(单精度) (长整型) (日期型) (逻辑型)
78

第2章 数据的类型、表示以及运算

变量与常量
? 变量或常量的命名规则
? 错误或使用不当的变量名如:
1. 3xy (数字开头)

2. y-z
4. Dim 5. Cos

(不允许出现减号)
(VB 的关键字) (与 VB 的标准函数同名)

3. Wang Ping(不允许出现空格)

第2章 数据的类型、表示以及运算

79

变量与常量
? 变量声明
使用变量前,一般要先声明变量名和类型,以 便系统为它分配存储单元。 在使用前声明变量的名称和类型,称为变量的 显式声明。

未声明而直接使用变量时,称为变量的隐式声
明,所有隐式声明的变量都是变体类型的。
80

第2章 数据的类型、表示以及运算

变量与常量
? 变量声明
1. 显式声明变量 Dim 变量名 [As 类型] Dim 变量名类型符
? 缺省 [As 类型] 时,创建的为变体类型的变量; ? 类型声明不能共用。 ? 除 Dim 外,还可以用 Static、Public、Private 等语句声明变量。
第2章 数据的类型、表示以及运算
81

变量与常量
? 变量声明
1. 显式声明变量 Dim 变量名 [As 类型] Dim 变量名类型符
? 例:Dim iCount As integer,sAllsum As single 等价于:Dim iCount%, sAllsum!

? 例:Dim intX,intY As integer,dblP2 As Double 创建了变体型变量 intX、整型变量 intY、双精度型 变量 dblP2。
第2章 数据的类型、表示以及运算
82

变量与常量
? 变量声明
1. 显式声明变量 Dim 变量名 [As 类型] Dim 变量名类型符 不同数据类型的变量有不同的默认初值,见 教材 P14 表 2.2 。

第2章 数据的类型、表示以及运算

83

变量与常量
? 变量声明
1. 显式声明变量 Dim 变量名 [As 类型] Dim 变量名类型符 对字符串型变量有两种定义方法:
? 定义不定长字符串型变量: Dim 字符串变量名 As string ? 定义定长字符串型变量: Dim 字符串变量名 As string * 字符数
第2章 数据的类型、表示以及运算
84

变量与常量
? 变量声明
2. 隐式声明变量 此方法虽方便,但容易产生难以查找的错 误,故不建议使用。 可在通用声明段使用 Option Explicit 语

句强制显式声明所有变量。

第2章 数据的类型、表示以及运算

85

变量与常量
? 常量
在 VB 中有三种常量:直接常量、用户声 明的符号常量、系统提供的常量。

1. 直接常量
各种类型的常数值。

除十进制常数外,还有八进制(数值前加 &O)、十六进制常数(数值前加&H)。
如:123&、&O123、&H123
第2章 数据的类型、表示以及运算
86

变量与常量
? 常量
2. 用户声明常量 Const 常量名 [AS 类型] = 表达式
? 省略 [AS 类型],常量的类型由表达式值的类型 决定。 ? 为使与变量名区分,一般常量名使用大写字母。 ? 常量一旦声明,在其后的代码中只能引用,不能 改变(只能出现在赋值号的右边)。
第2章 数据的类型、表示以及运算
87

变量与常量
? 常量
3. 系统提供的常量 系统定义的常量位于对象库中。
? 引用时可使用 2 个小写字母前缀指明对象库,如 vb 表示 VB 中的常量、xl表示 Excel 中的常量。 ? 语句 Form1.WindowsState = vbMaximized 要比 Form1.WindowsState = 2 易于阅读。

第2章 数据的类型、表示以及运算

88

运算符和表达式
? 运算符
表示实现某种运算的符号,VB 中的运算符 分为 4 类:
? 算术运算符 ? 字符串运算符 ? 关系运算符

? 逻辑运算符
第2章 数据的类型、表示以及运算
89

运算符和表达式
? 运算符
1. 算术运算符
运算符 ^ * / \ Mod + 含义 乘幂 取负 乘 除 整除 取余 加 减 优先级 1 2 3 3 4 5 6 6 实例 27^(1/3) -3 3*3*3 10/3 10\3 10 Mod 3 10+3 3-10 结果 3 -3 27 3.33333333 3 1 13 -7
90

第2章 数据的类型、表示以及运算

运算符和表达式
? 运算符
1. 算术运算符
? 算术运算符两边的操作数应为数值型;
? 若为数字字符或逻辑型,则自动转换为数值型; ? 若为其他类型数据,则出错。

? 例:30 – True ’ 结果为 31 False + 10 + ―4‖ ‘ 结果为 14

第2章 数据的类型、表示以及运算

91

运算符和表达式
? 运算符
2. 字符串运算符

用于将两个字符串拼接起来,有 “&‖ 和 “+‖ 两个,它们的区别是:
? “+‖ 两旁的操作数要求是字符型;

? “&― 两旁的非字符型数据,VB 会自动将其转换 后再进行连接。

第2章 数据的类型、表示以及运算

92

运算符和表达式
? 运算符
2. 字符串运算符 ? 例 “120‖ + 123
―120‖ + ―123‖ ―abc‖ + 123 ‘ 结果为 243 ‘ 结果为 “120123‖ ‘ 出错

“abc‖ & 123 “abc123‖ ―120‖ & ―123‖ 120 & 123

‘ 结果为
‘ 结果为 “120123‖ ‘ 结果为 “120123‖
93

120 + ―123‖ & 100 ‘ 结果为 “243100‖ 第2章 数据的类型、表示以及运算

运算符和表达式
? 运算符
3. 关系运算符

用于比较两个操作数的大小,结果为 True 或 False。
操作数可以是数值型,也可以是字符型。

第2章 数据的类型、表示以及运算

94

运算符和表达式
? 运算符
3. 关系运算符
运算符 = 含义 等于 实例 “ABC”=“AD” 结果 False

>
>= < <= <> Like

大于
不小于 小于 不大于 不等于 字符串匹配

“ABC”>“AD”
“ABC”>=“啊” 23<3 “23”<=“3” “abc”<>“ABC”

False
False False True True

“ABCDE”Like“*CD*” True
95

第2章 数据的类型、表示以及运算

运算符和表达式
? 运算符
3. 关系运算符
? 比较字符型数据时,按字符的 ASCII 码值的大 小从左往右逐一比较;
? 汉字字符大于西文字符;

? 关系运算符优先级相同;
? Like 与通配符 “?‖、“*”、“#‖、[字符列表]、 [!字符列表] 结合使用。
第2章 数据的类型、表示以及运算
96

运算符和表达式
? 运算符
4. 逻辑运算符

用于对操作数进行逻辑运算,结果为 True 或 False。

第2章 数据的类型、表示以及运算

97

运算符和表达式
? 运算符
4. 逻辑运算符(用 T 表示 True、F 表示 False)
运算符 含义 优先级 Not And 取反 1 2 说明 操作数为真(假)时,结 果为假(真)。 实例 Not F Not T 结果 T F T F F F T T T F
98



Or



3

T And T T And F 两个操作数均为真时,结 果为真,其余结果均为假。 F And T F And F T Or T T Or F 两个操作数均为假时,结 果为假,其余结果均为真。 F Or T F Or F

第2章 数据的类型、表示以及运算

运算符和表达式
? 运算符
4. 逻辑运算符(续表)
运算符 含义 优先级 Xor 异或 3 说明 两个操作数不同时,结果 为真,其余结果均为假。 实例 结果 T Xor F、 F Xor T T T Xor T、 F Xor F F T F F T T T
99

Eqv

等价

4

两个操作数相同时,结果 T Eqv T、 F Eqv F 为真,其余结果均为假。 T Eqv F、 F Eqv T 第 1 个操作数为真、第 2 个操作数为假时,结果 为假,其余结果均为真。 T T F F Imp Imp Imp Imp F T T F

Imp

蕴含

5

第2章 数据的类型、表示以及运算

运算符和表达式
? 表达式
1. 表达式的组成
由变量、常量、运算符、函数和圆括号组成 的合理的式子,通过运算后有一个结果。 表达式的数据类型由结果决定。

第2章 数据的类型、表示以及运算

100

运算符和表达式
? 表达式
2. 表达式的书写规则
? 乘号不能省略。例:x 乘以 y,应写成:x*y。 ? 括号须成对出现,可相互嵌套,均使用圆括号。 ? 例,数学表达式:

(3x ? y) ? z ( xy) 4

写成 VB 表达式:sqr((3*x+y)-z)/(x*y)^4

第2章 数据的类型、表示以及运算

101

运算符和表达式
? 表达式
3. 数值表达式的数据精度
算术运算的结果,采用精度高的操作数的数 据类型。即:
Integer < Long < Single < Double < Currency

但 Long 型数据与 Single 型数据运算时,结果为 Double 型数据。
第2章 数据的类型、表示以及运算
102

运算符和表达式
? 表达式
4. 表达式中运算符的优先级
表达式中同时出现多类运算符时,其运算优 先级为:
算术运算符 > 字符运算符 > 关系运算符 > 逻辑运算符

圆括号可用来改变运算的优先级。
第2章 数据的类型、表示以及运算
103

运算符和表达式
? 表达式
5. 表达式举例 ? 将算术表达式 3 ≤ x ≤ 7 写成 VB 表达式。
正确的表达式:

x>=3 And x<=7
错误的表达式: 3<=x<=7

x>=3 Or x<=7
第2章 数据的类型、表示以及运算
104

运算符和表达式
? 表达式
5. 表达式举例 ? 用人单位招聘秘书的条件为:年龄不到 40 岁的 女性、学历为专科或本科。
正确的表达式:
年龄<40 And 性别=―女” And (学历=―专科” Or 学历=―本 科”)

错误的表达式:
年龄<40 And 性别=―女” And (学历=―专科” And 学历=―本 科”) 105 第2章 数据的类型、表示以及运算 年龄<40 And 性别=―女” And 学历=―专科” Or 学历=―本科”

常用内部函数
VB 提供的内部函数(或称标准函数)按其功能 分为:
? ? ? ? 数学函数 转换函数 字符串函数 日期函数

第2章 数据的类型、表示以及运算

106

常用内部函数
在函数格式中:

? 用 N 表示数值表达式; ? 用 C 表示字符表达式; ? 用 D 表示日期表达式; ? 凡函数名后有 $ 符号的,表示函数返回值 为字符串。

第2章 数据的类型、表示以及运算

107

常用内部函数
? 数学函数
函数名
Abs(N) Exp(N) Log(N) Rnd[(N)]

功能
取绝对值 e 为底的指数,即 ex e 为底的对数 取随机数

实例
Abs(-3.5) Exp(3) Log(10) Rnd

结果
3.5 20.086 2.3 [0,1) 之间的数

Sin(N)
Sgn(N) Sqr(N)

正弦
符号 平方根

Sin(3.1416)
Sgn(-7) Sqr(9)

0
-1 3
108

第2章 数据的类型、表示以及运算

常用内部函数
? 数学函数
? 三角函数中,N 为弧度; ? 在 Sgn 函数中,当 N 为正数、负数和零时, 函数值分别为 1、-1、0; ? Rnd 函数的取值范围为:[0,1),产生 [30,50] 间随机整数的表达式为:
Int(Rnd*21+30)
109

第2章 数据的类型、表示以及运算

常用内部函数
? 转换函数
函数名
Asc(C) Chr(N) Fix(N)

功能
字符转换为ASCII码值 ASCII码值转换为字符 取整

实例
Asc(“A”) Chr(65) Fix(-3.5)

结果
65 “A” -3

Int(N)
Round(N) Str(N) Val(C)

向下取整
四舍五入 数值转换为数字字符串 数字字符串转换为数值

Int(-3.5)
Round(-3.45,1) Str(123.4) Val(“123AB”)

-4
-3.5 “ 123.4” 123
110

第2章 数据的类型、表示以及运算

常用内部函数
? 转换函数
? Str(N) 函数值的左边第 1 位为 N 的符号位; ? Val(C) 函数只转换 C 前端的数字字符; ? 注意区分取整函数 Int、Fix 和 Round 函数。

第2章 数据的类型、表示以及运算

111

常用内部函数
? 字符串函数
函数名 InStr([N,] C1,C2) Ltrim(C) Rtrim(C) Trim(C) Space(N) 功能 在C1中,从N开始找 C2 去除字符串左边空格 去除字符串右边空格 去除字符串两边空格 产生N个空格的字符 串 实例 IntStr(2,“BCABCD”, “BC”) Ltrim(“ A B ”) Rtrim(“ A B ”) Trim(“ A B ”) Space(3) 结果 4 “A B ” “ A B” “A B” “ ”

第2章 数据的类型、表示以及运算

112

常用内部函数
? 字符串函数(续表)
函数名 Len(C) Left(C,N) Mid(C,N1 [,N2]) Right(C,N) 功能 计算字符串的长度 左截取字符串 在C1中,从N1开 始取N2个字符 右截取字符串 实例 Len(“AB高等教育”) Left(“ABCDE”,3) Mid(“ABCDE”,3,2) Right(“ABCDE”,3) 结果 6 “ABC” “CD” “CDE”

StrReverse(C) 取字符串反序

StrReverse(“ABCD”) “DCBA”

第2章 数据的类型、表示以及运算

113

常用内部函数
? 字符串函数
? Windows 系统对字符采用 DBCS 编码,中文 字符占 2 字节、西文字符占 1 字节。VB 中字 符采用 Unicode 编码,西文字符和汉字一样也 占 2 个字节;

第2章 数据的类型、表示以及运算

114

常用内部函数
? 日期函数
函数名
Date[()] Now[()]

功能
返回系统日期 返回系统日期 和时间

实例
Date Now

结果
2011-3-21 2011-3-21 10:51:02

Year(C|N)
Month(C|N) Day(C|N)

返回年份
返回月份 返回日

Year(#2011-3-21#)
Month(Date()) Day(Date())

2011
3 21

Hour(C|N)

返回小时

Hour(Now())
WeekDay(Date())

10
2
115

WeekDay(C|N) 返回星期序号

第2章 数据的类型、表示以及运算

常用内部函数
? 日期函数
? 日期函数中自变量 N 为相对1899年12月31日 前后的天数; ? WeekDay 函数返回的星期序号:1-星期日、 2-星期一、??、7-星期六。

第2章 数据的类型、表示以及运算

116

常见错误
1. 逻辑表达式写错,未造成语法错误但形成逻辑错误
如:数学表达式 3≤X<10 写成 3<=X<10 原因:VB 中的逻辑数据与数值数据可相互转换。

第2章 数据的类型、表示以及运算

117

常见错误
1. 逻辑表达式写错,未造成语法错误但形成逻辑错误
2. 一次给多个变量赋值,非语法错误但形成逻辑错误 如:Dim X%,Y%,Z%

X=Y=Z=1

第2章 数据的类型、表示以及运算

118

常见错误
1. 逻辑表达式写错,未造成语法错误但形成逻辑错误
2. 一次给多个变量赋值,非语法错误但形成逻辑错误 3. 标准函数名写错

4. 变量名写错
解决方法:在通用声明段加 Option Explicit 语句。

第2章 数据的类型、表示以及运算

119

常见错误
1. 逻辑表达式写错,未造成语法错误但形成逻辑错误
2. 一次给多个变量赋值,非语法错误但形成逻辑错误 3. 标准函数名写错

4. 变量名写错
5. 语句的书写位置错 说明:在通用声明段只能有Dim语句,而不能有赋值 等其他语句。

第2章 数据的类型、表示以及运算

120

程序的基本控制结构
VB 是基于对象的程序设计语言,一个 VB 程序 由 Visual 和 Basic 两部分组成。
前者指由众多对象构成程序的可视界面。在 VB 中,界面设计非常方便、直观。 后者指响应各种事件的程序代码,是程序设计 的重点和难点。 VB 和传统程序设计语言一样,也具有结构化程 序设计的三种结构,即顺序结构、选择结构、循环 结构。
第4章 VB控制结构
121

顺序结构
顺序结构是指程序中各语句按出现的先后次序

执行。
顺序结构的语句主要是赋值语句、输入/输出 语句等。 VB 的输入/输出功能,一般通过文本框控件、 标签控件、Print 方法、与用户交互的函数和过程 等来实现。
122

第4章 VB控制结构

顺序结构
? 赋值语句
1. 形式
变量名 = 表达式

2. 作用
? 先计算右边表达式的值,再将值赋给左边的变量; ? 一般用于给变量赋值或对控件设定属性值。

第4章 VB控制结构

123

顺序结构
? 赋值语句
3. 使用赋值语句的注意事项
? 条件表达式中的 “=‖ 是等号,其余的是赋值号。 赋值语句 a=b 与 b=a 结果不同、关系表达式 a=b 与 b=a 则等价。 ? 赋值号左边只能是变量,不能是常数、常数符号 或表达式。下列为错误的赋值语句: sin(x)=x+y ‘ 左边是表达式(标准函数) 5=sqr(x)+y ‘ 左边是常数 x+y=3 ‘ 左边是表达式
第4章 VB控制结构
124

顺序结构
? 赋值语句
3. 使用赋值语句的注意事项
? 不能在一句赋值语句中给多个变量赋值,如: Dim x%,y%,z% x=y=z=1 ‘ 语法没错,但结果都为 0 ? 赋值语句 Sum = Sum + x 起累加的作用。 ? 赋值语句 n = n + 1 起到计数器的作用。

第4章 VB控制结构

125

顺序结构
? 赋值语句
4. 表达式与变量数据类型不同时的处理
? 当表达式为数值型而与变量精度不同时,强制转 换成左边变量的精度; 例:n% = 3.5 ‘ n 的结果为 4 ? 当表达式为数字字符串而与变量是数值类型时, 自动转换成数值类型再赋值。而表达式为非数字 字符时,则出错; 例:n% = ―123‖ ‘ n 的结果为 123 例:n% = ―1a23‖ ‘ 提示 “类型不匹配”
第4章 VB控制结构
126

顺序结构
? 赋值语句
4. 表达式与变量数据类型不同时的处理
? 当逻辑型表达式赋值给数值型变量时,True 转 换成 -1、False 转换成 0,反之则非 0 转换成 True、而 0 转换成 False; ? 当任何非字符类型表达式赋值给字符类型变量, 则先转换为字符类型。

第4章 VB控制结构

127

顺序结构
? 数据的输入和输出
? 标签和文本框控件
? 标签控件 利用标签的 Caption 属性可输出数据。 ? 文本框控件 利用文本框控件的 Text 属性可获得用户从 键盘输入的数据,也可用于输出计算结果。

第4章 VB控制结构

128

顺序结构
? 数据的输入和输出
? 标签和文本框控件
? 例:从文本框输入圆半径,计算出圆面积后利用 标签将结果显示出来。
r = Val(Text1.Text) Label1.Caption = ―面积 = ― & 3.14 * r * r

第4章 VB控制结构

129

顺序结构
? 人机交互函数和过程
1. InputBox() 函数
InputBox(提示[,标题][,默认][,x坐标][,y坐标])

? 例:
Dim strName As String * 40, strS1 As String * 40 strS1 = ―请输入你的姓名” + Chr(13) + Chr(10) +
_

―然后单击确定“ strName = InputBox(strS1, "输入框", , 100, 100) Print strName 130 第4章 VB控制结构

顺序结构
? 人机交互函数和过程
1. InputBox() 函数
InputBox(提示[,标题][,默认][,x坐标][,y坐标])

? 例 4.1 输入基本工资、本月的营业额,显示实发工资。

第4章 VB控制结构

131

顺序结构
? 人机交互函数和过程
2. MsgBox() 函数和 MsgBox 过程
? MsgBox() 函数 变量[%] = MsgBox(提示[,按钮][,标题]) ? MsgBox 过程 MsgBox 提示[,按钮][,标题] ―按钮” 为整形表达式,决定信息框按钮的数目 和类型、信息框上的图标类型。 缺省值为 0,即 VbOkOnly。
第4章 VB控制结构
132

顺序结构
? 人机交互函数和过程
2. MsgBox() 函数和 MsgBox 过程
“按钮” 设置值及意义 分组 内部常数 按钮值 描述 VbOkOnly 0 只显示“确定”按钮 VbOkCancel 1 显示“确定”、“取消”按钮 VbAbortRetryIgnore 2 显示“终止”、“重试”、“忽 略”按钮 VbYesNoCancel 3 显示“是”、“否”、“取消” 按钮 VbYesNo 4 显示“是”、“否”按钮 133 VbRetryCancel 5 显示“重试”、“取消”按钮 第4章 VB控制结构

按 钮 数 目

顺序结构
? 人机交互函数和过程
2. MsgBox() 函数和 MsgBox 过程
“按钮” 设置值及意义 (续表一) 分组 图 标 类 型 内部常数 VbCritical VbQuestion 按钮值 16 32 描述 关键信息图标(红色STOP标志) 询问信息图标 ?

VbExclamation
VbInformation

48
64

警告信息图标 !
信息图标 i

第4章 VB控制结构

134

顺序结构
? 人机交互函数和过程
2. MsgBox() 函数和 MsgBox 过程
“按钮” 设置值及意义 (续表二) 分组 默 认 按 钮 模 式 内部常数 VbDefaultButton1 按钮值 0 描述 第1个按钮为默认

VbDefaultButton2
VbDefaultButton3 VbApplicationModule VbSystemModule

256
512 0 4096

第2个按钮为默认
第3个按钮为默认 应用模式 系统模式
135

第4章 VB控制结构

顺序结构
? 人机交互函数和过程
2. MsgBox() 函数和 MsgBox 过程 MsgBox 的作用是打开一个信息框,等待 用户选择其中的一个按钮。 MsgBox 函数返回一个对应用户所选按钮 的整数值。

第4章 VB控制结构

136

顺序结构
? 人机交互函数和过程
2. MsgBox() 函数和 MsgBox 过程
MsgBox函数 返回值的意义 内部常数 vbOk vbCancel vbAbort vbRetry vbIgnore vbYes vbNo 返回值 1 2 3 4 5 6 7 被用户单击的按钮 确定 取消 终止 重试 忽略 是 否
137

第4章 VB控制结构

帐号和密码检验程序例(4.2)
? 要求
1. 帐号输入数字,输错时清除原内容重新输入; 2. 输入密码时屏幕上显示 *,输错时显示有关信息。 选择 “重试” 按钮则清除原内容重新输入;选择 “取消” 按钮则停止运行。

? 分析
1. 输入帐号文本框的 LostFocus 事件时,用函数 IsNumeric 判断是否数字; 2. 命令按钮的 Click 事件时,判断密码是否正确并用 MsgBox 函数设置 “密码错误” 对话框。
第4章 VB控制结构
138

顺序结构
? Print 方法
1. 形式
[对象.]Print[{Spc(n)|Tab(n)}][表达式][;|,]

2. 作用 在对象上输出信息。

第4章 VB控制结构

139

顺序结构
? Print 方法
3. 说明
[对象.]Print[{Spc(n)|Tab(n)}][表达式][;|,]
? ? ? ? ? 对象 - 窗体、图形框或打印机(Printer),省略对象时 表示在窗体上输出。 Spc(n) 函数 - 插入n个空格,允许重复使用。 Tab(n) 函数 - 左端开始右移动n列,允许重复使用。 ;(分号) - 光标定位上一个显示的字符后。 ,(逗号) - 光标定位在下一个打印区的开始位置处。 无分号和逗号时控制换行。 第4章 VB控制结构
140

顺序结构
? Print 方法
3. 说明
开始打印的位置由对象的 CurrentX 和 CurrentY 属性决定,缺省为打印对象的左上角 (0,0)。

4. 例 3.2 使用 Print 方法在窗体上输出图形。 Print 方法在 Form _Load 事件过程中起作用, 必须设置窗体的 AutoRedraw 属性为True。

第4章 VB控制结构

141

顺序结构
? 格式输出函数
1. 格式 Format(表达式[,格式字符串])
? 表达式 - 要格式化的数值、日期或字符串表达式; ? 格式字符串 - 数值、日期或字符串格式符,要加 引号。

2. 功能
按指定格式输出数值、日期或字符串,一般 用于 Print 方法中。
第4章 VB控制结构
142

顺序结构
? 格式输出函数
3. 例 4.4 利用格式输出符号“#”和“0”,控制小 数位数的输出。

第4章 VB控制结构

143

选择结构
选择结构是指程序中先进行条件判断,根据判

断结果来选择执行不同的分支的语句。
选择结构由多种形式的条件语句实现的,包括 If 条件语句(单分支、双分支、多分支)和 Select Case 情况语句。

第4章 VB控制结构

144

选择结构
? If?Then 语句(单分支结构)
1. 形式
If <表达式> Then <语句块> End If


? ? ?

If <表达式> Then <语句> (无 End If)

表达式:关系表达式、逻辑表达式、算术表达式,非零 为 True,零为 False; 语句块:一条或多条语句; 语句:一条语句或写在一行上用冒号分隔的多条语句。 第4章 VB控制结构
145

选择结构
? If?Then 语句(单分支结构)
2. 作用
当表达式的值为 True 时, 执行 Then 后面的语句块(或 语句),否则不做任何操作。 3. 流程图

4. 例 4.5 交换两个变量中的数。

第4章 VB控制结构

146

选择结构
? If?Then?Else 语句(双分支结构)
1. 形式
If <表达式> Then <语句块1> Else <语句块2> End If



If <表达式> Then <语句1> Else <语句2> (无 End If) 第4章 VB控制结构
147

选择结构
? If?Then?Else 语句(双分支结构)
2. 作用
当表达式的值为 True 时,执 行 Then 后面的语句块1,否则, 执行 Else 后面的语句块2。 3. 流程图

4. 例 4.6 计算分段函数。

第4章 VB控制结构

148

选择结构
? If?Then?ElseIf 语句(多分支结构)
1. 形式
If <表达式1> Then <语句块1> ElseIf <表达式2> Then <语句块2> ?? ElseIf <表达式n> Then <语句块n> [Else <语句块n+1>] End If
第4章 VB控制结构
149

选择结构
? If?Then?ElseIf 语句(多分支结构)
2. 作用
根据不同的表达式值,确定执行哪个语句块,测 试的顺序为 <表达式1>、<表达式2>、? 、<表达 式n>,一旦遇到表达式值为 True,则执行相应的语 句块,然后执行 End If 之后的语句。

第4章 VB控制结构

150

选择结构
? If?Then?ElseIf 语句(多分支结构)
3. 流程图
4. 例 4.7 判断变量 ch 中的 字符种类。 5. 例 4.8 转换成绩评定制。

第4章 VB控制结构

151

选择结构
? If 语句的嵌套
1. 形式
If <表达式1> Then
If <表达式11> Then ?? End If [ Else If <表达式12> Then ?? End If ] End If 第4章 VB控制结构
152

选择结构
? If 语句的嵌套
2. 流程图

第4章 VB控制结构

153

选择结构
? If 语句的嵌套
3. 实验C 3. 调整 3 个变量 中数的大小。
4. 对于嵌套的 If 结构:
? 用锯齿格式书写代码

? If 要与 End If 配对

第4章 VB控制结构

154

选择结构
? Select Case 语句(多分支结构)
1. 形式
Select Case <变量或表达式>
Case <表达式列表1> <语句块1>

Case <表达式列表2>
<语句块2> ??

[ Case Else
<语句块n+1>] End Select 第4章 VB控制结构
155

选择结构
? Select Case 语句(多分支结构)
1. 形式
Select Case <变量或表达式> Case <表达式列表1> <语句块1> Case <表达式列表2>

? ?

变量或表达式:一个变量,或一 个数值表达式或字符表达式; 表达式列表的四种情形之一(不 能出现变量): ① 表达式 ② 一组用“,”分隔的枚举值 ③ <表达式1> To <表达式2> ④ Is <关系运算符> <表达式>
156

<语句块2>
…… [Case Else <语句块n+1>] End Select

第4章 VB控制结构

选择结构
? Select Case 语句(多分支结构)
1. 形式
Select Case <变量或表达式> Case <表达式列表1> <语句块1> Case <表达式列表2>

?

例如: Case 1 To 10 Case ‖a‖ , ‖e‖ , ‖i‖ , ‖o‖ , ‖u‖ Case 2 , 4 , 6 , 8 , Is > 10

<语句块2>
…… [Case Else <语句块n+1>] End Select 157

第4章 VB控制结构

选择结构
? Select Case 语句(多分支结构)
2. 作用 将 <变量或表达式> 的值与 Case 子句中 <表达式列表> 的值逐个进行比较,确定执行哪 组语句块。 若有多个 Case 子句的值与测试值匹配,自 上而下,只执行第一个与之匹配的语句块。

第4章 VB控制结构

158

选择结构
? Select Case 语句(多分支结构)
3. 流程图

第4章 VB控制结构

159

选择结构
? Select Case 语句(多分支结构)
4. 例:用 Select Case 语句实现例 4.7 用 If ? Then ? ElseIf 语句实现的功能。
? 对多个变量进行条件判断时,只能使用 If ? Then ? ElseIf 语句。

5. 例 4.9 判断座标点所属象限。
? 方法二中出现的两个错误:其一, Select Case 后出现两个变量 x 和 y ;其二,Case 后出现了 变量。
第4章 VB控制结构
160

选择结构
? Select Case 语句(多分支结构)
6. 例 4.16 综合应用。随机命题 10 以内的四则运 算,并自动判题评分。

第4章 VB控制结构

161

选择结构
? 条件函数
条件函数 IIf() 和 Choose() ,前者可代替 If 语句,后者可代替 Select Case 语句,均适用于简 单的条件判断。

1. IIf() 函数
IIf (表达式 , 表达式为True时值 , 表达式为False时值) ? 例如求x、y中较大的数,放入变量Tmax中。

第4章 VB控制结构

162

选择结构
? 条件函数
条件函数 IIf() 和 Choose() ,前者可代替 If 语句,后者可代替 Select Case 语句,均适用于简 单的条件判断。

2. Choose() 函数
Choose (整数表达式 , 选项列表) ? 例 4.10 利用 Choose 函数显示今天是星期几。

第4章 VB控制结构

163

循环结构
循环结构是指程序重复执行一组语句。

VB 提供了两种类型的循环语句,一种是计数
型循环语句,另一种是条件型循环语句。

第4章 VB控制结构

164

循环结构
? For 循环语句
For 循环语句是计数型循环语句,用于已知循环
次数的循环结构。

第4章 VB控制结构

165

循环结构
? For 循环语句
1. 形式
For <循环变量> = <初值> To <终值> [Step <步长>] <语句块> [Exit For] <语句块> Next <循环变量> ? ? ? 循环变量:为数值型变量; 步长:默认为 1 ; Exit For :退出循环,执行 Next 语句之后的语句。 第4章 VB控制结构
166

循环结构
? For 循环语句
2. 流程图

第4章 VB控制结构

167

循环结构
? For 循环语句
3. 例 4.11 计算 1~100 之间的奇数和。
? ? 循环变量仅被赋初值一次,退出循环后仍保持退出时的值; 在循环体内不要对循环变量赋值,否则影响循环控制规律。

4. 考察改变循环控制变量对循环的影响。 5. 例 4.12 输出可打印的 ASCII 字符及其编码值。

第4章 VB控制结构

168

循环结构
? For 循环语句
6. 例 4.20 猴子吃桃子。
“递推法”又称为“迭代法”,其基本思想 是把一个复杂的计算过程转化为简单过程的多次 重复。每次重复都是从旧值的基础上递推出新值, 再用新值代替旧值。

第4章 VB控制结构

169

循环结构
? Do?Loop 循环语句
Do…Loop 循环语句是条件型循环语句,用于控
制循环次数未知的循环结构。

第4章 VB控制结构

170

循环结构
? Do?Loop 循环语句
1. 形式1
Do [{ While | Until } <条件>] <语句块> [Exit Do] <语句块> Loop

?
?

先判断后执行,有可能一次也不执行;
执行 Exit Do 退出循环,执行 Loop 语句之后的语句。 第4章 VB控制结构
171

循环结构
? Do?Loop 循环语句
2. 形式2
Do <语句块> [Exit Do] <语句块> Loop [{ While | Until } <条件>]

?
?

先执行后判断,至少执行一次;
省略 { While | Until } <条件> 子句,表示无条件,循环 体内必须有 Exit Do ,否则造成死循环。 第4章 VB控制结构
172

循环结构
? Do?Loop 循环语句
3. 流程图

Do While?Loop

Do?Loop While

第4章 VB控制结构

173

循环结构
? Do?Loop 循环语句
4. 例 4.13 计算我国人口。
5. 例 4.17 用辗转相除法求 最大公约数和最小公倍数。 6. 例 4.18求自然对数 e 的 近似值,要求其误差小于 0.00001。

第4章 VB控制结构

174

循环结构
? 循环的嵌套
一个循环体内又包含了一个完整的循环结构称为 循环的嵌套。
1. 例 4.14 打印九九乘法表。 2. 嵌套循环的注意事项:
? 内循环变量与外循环变量不能同名;

? 外循环必须完全包含内循环,不能交叉;
? 不能从循环体外转向循环体内,反之则可以。 第4章 VB控制结构
175

循环结构
? 循环的嵌套
3. 例 4.19 百元买百鸡。
“试凑法”也称为“穷举法”或“枚举法”, 将可能出现的各种情况一一测试,判断是否满足条 件。一般采用循环来实现。
? 方法一,设 3 个未知数,利用三重循环来实现。

? 方法二,根据 3 个未知数间的关系,利用两重循环来 实现。
第4章 VB控制结构
176

其他辅助控制语句
? Go To 语句
1. 形式
Go To {标号|行号}

2. 作用
无条件地转移到标号或行号指定的语句行。 标号是一个字符序列,行号是一个数字序列。

结构化程序设计中要求尽量少用或不用 Go To 语 句,用选择结构或循环结构来代替。
第4章 VB控制结构
177

其他辅助控制语句
? Go To 语句
3. 例 4.15 判断所输入的数是否为素数。
素数是一个大于或等于 2,且不能被 1 和本身以外 的数整除的整数。 判别数 m 是否为素数最简单的方法是: 对 m 从 i = 2,3,?,m-1,判别 m 能否被 i 整除, 只要能被其中一个数整除,m 就不是素数,否则 m 是 素数。
178

第4章 VB控制结构

其他辅助控制语句
? Exit 语句
1. 多种形式
Exit Exit Exit Exit For Do Sub Function

2. 作用

退出某种控制结构的执行。

第4章 VB控制结构

179

其他辅助控制语句
? End 语句
1. 多种形式
End End End End End End End If Select With Type Sub Function

2. 作用 End 语句为结束一个程 序的运行,其他的语句表示 某个结构的结束,与对应的 结构语句配对出现。

第4章 VB控制结构

180

程序调试
? 错误类型
1. 编辑错误 编辑代码时的打字错误、遗漏关键字或标点 符等语法错误。VB 提示出错信息,并将出错行 变成红色。 2. 编译错误 VB 运行程序前编译执行程序段时产生的错 误,原因为用户未定义变量、遗漏关键字等等。 VB 提示出错信息,并高亮度显示出错行。
第4章 VB控制结构
181

程序调试
? 错误类型
3. 运行错误 VB 在编译通过后,运行代码时发生的错误。 这类错误往往是指令代码执行了一非法操作引 起的,例如数据类型不匹配、试图打开一个不 存在的文件等。

第4章 VB控制结构

182

程序调试
? 错误类型
4. 逻辑错误 程序运行后,得不到所期望的结果。这类 逻辑错误往往是程序本身的逻辑缺陷所造成。 如运算符使用错误、语句的次序不对、循环语 句的初值、终值不正确等。 逻辑错误不会产生错误提示信息,故错误 较难排除,需要程序员仔细地阅读分析程序并 加以调试。
第4章 VB控制结构
183

自学内容
? MsgBox 函数中命名参数的使用

第4章 VB控制结构

184 返回目录

数组的概念
? 引例(例 5.1)
求 100 个学生的平均成绩,并统计高于平均 分的人数。

第5章 数组和自定义类型

185

数组的概念
? 引例(例 5.1)
Dim mark(1 To 100) As Integer Dim aver!, n%, i% aver = 0 For i = 1 To 100 mark(i) = InputBox("输入第" & i & "位学生的成绩") aver = aver + mark(i) Next i aver = aver/100 For i = 1 To 100 n=0 If mark(i) > aver Then n = n+1

求 100 个学生 的平均成绩,并统计 高于平均分的人数。

第5章 数组和自定义类型

Next i Print “平均分:”, aver, “高于平均分的人数:”, n 186

数组的概念
? 数组的基本概念
数组不是一种数据类型,而是一组相同数据类 型、相同名称的变量。 在程序中使用数组,目的就是为了将数组的下 标与循环结构的循环变量控制相结合,简化程序。 数组必须先声明后使用,声明内容包括数组名、 类型、维数、数组大小。

第5章 数组和自定义类型

187

数组的概念
? 数组的基本概念
声明数组,实质上是为该数组在内存中分配了 一个连续的存储区域。 按声明时是否确定数组的大小,可将数组分为 两类: 定长数组 —— 数组大小固定

动态数组 —— 数组大小可变
188

第5章 数组和自定义类型

数组的概念
? 数组的基本概念
在例 5.1 中,语句:
Dim mark(1 To 100) As Integer

声明了一个名为 mark 的一维定长数组,其数据类 型为整型、下标范围 1~100,共有 100 个数组 元素:mark(1)、mark(2)、??、mark(100)。 数组下标的个数即为数组的维数。
189

第5章 数组和自定义类型

定长数组及声明
? 定长数组
在声明时确定了大小的数组称为定长数组,也 称静态数组。

第5章 数组和自定义类型

190

定长数组及声明
? 一维数组
1. 形式:
Dim 数组名(下标) [As 类型]

? 下标必须为常数,不能是表达式或变量; ? 下标形式为:[下界 To] 上界 ? 下界默认为 0;

? 若在程序中使用数组元素时,其下标超出范围,系 统会显示“下标越界”。
第5章 数组和自定义类型
191

定长数组及声明
? 一维数组
2. 正确的数组声明例
Dim a(10) As Integer, Dim St(-3 To 5) As String * 3

3. 错误的数组声明例
n = 10 Dim x(n) As Single

? 数组声明中,下标不能是变量而只能是常量; ? 在程序中使用数组时,下标可以是常量、变量和表 达式。
第5章 数组和自定义类型
192

定长数组及声明
? 多维数组
1. 形式:
Dim 数组名(下标1[, 下标2, ?]) [As 类型]

? 下标个数即数组维数,最多允许声明 60 维数组;
? 数组大小为各维大小的乘积。

2. 例如
Dim LArray(0 To 3, 0 To 4) As Long
或 Dim LArray(3, 4) As Long 第5章 数组和自定义类型
193

动态数组及其声明
? 动态数组
在声明数组时未给出数组大小(省略括号中的 下标)的数组称为动态数组。 动态数组在使用时,再随时用 ReDim 语句指 定数组的大小,系统为其分配内存的存储空间。 静态数组则是在程序编译时分配存储空间的。

第5章 数组和自定义类型

194

动态数组及其声明
? 动态数组
1. 形式:
Dim 数组名() [As 类型] ? ? ReDim 数组名(下标) ? ?

? ReDim 是执行语句,只能出现在过程内; ? 下标可以是常量,也可以是有确定值的变量。

第5章 数组和自定义类型

195

动态数组及其声明
? 动态数组
1. 形式:
Dim 数组名() [As 类型] ? ? ReDim 数组名(下标) ? ?

? 可多次使用 ReDim 语句改变数组的大小和维数; ? ReDim 语 句 会 使 原 数 组 中 的 值 丢 失 , 可 用 Preserve 参数来保留数组中的数据; ? Preserve 只能改变最后一维的大小。
第5章 数组和自定义类型
196

动态数组及其声明
? 动态数组
2. 例 5.2 按每行 5 个数显示有 n 个数的非波那契 数序列。

第5章 数组和自定义类型

197

数组的基本操作
? 数组元素的引用
使用数组时,一般都是针对每个数组元素进行 的。 数组元素的引用形式:
数组名(下标1[,下标2?])

? 下标可以是整型的常数、变量、表达式,甚至是另 一个数组元素。

第5章 数组和自定义类型

198

数组的基本操作
? 数组的赋初值
1. 使用循环结构
For i = 1 To 10 iA(i) = 0 Next i

将数组 iA 的每个数组元素赋初值 0 。

第5章 数组和自定义类型

199

数组的基本操作
? 数组的赋初值
2. 使用 Array() 函数 变量名 = Array(常量列表)
? 变量名必须声明为 Variant 变体类型,并作为数 组使用; ? LBound() 函数和 UBound() 函数用于获得数组 下标的下界和上界。

第5章 数组和自定义类型

200

数组的基本操作
? 数组的输入
通过文本框或 InputBox() 函数实现。例如:
For i = 0 To 3 For j = 0 To 4 sB(i,j) = InputBox(“输入” & i & “,” & j & “的 值:”) Next j Next i

对于大量数据的输入,为便于编辑,一般使用 文本框,见例 5.15。
第5章 数组和自定义类型
201

数组的基本操作
? 数组的赋值
Dim a(4) As Integer, b() As Integer a(0)=0 : a(1)=5 : a(2)=10 : a(3)=13 : a(4)=14 b=a

其中,b = a 相当于执行了: ReDim b(Ubound(a))
? 赋值号两边数组的数据类型 必须一致;
For i = 0 To Ubound(a) B(i) = a(i) Next i

? 赋值号左边必须是一个动态 数组,否则出错。

第5章 数组和自定义类型

202

数组的基本操作
? 数组的输出
例 5.3 输出方阵 sc 中各元素及其上、下三角元素。
For i = 0 To 4 For j = 0 To 4 sc(i, j) = i * 5 + j Print sc(i, j); “ ”; Next j Print ? 换行 Next i

? 矩阵形式的输出,必须用两重循环的固定模式。
第5章 数组和自定义类型
203

数组的基本操作
? 求数组和、最小值、位置及交换数组元素
例 5.4 求一维数组中各元素之和、最小数组元素, 并将最小数组元素与数组的第 1 个元素相交换。
? 先假设第 1 个元素为所求,再与其他元素逐一比较、 替换 min、imin 。

第5章 数组和自定义类型

204

数组的基本操作
? 数组排序
1. 选择法 例 5.5 对已存放在数组中的 n 个数,用选择 法按递增顺序排序。 分析:
? 从 n 个数的序列中选出最小的数(递增),与第 1 个数交换位置; ? 除第 1 个数外,其余 n-1个数再按相同的方法选 出次小者与第 2 个数交换位置;重复 n-1 遍。
第5章 数组和自定义类型
205

数组的基本操作
? 数组排序
1. 选择法 例 5.5 对已
For i = 0 To n – 1 iMin= i For j = i + 1 To n If a(j) < a(iMin) Then iMin = j Next j t = a(i) a(i) = a(iMin) a(iMin) = t Next i
206

存放在数组中的
n 个数,用选择 法按递增顺序排 序。

第5章 数组和自定义类型

数组的基本操作
? 数组排序
2. 冒泡法 例 5.6 用冒泡法实现例 5.5 数组元素的排序。

分析:
? 选择法在每一轮排序时找最大数的下标,出内循 环(一轮排序结束)时交换最大数的位置; ? 冒泡法在每一轮排序时将相邻的数相比较,次序 不对就交换。出内循环时,最大数已沉底。
207

第5章 数组和自定义类型

数组的基本操作
? 数组排序
2. 冒泡法 例 5.6 用冒
For i = 0 To n – 1 For j = 0 To n - 1 If a(j) > a(j + 1) Then t = a(j) a(j) = a(j + 1) a(j + 1) = t End If Next j Next i
208

泡法实现例 5.5
数组元素的排序。

第5章 数组和自定义类型

数组的基本操作
? 数组元素的插入与删除
在排好序的数组中插入或删除一个元素,使数 组保持有序。 先在数组中找到要插入数据的位置,或要删除 的元素,再进行插入或删除操作。 1. 插入数据 例 5.7

2. 删除数据

例 5.8
209

第5章 数组和自定义类型

数组的基本操作
? 分类统计
例 5.14 输入一串字符,统计并显示各字母出 现的次数,不区分字母大小写。
For i = 1 To le c = UCase(Mid(Text1, i, 1)) If c >= "A" And c <= "Z" Then j = Asc(c) - 65 + 1 a(j) = a(j) + 1 End If Next i

第5章 数组和自定义类型

210

列表框和组合框控件
? 列表框
列表框( ListBox )用于显示多个选项,供用 户选择,需要时会自动加上滚动条。 只能从中选择,而不能直接修改其内容。

第5章 数组和自定义类型

211

列表框和组合框控件
? 组合框
组合框(ComboBox)结合的文本框和列表框 的特性,上部为文本框、下部为列表框。用户在组 合框下部选定某项后,它就自动被装入上部文本框 中。 组合框有三种不同的风格:下拉式组合框、简 单组合框、下拉式列表框。

第5章 数组和自定义类型

212

列表框和组合框控件
? 重要属性
1. List 属性
为字符型数组(下标从 0 开始),用来存放列 表框或组合框的选项。 既可在设计模式设置,也可在程序中设置或引用。

第5章 数组和自定义类型

213

列表框和组合框控件
? 重要属性
2. ListIndex 属性
属性值为列表框或组合框中被选定项目的序号, 没有项目被选定时为 -1 。 只能在程序中设置或引用。

3. ListCount 属性
属性值为列表框或组合框中项目的量数。
只能在程序中设置或引用。
第5章 数组和自定义类型
214

列表框和组合框控件
? 重要属性
4. Sorted 属性
设置列表框或组合框中的项目是否按字母顺序排 列显示。 True - 按字母顺序排列、False - 按加入的顺 序排列。

只能在设计模式设置。

第5章 数组和自定义类型

215

列表框和组合框控件
? 重要属性
5. Text 属性
属性值为被选定项目的文本内容。 只能在程序中设置或引用。

第5章 数组和自定义类型

216

列表框和组合框控件
? 列表框的特有属性
1. Selected 属性
为一逻辑数组,其元素对应列表框中相应的项, Selected(i) 为 True 就表示第 i+1 项被选中,其 余的都是 False 。 只能在程序中设置或引用。

第5章 数组和自定义类型

217

列表框和组合框控件
? 列表框的特有属性
2. MultiSelect 属性
设置列表框是否允许多项选择。 0 - None,禁止多项选择;1 - Simple,简 单多项选择;2 - Extended,扩展多项选择。

第5章 数组和自定义类型

218

列表框和组合框控件
? 组合框的特有属性
? Style 属性
设置组合框的类型和行为。 0 - 为下拉式组合框,允许用户的键盘输入; 1 - 为简单组合框,允许用户的键盘输入; 2 - 为下拉式列表框,不允许用户的键盘输入。

第5章 数组和自定义类型

219

列表框和组合框控件
? 方法
1. AddItem 方法
在列表框或组合框中加入一个项目。 形式为:

对象.AddItem item [, index]
? 对象 - 列表框或组合框;

? Item - 字符串;
? Index - 新增项目的位置。
第5章 数组和自定义类型
220

列表框和组合框控件
? 方法
2. RemoveItem 方法
从列表框或组合框中删除一个项目。 形式为:

对象.RemoveItem index
? 对象 - 列表框或组合框;

? Index - 被删除项目的位置。

第5章 数组和自定义类型

221

列表框和组合框控件
? 方法
3. Clear 方法
清除列表框或组合框中的所有项目。 形式为:

对象.Clear
? 对象 - 列表框或组合框。

第5章 数组和自定义类型

222

列表框和组合框控件
? 事件
列表框可以响应 Click 和 DblClick 事件。 所有类型的组合框都可响应 Click 事件,只有 简单组合框才能接收 DblClick 事件。 例 5.9 对列表框进行项目添加、删除和清除 操作。

例 5.10 编写使用屏幕字体、字号的程序。

第5章 数组和自定义类型

223

列表框和组合框控件
? 列表框和组合框应用
例 5.11 利用列表框实现数据项的插入和删除。 例 5.12 利用简单组合框对省市名称进行维护。

第5章 数组和自定义类型

224

综合应用
? 大量数据的输入和编辑
例 5.15 输入一系列的数据,并将它们分离后存 放在数组中。对输入的数据允许修改和自动识别非 数字数据。 分析:
? ? ? ? 用文本框输入、编辑数据,输入时去除非法数字; 输入结束后以 Replace 函数去除重复的分隔符; 用 Split 函数,按分隔符分离,结果放到数组中; 用 Join 函数将数组中各元素合并成一个字符串。
第5章 数组和自定义类型
225 返回目录

用户自定义过程
除了 VB 系统提供的内部函数过程和事件过程 外,用户也可自定义过程:
? 以 Function 保留字开始的为函数过程; ? 以 Sub 保留字开始的为子过程。

使用过程可以使程序简练,便于程序的调试和 维护。

第6章 过程

226

函数过程
? 引例(例 6.1)
已知多边形的各条边和对角线的长度,计算多 边形的面积。 分析:
? 计算多边形面积,可将多边形 分解成若干个三角形。
a
g
S1

b c e
S3 S2

d

? 计算三角形面积的公式为:
1 area = c(c ? x)(c ? y )(c ? z ) , c = ( x ? y ? z ) 2

f

第6章 过程

227

函数过程
? 引例(例 6.1)
1. 定义函数过程 area
Function area(x!, y!, z!) As Single Dim c! c = 1 / 2 * (x + y + z) area = Sqr(c * (c - x) * (c - y) * (c - z)) End Function

第6章 过程

228

函数过程
? 引例(例 6.1)
2. 在事件过程中调用函数过程
Private Sub Form_Click() Dim a!, b!, c!, d!, e!, f!, g!, s1!, s2!, s3! a = InputBox("输入a") : b = InputBox("输入b") c = InputBox("输入c") : d = InputBox("输入d") e = InputBox("输入e") : f = InputBox("输入f") g = InputBox("输入g") : s1 = area(a, b, c) s2 = area(c, d, e) : s3 = area(e, f, g) MsgBox("多边形面积 = " & s1 + s2 + s3) End Sub 第6章 过程
229

函数过程
? 函数过程的定义
自定义函数过程有两种方法:
? 在代码窗口中直接定义; ? 在代码窗口中执行[工具][添加过程]命令。

第6章 过程

230

函数过程
? 函数过程的定义
自定义函数过程的形式:
Function 函数过程名([形参列表]) [As 类型] 局部变量或常数定义 <语句块1> 函数名 = 表达式 函数过程体 [Exit Function] <语句块2> 函数名 = 表达式 End Function 第6章 过程
231

函数过程
? 函数过程的定义
? 函数过程名的命名规则同变量的命名规则; ? 定义过程命令中的参数称为形参或哑元,仅代表参 数的个数、类型和位置顺序;
? 在定义过程时,形参无值 ? 在调用过程时,再用具体的值(实参)代替形参

? 即使无参数,函数过程名后的括号不能省略;

? 在函数体内至少对函数名赋值一次。

第6章 过程

232

函数过程
? 函数过程的定义
例 6.2 编一个求最大公约数的函数过程。
Function gcd%(ByVal m%, ByVal n%) 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 gcd = n End Function

第6章 过程

233

函数过程
? 函数过程的调用
函数过程调用与标准函数调用一样。 形式:
函数过程名([实参列表])

? 调用过程命令中的参数称为实参或实元,必须与形 参的个数相同,其位置与类型必须一一对应;

? 实参可以是常量、变量或表达式。
? 例:调用例 6.2 求最大公约数的函数过程。
第6章 过程
234

函数过程
? 函数过程的调用
? 调用过程时的执行流程(见教材 P128 图 6.3) ? 例 6.3 编一函数,统计字符串中汉字的个数。

第6章 过程

235

子过程
? 引例(例 6.4)
编一子过程,对 Label1 控件进行移动,其中 通过参数 Tag 的值(1 或 -1)决定向右下角还是 左上角移动。 ? 在定义子过程 MyMove 中,形参 Tag 从主调 程序中获得实参 k 的值,决定 Label1 的移动 方向; ? 子过程名 MyMove 本身是没有值的。
第6章 过程
236

子过程
? 子过程的定义
定义子过程的形式:
Sub 子过程名([形参列表]) 局部变量或常数定义 <语句块1> [Exit Sub] <语句块2> End Sub

子过程体

第6章 过程

237

子过程
? 子过程的调用
调用子过程的语句形式:
子过程名 [实参列表]


Call 子过程名(实参列表)

? 若需要使调用命令中的实参获得子过程的返回值, 则实参只能是变量而不能是常量、表达式或控件名。

第6章 过程

238

子过程
? 与函数过程的区别
? 函数过程名有值、有类型,在函数过程体内至少赋 值一次;子过程名无值、无类型,在子过程体内不 能对子过程名赋值。 ? 调用时,子过程调用是一句独立的语句;函数过程 不能作为单独的语句来调用,须参与表达式运算。

第6章 过程

239

子过程
? 使用过程的注意事项
? 过程有一个返回值时,使用函数过程较为直观;无 返回值或有多个返回值时,习惯使用子过程。 ? 能用函数过程定义的,也能用子过程定义;反之则 不一定。即子过程比函数过程的适用面要广。 ? 形参没有具体的值,只代表参数的个数、类型和位 置,所以只能是简单变量而不能是常量或表达式。

第6章 过程

240

子过程
? 例 6.5
? 分别编写子过程和函数过程,统计字符串 S 中 定冠词 the 出现的个数,并调用之。 方法:用InStr函数反复在字符串S找The子串。 分析:要抓住函数过程和子过程的区别:即函数名 有一个值、子过程名无值的特点。当定义好函数 过程后,要改为子过程,只要将函数过程的返回 结果作为子过程的形参,即在子过程中增加一个 参数;反之亦然。
第6章 过程
241

参数传递
? 概念
在调用过程时,主调过程的实参将数据传递给 被调过程的形参,称为参数传递。 在参数传递中,一般是按位置传送:按实参的 位置次序与形参的位置次序对应传送,与参数名无 关。

第6章 过程

242

参数传递
? 形参和实参
1. 形式参数 用户自定义函数过程或子过程时,在过程名后 圆括号中的参数,也称为形参或哑元。仅代表参数 的个数、类型和位置顺序。 2. 实际参数 调用自定义函数过程或子过程时,在过程名后 圆括号中的参数,也称为实参或实元。必须与形参 的个数相同,其位置与类型必须一一对应。
第6章 过程
243

参数传递
? 传址与传值
参数传递有传址( ByRef ,又称为引用)和传 值(ByVal)两种。 1. 传值 形参得到的是实参的值,形参值的改变不影响 实参的值。 2. 传址 要求实参必须是变量名,形参得到的是实参的 地址,形参值的改变会导致实参的值发生变化。
第6章 过程
244

参数传递
? 传址与传值
例 6.6 通过两个变量值的交换例,区分传址和传 值两种方法。

第6章 过程

245

参数传递
? 传址与传值
传值和传址的选用规则: 1. 要将被调过程中的结果返回给主调程序,则形参 必须是传址方式。这时实参必须是同类型的变量 名(包括简单变量、数组名等),而不能是常量、 表达式。 2. 若不希望过程修改实参的值,则应选用传值方 式,减少各过程间的关联。因为在过程体内对形 参的改变不会影响实参。
第6章 过程
246

参数传递
? 数组参数的传递
数组作为过程参数时,系统规定只能通过传址 方式进行参数传递。
? 作为实参或形参的数组名,不用定义维数,但圆括 号不能省。 ? Lbound 和 Ubound 函数可确定数组的下、上界。

? 例 6.7 求任意一维数组中各元素之和并改变各数组 元素的值。
第6章 过程
247

变量的作用域
? 概念
变量随着其声明时所处位置的不同,其可被访 问的范围也不同,即其作用域不同。

第6章 过程

248

变量的作用域
? 变量的三种作用域
变量的作用域分为局部变量、窗体 / 模块级变 量和全局变量三种。 1. 局部变量 在过程内用 Dim 或 Static 声明(或不加 说明直接使用)的变量,只能在本过程中使用。

第6章 过程

249

变量、过程的作用域
? 变量的三种作用域
变量的作用域分为局部变量、窗体 / 模块级变 量和全局变量三种。 1. 局部变量 2. 窗体/模块级变量 在“通用声明”段中用 Dim 或 Private 语 句声明的变量,可被本窗体 / 模块的任何过程访 问。
250

第6章 过程

变量、过程的作用域
? 变量的三种作用域
变量的作用域分为局部变量、窗体 / 模块级变 量和全局变量三种。 1. 局部变量 2. 窗体/模块级变量 3. 全局变量 在“通用声明”段中用 Public 语句声明的 变量,可被本应用程序的任何过程或函数访问。
251

第6章 过程

变量、过程的作用域
? 变量的三种作用域
不同作用范围的三种变量声明及使用规则

第6章 过程

252

变量、过程的作用域
? 变量的三种作用域
? 例 6.11 在标准模块文件中声明不同级的变量。
Public Pa As integer Private Mb As string Sub F1() Dim y As integer …… End Sub Sub F2() Dim m As Single …… End Sub ' 全局变量 ' 窗体 / 模块级变量 ' 局部变量

' 局部变量

第6章 过程

253

变量、过程的作用域
? 变量的三种作用域
例:若声明不同级的同名变量,VB 按局部、窗体/ 模块、全局的次序进行访问。
Public Temp As integer ' 全局变量 Sub Form_Click() Dim Temp As Integer ' 局部变量 Temp = 10 ' 访问局部变量 Form1.Temp = 20 ' 访问全局变量必须加窗体名 Print Form1.Temp , Temp ' 显示 20 10 End Sub

第6章 过程

254

变量、过程的作用域
? 静态变量
局部变量声明语句包括 Dim 和 Static ,后者 称为静态变量。
? Dim 声明的局部变量,在被过程调用时分配内存单 元并初始化;过程结束时释放变量内存单元。 ? Static 声明的局部变量,在每次调用过程时,变量 都保持原来的值。

第6章 过程

255

变量、过程的作用域
? 静态变量
静态变量的声明形式:
Static 变量名 [AS 类型]

? 例 6.12 编一程序,利用局部变量 Count 统计单击 窗体的次数。

第6章 过程

256

综合应用
? 数制转换
例 6.13 将十进制整数 m 转换成 r(2~16) 进制字符串。
? 方法为:用 m 不断地除以 r 取余数,直到商为零, 再以反序得到结果。

第6章 过程

257

综合应用
? 例 6.14 加密和解密
最简单的加密方法是:
? 将每个字母 c 加一序数 k:c = chr(Asc(c) + k) 如 k 为 2 时 , “ A‖→―C‖ 、 “ a‖ →―c‖ 、 “ B‖ →―D‖、 … … ? 当加序数后的字母超过 “Z‖ 或 “z‖ ,则:

c = chr(Asc(c) + k - 26)
? 解密为加密的逆过程。
第6章 过程
258

综合应用
? 查找
在线性表(在此为数组)中,根据指定的关键 值,找出与其值相同的元素。 一般有顺序查找和二分法查找两种,用于顺序 查找的数组可以无序,用于二分法查找的数组则必 须有序。

第6章 过程

259

综合应用
? 查找
1. 顺序查找 根据查找的关键值与数组中的元素逐一比较, 查找效率低,平均查找次数为 n/2 。 例 6.15 顺序查找例。

第6章 过程

260

综合应用
? 查找
2. 二分法查找 基本思想为:将要查找的关键值 Key 同数 组的中间(mid)项元素比较。
? 若 Key < a(mid) ,则 high = mid – 1,查找 范围缩小一半,继续查找; ? 若 Key = a(mid) ,则找到,查找结束; ? 若 Key > a(mid) ,则 low = mid + 1,查找 范围缩小一半,继续查找。
第6章 过程
261

综合应用
? 查找
2. 二分法查找 查找效率高,查找次数为 log2n 。 例:二分法查找例(递归调用子过程)。

第6章 过程

262

综合应用
? 字符处理应用
例 6.17 编写一个英文打字训练的程序,要求:
1. 在标签框内随机产生30个字母的范文; 2. 当焦点进入输入文本框时开始计时,并显示当时的 时间; 3. 当输入了30个字母时结束计时,禁止向文本框输入 内容,显示打字的速度和正确率。。 ? 解题关键:对输入的字符串与随机产生的字符串, 一一对应比较,判断输入正确与否。
第6章 过程
263 返回目录

VB 的控件
VB 中可使用的控件有三类:

标准控件、ActiveX 控件、可插入对象。

? 标准控件
标准控件是指出现在工具箱中的 20 个 VB 内 部控件。

第7章 用户界面设计

264

VB 的控件
VB 中可使用的控件有三类:

标准控件、ActiveX 控件、可插入对象。

? 标准控件

? ActiveX 控件
ActiveX 控件是一种 ActiveX 部件,指可以 重复使用的编程代码和数据,由用 ActiveX 技术 创建的对象所组成。(教材 P151 表 7.1 为部分 ActiveX 控件及所在的部件和文件名。)
第7章 用户界面设计
265

VB 的控件
VB 中可使用的控件有三类:

标准控件、ActiveX 控件、可插入对象。

? 标准控件

? ActiveX 控件
? 可插入对象
可插入对象是指 Windows 应用程序的对象, 如 Microsoft Excel 工作表。
第7章 用户界面设计
266

单选按钮、复选框和框架
? 单选按钮
单选按钮( OptionButton )用于在多个选项 中由用户选择其一的情况,它必须成组出现,必须 并且最多只能选择其中的一项。

? 复选框
复选框( CheckBox )用于在多个选项中由用 户选择其中的一项或同时选择多项的情况。
267

第7章 用户界面设计

单选按钮、复选框和框架
? 框架
框架(Frame)用于对单选按钮进行分组,对 各组单选按钮的操作不会相互影响。 用于对其他类型的控件进行分组时,框架可提 供视觉上的区分和总体的激活或屏蔽特性。

第7章 用户界面设计

268

单选按钮、复选框和框架
? 主要属性
1. Caption 属性
设置单选按钮、复选框和框架上的文本标题。

2. Value 属性
设置单选按钮或复选框的状态。 单选按钮:True - 被选定、False - 未被选定。

复选框:0-未被选定、1-被选定、2-部分选定。

第7章 用户界面设计

269

单选按钮、复选框和框架
? 事件
单选按钮、复选框都能响应 Click 事件;框架 可以响应 Click 和 DblClick事件,但一般不需要 编写事件过程。

? 创建框架及其内部控件
? 先建框架,再在其中创建各种控件;

? 只能用拖拽鼠标的手工方式创建控件;
? 须通过剪贴板,用框架对已有控件进行分组。
第7章 用户界面设计
270

单选按钮、复选框和框架
? 例 7.1
用单选按钮和复选框设置文本框的字体。

? 例 7.2
单选按钮、复选框和框架的应用示例。

第7章 用户界面设计

271

滚动条和进度条
? 滚动条
滚动条(ScrollBar)是 VB 的标准控件,用来 附在窗体上协助观察数据或确定位置的,有水平的 和垂直的两种。

第7章 用户界面设计

272

滚动条和进度条
? 滚动条
? 主要属性
1. Value 属性 滑块所处位置所代表的值。 2. Max 和 Min 属性 滑块处于最大或最小位置时所代表的值(-32768 ~ 32767)。

第7章 用户界面设计

273

滚动条和进度条
? 滚动条
? 主要属性
3. SmallChange 属性 最小变动值属性,单击滚动条两端箭头时滑块移 动的增量值。 4. LargeChange 属性 最大变动值属性,在滚动条的空白处或 Slide 控件滑块与两端之间滑动时,滑块移动的增量值。

第7章 用户界面设计

274

滚动条和进度条
? 滚动条
? 事件
拖动滚动条内的滑块时会触发 Scroll 事件,而改 变 Value 属性值时则会触发 Change 事件。

? 例 7.3 计算从滚动条所获数据的阶乘。 ? 例 7.4 将 3 个滚动条输入的三种基本颜色进行 合成。

第7章 用户界面设计

275

滚动条和进度条
? 进度条
进度条(ProgressBar 控件)是 ActiveX 控 件,用来指示事务处理的进度,也有水平和垂直的 两种。

第7章 用户界面设计

276

滚动条和进度条
? 进度条
? 主要属性
1. Orientation 属性 0-水平方向、1-垂直方向。 2. Max 和 Min 属性 用于设置控件的界限。

3. Value 属性
只能在执行状态设置,决定控件被填充了多少。
第7章 用户界面设计
277

滚动条和进度条
? 进度条
? 例 7.5 用进度条指示数组的计算进度。

第7章 用户界面设计

278

图形框和图像框
? PictureBox(图形框)控件
主要作用是显示图片或作为其他控件的容器。 可使用 LoadPicture() 函数装入或删除图形,格 式为:
图形框对象.Picture = LoadPicture(“图形文件名”) 图形框对象.Picture = LoadPicture()

其 Autosize 属性设置为 True 时,图形框能 自动调整大小与显示的图片匹配。
第7章 用户界面设计
279

图形框和图像框
? Image(图像框)控件
使用 Image 控件与 PictureBox 控件的方法 相同,但图像框比图形框占用更少的内存空间,且 图像框内不能放置其他控件。 其 Stretch 属性值为 False 时,图像框可自 动改变大小,以适应其中的图形;Stretch 属性值 为 True 时,则图形自动调整尺寸,以适应图像框 的大小。
第7章 用户界面设计
280

图形框和图像框
? Image(图像框)控件
? 例 7.6 图像框的 Stretch 属性对所加载图形的 影响。

第7章 用户界面设计

281

定时器
定 时 器 ( Timer ) 控 件 以 一 定 的 时 间 间 隔 ( Interval )激发定时器事件( Timer)而执行相 应的程序代码。

第7章 用户界面设计

282

定时器
? 主要属性
1. Enabled 属性 属性值为 True (默认值)时有效计时,属性 值为 False 时停止计时(不产生 Timer 事件)。 2. Interval 属性 两次 Timer 事件之间的时间间隔,单位为ms (0.001s)。Interval 值为 0 时,屏蔽定时器。
283

第7章 用户界面设计

定时器
? 事件
定时器控件只有一个 Timer 事件。 定时器产生 Timer 事件的两个前提条件是:
1. Enabled 属性为 True; 2. Interval 属性为非 0。

? 例 7.7 倒计时程序

? 例 7.8 蝴蝶飞舞
第7章 用户界面设计
284

通用对话框
? 通用对话框
VB 的通用对话框(CommonDialog)控件是 一种 ActiveX 控件,它提供了一组基于 Windows 的标准对话框界面,包括“打开”、“另存为”、 “颜色”、“字体”、“打印”和“帮助”等六种 标准对话框。

这些对话框仅用于返回信息,不能真正实现相 应的操作,还必须通过另外编程来实现这些功能。
第7章 用户界面设计
285

通用对话框
? 通用对话框
? 在设计模式,窗体上显示通用对话框图标; ? 在程序运行时,窗体上不显示通用对话框图标;

? 在程序中用 Action 属性或 Show 方法激活, 可调出相应的对话框。
? 引例 7.9 “打开”文件对话框应用示例。

第7章 用户界面设计

286

通用对话框
? 通用对话框
在程序中 显示通用对话 框,必须对其 Action 属性正 确赋值,或使 用 Show 方法 代替数字值。
第7章 用户界面设计
287

通用对话框
? 通用对话框的主要共同属性
1. Action 属性
打开通用对话框。

2. CancelError 属性
属性值为 True 时,单击对话框中的“取消” 按钮,将出现错误警告,同时自动将错误标志 Err.Number 设 置 为 32755 , 供 程 序 判 断 ; 为 False(缺省)时,单击“取消”按钮,则无错误警 告。
第7章 用户界面设计
288

通用对话框
? 通用对话框的主要共同属性
3. DialogTiltle 属性
通用对话框标题。

第7章 用户界面设计

289

通用对话框
? “文件”对话框
用于获取文件名,包括“打开”对话框和“另 存为”对话框两种。 可遍历磁盘的整个目录结构,找到所需要的文 件。

第7章 用户界面设计

290

通用对话框
? “文件”对话框
InitDir 属性

FileName 属性

FilterIndex 属性

Filter 属性

第7章 用户界面设计

291

通用对话框
? “文件”对话框
1. FileName 属性
用于设置或得到用户所选的文件名(包含路径 名)。

2. FileTitle 属性
用于返回文件名(不包含路径名),该属性在设 计时无效,在程序中为只读。

第7章 用户界面设计

292

通用对话框
? “文件”对话框
3. Filter 属性
用于过滤文件类型。其设置格式为:
文件说明 | 文件类型

如:
Word 文档 | *.doc | 文本文件 | *.txt | 所有文件 | *.*

4. FilterIndex 属性
用于指定在“文件类型”列表框中的默认设置。
第7章 用户界面设计
293

通用对话框
? “文件”对话框
5. InitDir 属性
用于指定对话框中的初始目录。

6. DefaultExt 属性(“另存为”对话框专有)
用于指定所存文件的默认扩展名。

第7章 用户界面设计

294

通用对话框
? “文件”对话框
? 例 7.10 简单的文本编辑程序。 ? 例 7.11 为例 7.10 中的“另存为…”命令按钮 编写事件过程,把文本框内的数据存盘。

第7章 用户界面设计

295

通用对话框
? “颜色”对话框
是一块调色板,其中除包含了基本颜色外,还 包含自定义颜色供用户自己调色。 ? Color 属性用于返回或设置指定的颜色。 ? 例 7.12 为例 7.10 中的“颜色…”命令按钮编 写事件过程,设置文本框的前景色。

第7章 用户界面设计

296

通用对话框
? “字体”对话框
供用户选择字体,之前必须设置 Flags 属性 值,指示所显示的字体类型,否则显示“没有安装 字体”的 出错提示。

第7章 用户界面设计

297

通用对话框
? “字体”对话框
FontName 属性 FontBold FontItalic 属性 FontSize 属性

FontStrikethru 属性 FontUnderline 属性 Color 属性

第7章 用户界面设计

298

通用对话框
? “字体”对话框
1. Flags 属性
用于通知 CommonDialog 控件是否显示屏幕 字体、打印机字体或两者同时显示。

第7章 用户界面设计

299

通用对话框
? “字体”对话框
2. Font 属性集
用于设置字体,包括: ? ? ? ? ? ? FontName 属性 FontSize属性 FontBold 属性 FontItalic 属性 FontStrikethru属性 FontUnderline 属性
第7章 用户界面设计
300

通用对话框
? “字体”对话框
3. Color 属性
用于设置字体颜色。要使用这个属性,必须使 Flags 属性含有 cdlCFEffects 值。

? 例 7.13 为例 7.10 中的“字体…”命令按钮编 写事件过程,设置文本框的字体。

第7章 用户界面设计

301

通用对话框
? “打印”对话框
供用户选择打印机和设置打印机的属性。 “打印”对话框并不能真正实现打印工作,它 仅仅供用户选择打印参数,所选参数存于各属性中, 还必须要通过编程来处理打印操作。

第7章 用户界面设计

302

通用对话框
? “打印”对话框
1. Copies 属性
用于指定打印份数。

2. FromPage 属性
用于指定打印起始页码。

3. ToPage 属性
用于指定打印终止页码。

第7章 用户界面设计

303

通用对话框
? “打印”对话框
? 例 7.14 为例 7.10 中的“打印…”命令按钮编 写事件过程,打印文本框中的数据。

第7章 用户界面设计

304

菜单设计
菜单用于对应用程序的命令进行分组,包括下 拉式菜单和弹出式菜单两种。 ? 下拉式菜单:固定位于窗口顶部标题栏下方。 ? 弹出式菜单:显示于窗体内的浮动菜单(快捷 菜单)。

第7章 用户界面设计

305

菜单设计
下拉式菜单系统的组成:
菜单标题
主菜单栏 热键 菜单项

快捷键

分隔线

子菜单标题

子菜单标记 306

第7章 用户界面设计

菜单设计
? 菜单编辑器
“菜单编辑器”可方便地在窗体上建立菜单, 执行[工具][菜单编辑器]命令打开其对话框。

第7章 用户界面设计

307

菜单设计
? 菜单编辑器
每个菜单项都是一个控件对象,只有一个 Click 事件。 ? Caption 属性,菜单上出现的字符。 ? Name 属性,供代码中引用,屏幕不出现。 ? Checked 属性,在菜单项左边加上√标记。 ? Enabled 属性,控制菜单项可否被选择。 ? Visible 属性,控制菜单项是否可见。
第7章 用户界面设计
308

菜单设计
? 菜单编辑器
1. 创建菜单项 2. 分隔菜单项
使用水平线将一些菜单项分隔为逻辑组,方法 是在菜单项的标题栏中输入一个减号“-”。

第7章 用户界面设计

309

菜单设计
? 菜单编辑器
1. 创建菜单项 2. 分隔菜单项

3. 热键与快捷键
在字符前加一个 & 符号构成热键。例如,输入 “新建 (&N)”,则菜单显示“新建 (N)”, N 即为 热键。 在“快捷键”下拉列表中选择一个快捷键。
第7章 用户界面设计
310

菜单设计
? 下拉式菜单
? 例 7.15 将例 7.10 中的命令组织成菜单。

第7章 用户界面设计

311

菜单设计
? 弹出式菜单
弹出菜单是独立于窗体菜单栏而显示在窗体内 的浮动菜单,其显示位置取决于单击鼠标键时指针 的位置。

第7章 用户界面设计

312

菜单设计
? 弹出式菜单
? 弹出菜单的设计
照样是使用菜单编辑器,但不要选中“可见”复选框。

? 显示弹出菜单
使用 PopupMenu 方法,形式是: [对象]. PopupMenu 菜单名[, 标志参数, x, y]

标志参数用于进一步定义弹出菜单的位置和性能, 可采用 P175 表 7.8 中的值。
第7章 用户界面设计
313

菜单设计
? 弹出式菜单
? 例 7.16 为例 7.15 中的文本框配置弹出菜单。

第7章 用户界面设计

314

综合应用
? 例 7.21 设计一个字幕滚动程序 ? 例 7.22 编写一个自动红绿灯模拟程序

第7章 用户界面设计

315 返回目录

文件概述
程序运行时存储在变量中的数据不能长期保存, 在程序结束时变量所占存储空间会被释放。要长期 保存数据,必需存放在文件或数据库中。 文件是存储在外存储器上的具有一定格式的数 据集合,用文件名加以标识,即对文件操作时按名 存取。

第8章 数据文件

316

文件概述
? 文件分类
? 按文件的内容分类
文件分为程序文件和数据文件。

? 按文件所存储信息的形式分类
文件分为 ASCII 文件和二进制文件。 ASCII 文件存放的是各种数据的 ASCII 代码,可 用记事本打开;二进制文件存放的是各种数据的二进制 代码,不能用记事本打开,必须用专用程序打开。
第8章 数据文件
317

文件概述
? 文件分类
? 按文件的访问模式分类
文件分为顺序文件、随机文件和二进制文件。 顺序文件结构简单,一行一条记录,可长可短,之 间以换行符分隔;访问模式简单,只能按顺序进行访问 (读/写),用来处理文本文件比较方便。

在 VB 中,顺序文件就是文本文件,所有类型的数 据写入顺序文件前都被转换为 ASCII 字符。
第8章 数据文件
318

文件概述
? 文件分类
? 按文件的访问模式分类
文件分为顺序文件、随机文件和二进制文件。 随机文件中每条记录长度相同,之间不需要特殊的 分隔符,通过记录号就可直接访问指定记录。与顺序文 件相比,存取速度快、更新简便。

第8章 数据文件

319

文件概述
? 文件分类
? 按文件的访问模式分类
文件分为顺序文件、随机文件和二进制文件。 按访问模式分类的二进制文件与按信息存储形式分 类的二进制文件不同,这种文件由字节组成,允许程序 按所需的任何方式组织和访问数据。这类文件的灵活性 最大、编程工作量也最大。

第8章 数据文件

320

文件概述
? 文件读/写
处理数据文件的程序由三部分组成: 1. 打开文件
打开文件时,VB 系统在内存中开辟的数据存储 区域称为文件缓冲区,每个文件缓冲区的编号称为 文件号。 文件号可由程序员在程序中指定,也可以使用 FreeFile 函数自动获得。
第8章 数据文件
321

文件概述
? 文件读/写
处理数据文件的程序由三部分组成: 1. 打开文件

2. 进行读/写操作
为减少直接读 /写外存的次数,将数据写入文件 时,先写入文件缓冲区暂存,等文件缓冲区满了或 文件关闭时才一次性输出到文件;从文件读数据时, 先将数据送到文件缓冲区,再提交给变量。
第8章 数据文件
322

文件概述
? 文件读/写
处理数据文件的程序由三部分组成: 1. 打开文件

2. 进行读/写操作
3. 关闭文件
文件操作结束后要关闭文件,以免发生数据丢失, 大多数情况下操作系统会自动关闭文件。

第8章 数据文件

323

顺序文件
? 引例
例 8.1 对文件 C:\Scores.dat 进行读写。

第8章 数据文件

324

顺序文件
? 常用语句和函数
1. 打开文件 Open 文件名 For 模式 As [#]文件号
三种模式:Output —— 对文件进行写操作;
Input —— 对文件进行读操作; Append —— 在文件末尾追加记录。

文件号:1~511,可利用 FreeFile 函数获得。
文件名可以为字符串常量,也可以是字符型变量。
第8章 数据文件
325

顺序文件
? 常用语句和函数
2. 顺序访问模式 —— 写操作 往顺序文件写入数据使用 Write 和 Print 语句。

? Write 语句
Write #文件号, [输出列表]
Write 在数据项之间插入“,”,并给字符串加 上双引号,数值数据则没有双引号。

第8章 数据文件

326

顺序文件
? 常用语句和函数
2. 顺序访问模式 —— 写操作 往顺序文件写入数据使用 Write 和 Print 语句。

? Write 语句
? Print 语句 Print #文件号, [输出列表]
Print 语句功能与 Write 基本相同,区别在于 字符串不加双引号,数据之间没有“,”。
第8章 数据文件
327

顺序文件
? 常用语句和函数
2. 顺序访问模式 —— 写操作 往顺序文件写入数据使用 Write 和 Print 语句。

? 例 8.2 用 Print 和 Write 语句把数据写入文件。

第8章 数据文件

328

顺序文件
? 常用语句和函数
3. 关闭文件 输出语句是将数据送到缓冲区,关闭文件时 才将缓冲区中数据写入文件。 Close [[#] 文件号]
? 如果省略了文件号, Close 语句将关闭所有已经打 开的文件。

第8章 数据文件

329

顺序文件
? 常用语句和函数
4. 读操作 读顺序文件时常用的函数:

? EOF (文件号)
测试文件指针是否到文件末尾。

? LOF (文件号)
测试文件的长度。
330

第8章 数据文件

顺序文件
? 常用语句和函数
4. 读操作 读顺序文件时常用的语句:

? Input #文件号, 变量列表
从打开的顺序文件中读出数据,并将数据赋给变量。

? LineInput #文件号, 字符串变量
读出一行数据赋给变量,数据中不包含回车换行符。
331

第8章 数据文件

顺序文件
? 应用举例
1. 例 8.3 设计一个文件加密程序。 2. 例 8.4 编写顺序文件读写程序。
? 选择“添加数据”按钮,则将一个学生的学号、 姓名和成绩(Integer)添加到 Score.txt 文件 中; ? 选择“读取数据”按钮,则从文件读取数据并计 算总分和平均成绩,最后送入文本框。
第8章 数据文件
332

随机文件
? 引例
例 8.5 编写一个随机文件应用程序 。

第8章 数据文件

333

随机文件
? 常用语句
1. 打开文件 Open 文件名 For Random As #文件号 [Len = 记录长度]
? 随机文件打开后,可以同时进行写入与读出操作; ? 记录长度的默认值是 128 个字节。

2. 关闭文件
Close ([#] 文件号)
第8章 数据文件
334

随机文件
? 常用语句
3. 写文件 Put [#]文件号, [记录号], 变量名
? 将一个记录变量的内容,写入所打开的磁盘文件中 指定的记录位置处;
? 如果忽略记录号,则在当前记录前插入一条记录。

第8章 数据文件

335

随机文件
? 常用语句
4. 读文件 Get [#]文件号, [记录号], 变量名
? 从随机文件中将指定的记录内容读入记录变量中;
? 如果忽略记录号,则表示读出当前记录后的那一条 记录。

第8章 数据文件

336

随机文件
? 应用举例
例 8.6 编写学生信息管理程序。

第8章 数据文件

337

工程的组成
? 工程文件包含了一个应用程序的所有文件
1. 工程文件(.vbp) 2. 窗体文件(.frm)

3. 窗体的二进制数据文件(.frx)
4. 标准模块文件(.bas) 5. 类模块的文件(.cls) 6. 资源文件(.res) 7. ActiveX 控件的文件(.ocx)
第2章 VB 可视化编程基础
338

其他辅助控制语句
? With 语句
1. 形式
With <对象> <语句块> End With

2. 作用 对某个对象执行一系列的操作,而不用重复 指出对象的名称。
第4章 VB控制结构
339

常用算法(一)
算法是对某个问题求解过程的描述。

同一问题有多种算法描述,程序就是用计算机 语言表述的算法,流程图就是图形化了的算法。

第4章 VB控制结构

340

常用算法(一)
? 累加、连乘
1. 例:求 1~100 的 5 或 7 的倍数之和。
Sum = 0 For i = 1 To 100 If i Mod 5 = 0 Or i Mod 7 = 0 Then Sum = Sum + i End If Next i Print Sum

第4章 VB控制结构

341

常用算法(一)
? 累加、连乘
2. 例:求 3~10的乘积。
t=1 For i = 3 To 10 t=t*i Next i Print t

第4章 VB控制结构

342

常用算法(一)
? 累加、连乘
3. 例 4.14 求自然对数 e 的近似值,要求其误差 小于 0.00001。

第4章 VB控制结构

343

常用算法(一)
? 穷举法
“穷举法”也称为“枚举法”,该算法将可能出 现的各种情况一一测试,判断是否满足条件。一般 采用循环来实现。 例 4.16 百元买百鸡问题。
? 方法一,设 3 个未知数,利用三重循环来实现。

? 方法二,根据 3 个未知数间的关系,利用两重循环 来实现。
第4章 VB控制结构
344

常用算法(一)
? 递推法
“递推法”又称为“迭代法”,其基本思想是把 一个复杂的计算过程转化为简单过程的多次重复。 每次重复都是从旧值的基础上递推出新值,再用新 值代替旧值。 例 4.17 猴子吃桃子。

第4章 VB控制结构

345

常用算法(一)
? 求最大值或最小值
在若干个数中求最大值,一般先假设一个较 小的数为最大值的初值(若无法估计较小的值, 则取第一个数);然后将每一个数与假设的最大 值比较,若该数大于最大值,将该数替换为最大 值;依次逐一比较。

第4章 VB控制结构

346

常用算法(一)
? 求最大值或最小值
例:随机产生 10 个 100~200 间的数,求最大值。
Private Sub Command1_Click() Max = 100 For i = 1 To 10 x = Int(Rnd * 101 + 100) Print x; If x > Max Then Max = x Next i Print : Print "最大值="; Max End Sub

第4章 VB控制结构

347

常用算法(一)
? 求最大值或最小值
例 4.18 求最短残料。

第4章 VB控制结构

348

数组的基本操作
所介绍的基本操作中,都是按以下声明的数组 和简单变量进行的:
Dim iA(1 To 10) As Integer Dim sB(3,4) As Single, sC(4,4) As Single

Dim i%, j%, t%

第5章 数组和自定义类型

349

单选按钮、复选框和框架
? 重要属性
3. Value 属性
设置单选按钮或复选框的状态。 单选按钮:True - 被选定、False - 未被选定。 复选框:0-未被选定、1-被选定、2-禁止选择。

4. Style 属性
设置单选按钮或复选框的显示方式:
0 - 标准方式、1 - 图形方式。
第7章 用户界面设计
350

UpDown 控件
UpDown 控件是 ActiveX 部件,通常与其他 控件“捆绑”在一起使用,用来修改与它相关联的 伙伴控件。

? UpDown 控件示例

第7章 用户界面设计

351

界面设计
VB 的界面设计工具包括通用对话框、菜单、 多文档界面( MDI )、工具栏和 RichTexBox 控 件等。

第八章 界面设计

352

通用对话框
? “帮助”对话框
用于制作应用程序的联机帮助。 “帮助”对话框本身不能建立应用程序的帮助 文件,只能将已创建好的帮助文件从磁盘中提取出 并与界面连接,达到显示并检索帮助信息的目的。 应用程序的帮助文件需要用其他工具制作,如 Microsoft Windows Help Compiler。

第7章 用户界面设计

353

通用对话框
? “帮助”对话框
1. HelpCommand 属性 用于返回或设置联机 Help 的帮助类型。

2. HelpFile 属性
用于指定 Help 文件的路径及文件名。 3. HelpKey 属性 指定在帮助窗口所显示帮助信息的关键字。
第7章 用户界面设计
354

通用对话框
? “帮助”对话框
4. HelpContext 属性 与 HelpCommand 属性一起使用,指定要 显示的 HelpTopic 。 ? 例 8.5 用命令按钮调用帮助文件,并显示指定 关键字的帮助信息。

第7章 用户界面设计

355

菜单设计
? 动态菜单
在程序运行时,菜单项能动态地随时增减(如 “文件”菜单能保留最近打开的文件数),必须使 用菜单控件数组(其 Index 属性为0 )。
? 在菜单设计时,加入一个菜单项,其 Index 属性 为 0(菜单数组)、Visible 属性为 False; ? 在程序运行时,通过 Load 方法向菜单数组增加 新的菜单项,用 UnLoad 方法删除菜单数组中的 菜单项。
第7章 用户界面设计
356

菜单设计
? 动态菜单
? 例 8.7 在例 8.6 中的文件菜单中保留最近打 开的文件清单。

第7章 用户界面设计

357


更多相关文档:

2010年9月教案

暂无评价 2页 免费 2010年案例教案 42页 7下载券喜欢此文档的还喜欢 Visual_...案例一 欢迎进入奇妙的 VB 世界 二、概念 可视化编程:指程序设计时调整的结果...

2010届高考物理第一轮专题教案25

2010届高考物理第一轮专题教案25_从业资格考试_资格考试/认证_教育专区。江苏省...? ? ,总电流为 I=E/r,安培 N 2?vB 2 R sin 2 ? 力 F=IB?2Rsin...

VB优质课教案

VB优质课教案_其它课程_初中教育_教育专区。《VB》公开课教案 (2010-04-05 20:20:16) 转载▼ 标签:教育 时间:第十三周星期四第三节课 地点:电脑实验 1 室...

powerMill2010版软件教案

powerMill2010版软件教案_工学_高等教育_教育专区。powerMill2010 高级教案 1、powerMill...\dcam\pmill2\VB 程序 \VerifyTP_ALL.exe'" I "边界显示关" 1 "UNDR...

VB教案

VB教案_文学_高等教育_教育专区。vb教案,课程教案,实验 XX 学院教案公共计算机教学部 学年 第 学期 教研室名称课课课授职程程程课名代类教称码型师称 程序...

2010届高考物理第一轮专题教案28

2010届高考物理第一轮专题教案28_从业资格考试_资格考试/认证_教育专区。江苏省...14.0 肇事汽车从刹车点到出事点的时间 t1=2 AB /(vA+vB)=1s, 又司机的...

2010年高考化学第一轮专题复习教案16

2010年高考化学第一轮专题复习教案16_从业资格考试_资格考试/认证_教育专区。第...18.25℃时,若体积为 Va、pH=a 的某一元强酸与体积 Vb、pH=b 的某一元...

2010年高考物理二轮复习名师专题教案4

2010年高考物理二轮复习名师专题教案4_从业资格考试_资格考试/认证_教育专区。...vb 时,杆对小球有向上推力,故选 A、B 正确评析 本题关键是明确越过临界状态...

VB教案

VB教案_中职中专_职业教育_教育专区。(一) 组织教学 (二) 讲授新课 第1 章第1节 一、 Visual Basic 语言 VB 语言是 1991 年由美国 Microsoft 公司推出的, ...

2010年高考物理二轮复习名师专题教案1

2010年高考物理二轮复习名师专题教案1_从业资格考试_资格考试/认证_教育专区。...) 2 vA 3 a 、b 碰撞后粘在一起做匀速直线运动,按平衡条件得: 3qvB ?...
更多相关标签:
vb教案 | vb程序设计教案 | 初中vb教案 | 高中信息技术vb教案 | vb循环结构教案 | vb公开课教案 | 中职vb教案 | 顺序查找法 vb教案 |
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com