1、 高 等 学 校 教 材 Visual Basic程序设计教程 魏东平 郑立垠 梁玉环 石油大学出版社 内 容 提 要 本书是按高等学校计算机程序设计课程教学大纲编写的大学教材,主要包括 VB 基础知识、常用程序结构和算法、Windows 用户界面设计基础、文件处理和程序调试技术基础等内容。本书以简洁、生动的语言和大量形象、实用的范例系统介绍程序设计方法,侧重培养读者的程序设计能力,较少涉及VB的扩展功能,如图形、多媒体和数据库等。 本书适用于高等学校本科生、专科生,也可用作全国计算机等级考试的教学用书,还可以作为从事计算机程序设计工作的广大读者的学习参考书。 图书在版编目(CIP)数据 Vi
2、sual Basic程序设计教程/ 魏东平 郑立垠 梁玉环. 东营:石油大学出版社,2003.7 ISBN 7-5636-1789-2 . V . 魏 . Basic语言程序设计教材 . TP312 中国版本图书馆CIP数据核字(2003)第042219号 Visual Basic 程序设计教程 魏东平 郑立垠 梁玉环 出版者:石油大学出版社(山东 东营,邮编 257061) 印刷者:石油大学印刷厂 发行者:石油大学出版社(电话 0546-8392062) 开 本:7871092 1/16 印张:21.25 字数:544千字 版 次:2003年8月第1版 2003年8月第1次印刷 定 价:26
3、.80元 版权专有 侵权必究 举报电话:0546-8392062 前 言 最早的 BASIC 语言是面向广大计算机爱好者的程序语言,由于易学易用,自 1964年问世以来,深受初学者的厚爱。1990年美国Microsoft公司推出了Visual Basic 1.0版,全新的界面,强大的功能,彻底改变了人们对Basic语言的看法,进而成为程序设计,甚至大型软件开发的主要工具。 Visual Basic是在原来的BASIC语言基础上研制而成的,保持了BASIC语言简单、易学易用的特点,同时增加了结构化、可视化程序设计语言的功能,具备了面向对象程序设计语言的特征。Visual Basic语言功能强大,
4、例如,采用可视化的界面设计技术、面向对象的程序设计方法、事件驱动的编程机制、支持快速开发(RAD)、支持动态数据交换(DDE)技术和对象的连接与嵌入(OLE)技术、支持数据库的快速访问等等。2001年,Microsoft推出了Visual Basic .NET,将Visual Basic语言提升到了全新的高度。作为微软.NET策略的主要工具和编程语言,VB .NET已经可以胜任任何规模、任何种类的软件开发,特别是Windows窗体应用程序、XML Web服务程序和嵌入式Windows应用程序等。 为了帮助读者学习掌握Visual Basic语言,把握计算机程序设计技术的最新进展,我们编写了这本
5、教材。本教材面向高校非计算机专业学生,侧重基础知识和基本能力,适合作为程序设计语言入门教材使用。 本书分为16章,第1章是对程序设计技术的概述,第2至4章简单介绍Visual Basic程序设计方法,第 5至 9章是本书的重点,包括程序的三个基本结构、数组和过程的概念及使用等,第10至14章围绕程序的界面设计进行学习,第15章学习文件处理方法,第16章是关于错误处理技术的高级课题。在本书的附录中,还向读者简要介绍了Visual Basic .NET,为读者以后的学习抛砖引玉。 本书由魏东平副教授任主编,编写了第10至16章和附录,并负责最后的校对、修改和定稿,郑立垠副教授编写了第1至第5章,梁
6、玉环讲师编写了第6至9章。付艳芬副教授和郑立垠副教授对全书进行了校对。 由于时间仓促,加之作者水平有限,难免存在不足之处,恳请读者批评指正。 编 者 2003年5月 目 录 第1章 概 述.1 1.1 程序设计语言的发展1 1.1.1 程序、程序设计、程序设计语言的概念.1 1.1.2 程序设计语言的发展.1 1.1.3 源程序在计算机上的执行过程.2 1.2 程序设计方法3 1.2.1 结构化程序设计.3 1.2.2 面向对象程序设计.3 1.3 算 法4 1.3.1 算法的主要特征.4 1.3.2 算法设计的要求.5 1.3.3 算法的表示.5 习 题7 第2章 Visual Basic程
7、序开发环境.8 2.1 Visual Basic语言简介8 2.1.1 Visual Basic语言发展简介.8 2.1.2 Visual Basic语言的特点.8 2.1.3 Visual Basic语言的版本.9 2.2 Visual Basic 6.0的安装和启动9 2.2.1 Visual Basic 6.0的运行环境.9 2.2.2 Visual Basic 6.0的安装.10 2.2.3 Visual Basic 6.0的启动和退出.12 2.3 最简单的VB程序13 2.4 Visual Basic集成开发环境18 2.4.1 主窗口.18 2.4.2 窗体窗口.19 2.4.3
8、 工程资源管理器窗口.19 2.4.4 属性窗口.20 2.4.5 代码窗口.20 2.4.6 工具箱窗口.21 2.4.7 窗体布局窗口.21 2.4.8 对象浏览器窗口.21 ii Visual Basic程序设计教程 2.5 创建一个VB应用程序的方法和步骤22 2.5.1 创建应用程序界面.22 2.5.2 设置界面上各个对象的属性.22 2.5.3 编写对象相应的程序代码.22 2.5.4 保存工程.22 2.5.5 运行和调试程序.22 2.5.6 生成可执行程序.22 习 题22 第3章 可视化程序设计初步.24 3.1 VB程序设计中的几个基本概念.24 3.1.1 对象.24
9、 3.1.2 对象的属性.24 3.1.3 对象的事件.25 3.1.4 对象的方法.25 3.2 窗 体25 3.2.1 窗体的结构.26 3.2.2 窗体的属性.26 3.2.3 窗体的事件.27 3.3 常用控件31 3.3.1 命令按钮.31 3.3.2 标签控件.34 3.3.3 文本框控件.36 3.4 对象的焦点39 3.4.1 焦点的基本概念.39 3.4.2 对象的GotFocus事件与LostFocus事件.39 3.4.3 设置焦点.40 3.5 事件驱动程序的工作方式43 3.5.1 事件驱动简介.43 3.5.2 事件驱动程序的工作方式.43 习 题43 第4章 VB
10、数据类型、运算符和表达式45 4.1 数据类型45 4.1.1 基本数据类型.45 4.1.2 自定义数据类型.46 4.2 常量和变量47 4.2.1 常量.47 4.2.2 变量.49 4.3 运算符和表达式55 4.3.1 算术运算符和算术表达式.55 目 录 iii 4.3.2 连接运算符和字符串表达式.56 4.3.3 关系运算符和关系表达式.57 4.3.4 逻辑运算符和逻辑表达式.57 4.3.5 日期型表达式.59 4.3.6 各种运算符的优先级比较.59 4.4 常用内部函数60 4.4.1 数学函数.60 4.4.2 数据类型转换函数.62 4.4.3 字符处理函数.62
11、4.4.4 日期时间函数.65 习 题66 第5章 顺序结构程序设计.68 5.1 语 句68 5.1.1 赋值语句.68 5.1.2 注释、暂停与程序结束语句.70 5.2 数据输出72 5.2.1 Print方法72 5.2.2 与Print方法有关的标准函数.73 5.2.3 其他方法和属性.75 5.3 输出数据的字体控制79 5.3.1 字体类型和大小.79 5.3.2 其他属性.81 5.4 InputBox函数和MsgBox函数82 5.4.1 InputBox函数.82 5.4.2 MsgBox函数84 5.5 应用举例86 习 题89 第6章 选择结构程序设计.91 6.1
12、单行格式条件语句91 6.2 块结构条件语句95 6.3 多分支选择结构语句99 6.4 选择结构的嵌套103 6.5 IIf函数.108 习 题109 第7章 循环结构程序设计.110 7.1 While循环结构.110 7.2 Do循环结构113 7.3 For循环结构.120 7.4 GoTo型循环.126 iv Visual Basic程序设计教程 7.4.1 GoTo语句126 7.4.2 On GoTo 语句127 7.5 多重循环128 习 题130 第8章 数 组.132 8.1 数组的概念132 8.2 数组的定义132 8.2.1 静态数组.134 8.2.2 动态数组.1
13、35 8.2.3 Erase语句.137 8.3 数组的基本操作138 8.3.1 数组元素的引用.138 8.3.2 数组元素的输入.138 8.3.3 数组元素的输出.140 8.3.4 数组元素的复制.142 8.3.5 数组的初始化.143 8.4 For Each . Next 语句145 8.5 控件数组147 8.5.1 控件数组的概念.147 8.5.2 建立控件数组.147 8.6 数组的应用举例149 习 题159 第9章 过 程.161 9.1 Sub过程161 9.1.1 事件过程与通用过程.161 9.1.2 建立Sub过程163 9.1.3 调用Sub 过程.165
14、 9.2 Function过程167 9.2.1 Function过程的定义.167 9.2.2 调用Function过程168 9.3 过程中的参数传递170 9.3.1 形式参数与实际参数.170 9.3.2 实际参数与形式参数的对应关系.171 9.3.3 按值传递与按地址传递.172 9.3.4 数组参数的传递.175 9.4 可选参数与可变参数178 9.5 对象参数180 9.5.1 窗体参数.181 9.5.2 控件参数.183 目 录 v 9.6 递归过程184 9.7 变量与过程的作用范围188 9.7.1 变量的作用范围.188 9.7.2 过程的作用范围.192 习 题1
15、93 第10章 Visual Basic的常用控件.194 10.1 概 述194 10.2 图形控件195 10.2.1 直线(Line).195 10.2.2 形状(Shape).196 10.2.3 图片框(PictureBox).198 10.2.4 图像框(Image).199 10.3 框架和选择控件200 10.3.1 框架(Frame)200 10.3.2 复选框(CheckBox)和单选按钮(OptionButton)200 10.3.3 列表框(ListBox)202 10.3.4 组合框(ComboBox)206 10.4 滚动条控件208 10.5 计时器控件211 1
16、0.6 文件系统控件212 10.6.1 驱动器列表框(DriverListBox).212 10.6.2 目录列表框(DirListBox).212 10.6.3 文件列表框(FileListBox)213 10.7 其他控件215 10.7.1 OLE控件215 10.7.2 ActiveX控件216 习 题217 第11章 多重窗体程序设计.219 11.1 概 述219 11.2 与窗体有关的语句和方法219 11.2.1 窗体的加载和卸载.220 11.2.2 窗体的常用方法.220 11.3 多重窗体程序设计方法222 11.4 MDI界面设计.225 11.5 标准模块与Sub
17、Main过程226 11.6 闲置循环与DoEvents语句228 习 题230 第12章 菜单设计.231 12.1 与菜单有关的概念231 vi Visual Basic程序设计教程 12.1.1 下拉式菜单.231 12.1.2 弹出式菜单.232 12.2 菜单编辑器232 12.2.1 菜单编辑器的启动.232 12.2.2 菜单编辑器的使用.233 12.3 下拉式菜单设计234 12.3.1 下拉式菜单的设计和编程.234 12.3.2 菜单项属性的动态设置.237 12.3.3 菜单项的动态增加和删除.239 12.4 弹出式菜单设计241 12.5 MDI界面程序菜单设计.2
18、43 12.6 工具栏设计244 习 题246 第13章 对话框设计.247 13.1 概 述247 13.2 预定义对话框247 13.2.1 InputBox函数.248 13.2.2 MsgBox函数248 13.3 自定义对话框248 13.3.1 对话框窗体的属性.249 13.3.2 对话框窗体的控件.249 13.3.3 对话框窗体的显示.249 13.3.4 应用举例.250 13.4 通用对话框251 13.4.1 通用对话框控件.251 13.4.2 “文件”对话框.253 13.4.3 “颜色”对话框.258 13.4.4 “字体”对话框.259 13.4.5 “打印”对
19、话框.261 习 题263 第14章 键盘与鼠标.264 14.1 概 述264 14.2 键盘事件264 14.2.1 KeyPress事件.264 14.2.2 KeyDown事件和KeyUp事件266 14.3 鼠标事件270 14.3.1 鼠标事件.270 14.3.2 鼠标指针.273 14.4 对象拖放275 目 录 vii 14.4.1 控件拖放.275 14.4.2 OLE拖放278 习 题278 第15章 文 件.279 15.1 文件概述279 15.2 文件的打开与关闭280 15.2.1 顺序文件的打开.280 15.2.2 随机文件的打开.281 15.2.3 二进制
20、文件的打开.282 15.2.4 文件的关闭.282 15.3 文件指针282 15.3.1 文件指针的概念.282 15.3.2 文件指针的操作.282 15.4 顺序文件的读写283 15.4.1 顺序文件的写操作.283 15.4.2 顺序文件的读操作.286 15.5 随机文件的读写287 15.5.1 随机文件的读写操作.287 15.5.2 随机文件的增、删、改.290 15.5.3 二进制文件的读写.293 15.6 文件操作294 15.7 FSO对象模型.296 15.7.1 FSO对象296 15.7.2 FSO模型编程297 15.7.3 文件操作.299 习 题301
21、第16章 程序调试与错误处理.302 16.1 错误类型302 16.1.1 编译错误.302 16.1.2 逻辑错误.304 16.1.3 运行时错误.305 16.2 程序调试工具305 16.2.1 VB程序调试工具305 16.2.2 中断模式.306 16.2.3 控制程序的运行.307 16.2.4 调试窗口.307 16.3 错误处理程序309 16.3.1 Err对象309 16.3.2 错误处理程序.310 viii Visual Basic程序设计教程 16.3.3 集中化的错误处理.312 16.3.4 调试程序时的错误处理.313 附录A 发布VB应用程序.314 A.
22、1 打包和展开向导.314 A.2 安装应用程序.319 附录B 从VB 6.0到VB .NET.320 B.1 .NET框架.320 B.2 VB.NET的新特点321 B.3 VB.NET的语言改进322 B.4 VB.NET程序设计325 第1章 概 述 1.1 程序设计语言的发展 1.1.1 程序、程序设计、程序设计语言的概念 计算机作为信息处理和存储的工具已深入到人类生活的各个领域。要学会使用计算机,使计算机按人的意图工作,能够接受人向它发出的各种命令和信息,就必须学会使用计算机的程序设计语言,把待解决的问题,按处理步骤写成一条条计算机能够识别和执行的语句。所有语句的集合称之为程序。
23、程序员设计编写程序的过程称之为程序设计。用来编写程序的语言称之为程序设计语言。 1.1.2 程序设计语言的发展 编写计算机程序所用的语言是人与计算机之间交换信息的工具,一般可分为机器语言、汇编语言和高级语言。 1. 机器语言 机器语言是计算机系统所能识别的,不需要翻译直接供机器使用的程序设计语言。由于机器语言是二进制代码,人们编写或阅读程序都十分困难,又容易出错,并且不同机器的指令系统也不同,很难进行交流(在一种机器上调试通过的程序不能到另外一种机器上运行)。机器语言程序虽然其执行效率很高,但花费在设计程序和调试程序上的时间太多,整个解决问题的效率就降低了。 2. 汇编语言 为了解决二进制代码
24、编程带来的困难,人们采用了助记码和符号地址来代替机器语言中的二进制指令代码和指令地址,然后通过一个人们预先设计好的叫做“汇编程序”的翻译程序一对一地翻译成机器语言程序,再让计算机执行。这种采用助记码和符号地址的语言称为汇编语言。用汇编语言编写的程序执行效率与机器语言程序一样高,且其阅读性提高了,但由于汇编指令与机器指令之间是一对一的,同样不利于交流,所以,汇编语言也是面向机器的语言。 3. 高级语言 从20世纪50年代中期开始到70年代陆续产生了许多“高级算法语言”,这些高级算法语言中的数据用十进制来表示,用较为接近自然语言的英文文字来表示语句。它们比较接近于人们习惯用的自然语言和数学表达式,
25、因此称为高级语言。高级语言脱离了计算机的具体指令系统,对于非计算机专业人员来说掌握起来比较容易,克服了面向机器语言的缺点,使得程序易读、易维护、易交流。高级语言发展很快,已达数百种之多,常用的高级语言有: 2 Visual Basic程序设计教程 (1)FORTRAN 语言。诞生于20世纪50 年代中期,是第一个算法语言,适应于科学和工程计算。 (2)BASIC语言。诞生于20世纪60年代中后期,该语言简单易学,是一种会话型语言,适合初学者学习。至今BASIC语言已有许多高级版本,尤其Visual Basic For Windows是面向对象的程序设计语言,给非计算机专业的广大用户在Windo
26、ws环境下开发软件带来了极大的方便。 (3)ALGOL语言。诞生于20世纪60年代初期,是建立在坚实理论基础上的程序设计语言,60年代曾被认为是最有前途的程序设计语言,但现在已经很少有人使用了。 (4)PASCAL语言。诞生于20世纪70年代初,是一种结构化程序设计语言,适合于教学、科学计算、数据处理和系统软件开发等。目前逐步被C语言所取代。 (5)C语言。诞生于20世纪70年代初,80年代开始风靡全世界,适应于系统软件、数值计算、数据处理等,目前成为高级语言中使用最多的语言之一。现在较常用的C语言Visual C+是面向对象的程序设计语言。 (6)Java语言。诞生于20世纪90年代,是一种
27、新型的跨平台分布式程序设计语言,具有简单、安全、稳定、可移植性强等特性,将成为未来网络环境上的“世界语”。Java 语言是基于C+的,其最大特点是“一次编写,处处运行”。但Java语言编写的程序要依靠一个虚拟机(VM,Virtual Machine)才能运行。 一般地,把用高级语言或汇编语言编写的程序称为源程序。 1.1.3 源程序在计算机上的执行过程 人们用高级语言编写的源程序计算机并不懂,像汇编语言一样,必须经过一个“翻译”程序将高级语言编写的源程序翻译成计算机能够识别的二进制代码程序,才能让计算机执行并得到结果。这个“翻译”程序一般称为语言处理程序。 语言处理程序将源程序翻译成二进制代码
28、的方式通常有两种,一种称为“编译方式”,一种称为“解释方式”。 1. 编译方式 编译方式将源程序全部翻译成一个功能等价的机器语言程序(一般称为“目标程序”),然后经过一个“连接程序”将用户的目标程序(一个或多个)与系统配置好的一些通用程序连接装配在一起,形成一个“可执行程序”,最后让计算机执行并得到结果。 编译方式经编译连接得到的可执行程序可以重复执行无数次,其效率很高。系统程序、用户已调试好的程序,大都采用编译方式处理,最终得到可执行程序供用户使用。 2. 解释方式 解释方式是通过“解释程序”逐句翻译、执行的,不产生目标代码程序,每次执行都要重新翻译,所以对那些重复执行的程序效率较低。但解释
29、方式对于调试程序很方便。 目前,大多数常用的高级语言都采用编译方式,且输入或修改源程序、编译、连接、执行四个过程均在一个集成环境下,省去了用户不少的麻烦。 第1章 概 述 3 1.2 程序设计方法 1.2.1 结构化程序设计 结构化程序设计的指导思想是:以良好的结构来保证程序容易阅读和理解,而良好结构的实现则是靠把软件的设计作为一项工程(即软件工程),严格地按规范来设计。 虽然说程序的执行效率是衡量程序质量的一个重要因素,但随着计算机硬件的迅速发展与计算机的迅速普及,执行效率已经不是第一个要考虑的因素,而程序的易读性上升到了第一位。对于复杂的问题,人们往往不可能一开始就了解了问题的全部细节,也
30、就很难一下子写出既详细又清晰的算法,应该考虑将问题进行分块,这就是所谓结构化程序设计的问题。 1. “自顶向下逐步细化”是结构化程序设计的方法 结构化程序设计由三种基本结构(顺序结构、选择结构、循环结构)组成,实践证明,用这三种基本结构的组合可以实现任何复杂的算法。那么怎样设计结构化的算法呢?一般采用一种叫做“自顶向下逐步细化”的方法。自顶向下逐步细化(逐步求精)的基本思想可以概括为:先从最能反映问题的结构出发,设计出一个粗略的算法,然后对每一步进行细化、具体化,逐步补充细节(开始考虑不到的),直到设计出可在计算机上执行的程序。这种方法是一种先全局后局部、先整体后细节、先抽象后具体的自顶向下的
31、设计方法。 显然,对于大型的程序,应该采用这种方法进行算法设计。首先根据总体要求划分出若干个相对独立的模块,每个模块根据它的功能可细化为若干子模块,每个子模块又可根据其功能细化为更小的子模块,最后对每个小的子模块写出算法,这种方法由粗到细、由整体设计到具体设计,是结构化程序设计所提倡的方法。如果拿到题目就一个语句一个语句地编写程序,最后会由于考虑不周全而出现很多问题但又无从下手检查。所以作为一个好的程序员应该学会自顶向下逐步细化的结构化程序设计方法。 2. 结构化程序设计的风格 (1)程序要简单朴实,尽量让读者一看就明白程序的意图。 (2)程序文档化。除了程序结构要清晰易读外,还可以在程序中加
32、一些注释,向读者表明程序的功能、设计思想及用法等。另外,对程序中用到的变量命名时要“见名知义”。 (3)书写规范化。书写程序时不要把所有的语句对齐排列,而要按照程序的不同层次写成锯齿状的逐渐缩进格式,这样可突出程序的逻辑层次结构,又可方便查错。 (4)书写文档。对于简单程序,这一步可能是多余的,但对于复杂的程序它是不可缺少的,虽然程序中有注释,但毕竟篇幅有限,作为一个好的程序员,一定要把你开发软件时的算法说明、结构流程图、数据结构的定义、使用操作说明等资料整理写成文档,与程序一起交付用户使用。作为一个初学者,你所编写的程序可能不会太复杂,也不用交付别人使用,但作为一个好的习惯只能逐步培养、训练
33、才能养成。 1.2.2 面向对象程序设计 结构化程序设计对于确定的问题来说,无疑是一种很好的方法,但对于千变万化的世界,特别是当今信息化的世界,一个成为产品的软件很难适应形势的变化,因为在程序的设计阶 4 Visual Basic程序设计教程 段问题是确定的,其数据结构、数据模型也可以确定,所以设计出的程序使用、操作没有问题,但当表示问题的数据结构发生变化时,程序就可能会出现问题,而维护起来相当困难,原因就是当初的设计是面向数据进行自顶向下设计的,要修改就需要全部修改。本来客观世界是由许许多多、各种各样的对象组成的,每个对象都有各自的内部状态(属性)和运动规律(行为方式),不同对象的相互作用和
34、联系就构成了各种各样不同的系统,构成了我们所面对的客观世界。如果我们按照客观世界对象的特点进行程序设计,就会适应形势的发展,这就是自20世纪80年代开始流行现已广泛应用的面向对象的程序设计方法。 面向对象的程序设计方法吸取了结构化程序设计的基本思想和主要优点,将数据与对数据的操作放在一起作为一个相互依存、不可分割的整体来处理。这个整体称为对象。对象的内部状态(属性)用数据表示,运动规律用所谓的方法(也称成员函数)表示。对象是一个整体,所以我们说把数据隐藏在这个整体中了。对象之间的相互作用通过所谓的消息与对象的对外接口(成员函数的调用形式)实现。这个系统就是通过不断地向对象发送消息而使对象从初始
35、状态到达终止状态,从而实现了问题的求解。 如果问题的数据结构发生了变化,只要描述问题的对象的对外接口不变,所有涉及这些数据结构的地方都不需要修改,而只需修改对象中的方法就行了。对象有各种各样的,但总有相似的。比如一匹白马和一匹黑马是两个对象,但它们都具有马的特性,只是颜色有点差异而已。我们将对象进行抽象、划分便得到了类。类描述了属于该类型的所有对象的性质,包括外部特征和内部实现,实际上是抽象数据类型的具体实现。反之,对象是类的具体实例。 面向对象的程序设计方法是一个新的程序设计方法,这个方法具有其他方法所不具备的特点,富有生命力。如建立在对象类及其继承性基础上的重用能力、可以应付复杂大型软件开
36、发、便于扩展和维护,抽象程度高,因而具有较高的生产率。这种新方法在得到广泛理解和应用之后,必将会有力地推动软件开发的新发展。 1.3 算 法 1.3.1 算法的主要特征 算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。一个算法一般具有如下五个主要特征: (1)有穷性。一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都在有穷时间内完成。 (2)确定性。算法中每一条指令必须有确切的含义,不允许有模棱两可的解释,人们理解时不会产生二义性。并且,在任何条件下,算法只有惟一的一条执行路径,即对于相同的输入只能得出相同的输
37、出。 (3)有效性。一个算法能有效地完成指定的任务,就要求算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。 (4)输入。一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。 (5)输出。一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。 第1章 概 述 5 1.3.2 算法设计的要求 通常设计一个“好”的算法应考虑达到以下目标: (1)正确性。设计或选择的算法能正确地反映具体问题的要求。一般来说,衡量一个程序是否合格的标准是程序对于精心选择的典型、苛刻而带有刁难性的几组输入数据能够得出满足具体问题规格说明的结果。 (2)可读性。可读性好有助于读者理解算法,
38、而晦涩难懂的程序容易隐藏较多错误,给调试和修改程序带来很大的困难。 (3)健壮性。当输入数据非法时,算法也能适当地做出反应或进行处理,而不会产生莫名其妙的结果。 (4)效率与低存储量需求。一般来说,效率指的是算法执行时间。对于同一个问题如果有多个算法可以解决,执行时间短的算法效率高。存储量需求指算法执行过程中所需要的最大存储空间。效率与低存储量需求这两者都与问题的规模有关。 1.3.3 算法的表示 把算法用文字或图形方式表示出来,就是算法的描述。下面介绍几种常见的算法描述方法。 1. 自然语言 采用自然语言描述算法,通俗易懂,易于人们接受和理解,但有它的缺点: (1)不太严格且繁琐冗长; (2
39、)用自然语言描述顺序执行的步骤比较好懂,但如果算法复杂且包含很多判断转移时,用自然语言描述就不是那么直观清晰了。 2. 算法框图 作为算法的表达工具,在算法设计阶段人们一般采用图示的方法。图示法简单、直观,特别有利于初学者。算法的图示法又称为算法框图。有两种形式的算法框图: (1)传统的程序流程图: 传统的程序流程图通常采用一些几何图形来代表各种类型的操作,并在图形内标明文字或符号,表示操作的内容,用箭头来表示操作的顺序。 (2)结构框图N-S流程图: 传统的流程图是早期的工具,采用这种方法描述算法比较直观,但由于流程图允许箭头随意转移,对表示算法的层次结构非常不利,且流程图占的篇幅较大,作图
40、工作量也很大。针对这些情况,1973年美国的计算机科学家I.Nassi和B.Shneiderman提出了所谓的结构化程序设计流程图,因为他们二人的名字是以N和S开头的,所以也称为N-S图。这种图符合结构化程序设计的思想。 N-S 图去掉了传统流程图中引起麻烦的箭头,全部算法写在一个大的矩形框内。N-S 图规定了一些图形元素,用来表示三种基本结构(顺序结构、选择结构、循环结构)。一个算法可由若干个代表基本结构的图形元素像搭积木一样构造而成。 顺序结构: 顺序结构是一系列顺序执行的运算和处理,顺序结构的传统流程图用图 1.1(a)表示, 6 Visual Basic程序设计教程 而N-S图用图1.
41、1(b)表示。其中,A和B分别代表一个基本的操作。 (a) (b) 图1.1 顺序结构 选择结构(判断结构): 选择结构通常是根据一个条件P是否成立来选择下一步应该执行哪一种处理。图 1.2(a)、(b)分别表示选择结构的程序流程图和N-S图。其中T表示条件成立,F表示条件不成立。 循环结构(重复结构): 循环结构根据条件P 是否成立来判断是否重复执行某处理框A。通常有两种结构形式,一种是“先判后做”,一种是“先做后判”。 “先判后做”称为当型循环:表示当条件P成立时就执行框A,然后返回再判断P是否成立,若成立再执行框A,重复下去,直到条件P不成立。其流程图和N-S图如图1.3(a)、(b)所
42、示。 “先做后判”称为直到型循环:表示先执行框A,再判断条件P 是否满足,不满足则重A B F T P P F T A B (a)流程图 (b)N-S图 图1.2 选择结构 (a)流程图 (b)N-S图 图1.3 当型循环结构 T P F A A 当P 第1章 概 述 7 复执行框A,直到条件成立。其流程图和N-S图如图1.4(a)、(b)所示。 习 题 1程序设计语言的发展经历了哪几个阶段?各有什么优缺点? 2用高级语言编写的源程序要让计算机执行,需经过哪几步处理? 3什么叫结构化程序设计方法?结构化程序设计方法由哪三种基本结构组成?其特点如何? 4面向对象程序设计方法的主要特征是什么? 5
43、什么是算法?描述算法的方法有哪几种? (a)流程图 (b)N-S图 图1.4 直到型循环结构 F T P A A 直到P 第2章 Visual Basic程序开发环境 2.1 Visual Basic语言简介 2.1.1 Visual Basic语言发展简介 Visual意为“可视化的”,指的是一种开发图形用户界面(GUI)的方法,所以Visual Basic是基于Basic的可视化的程序设计语言。Basic指的是BASIC(Beginners All-Purpose Symbolic Instruction Code,初学者通用符号指令代码)语言,一种在计算技术发展历史上应用得最为广泛的语言
44、。Visual Basic在原有 BASIC 语言的基础上进一步发展,包含了数百条语句、函数及关键词,其中很多和Windows GUI有直接关系。在Visual Basic中,一方面继承了BASIC所具有的程序设计语言简单易用的特点,另一方面在其编程系统中采用了面向对象、事件驱动的编程机制,用一种巧妙的方法把Windows的编程复杂性封装起来,提供了一种所见即所得的可视化程序设计方法。因此,Visual Basic被认为是大多数电脑初学者的首选入门编程语言。 2.1.2 Visual Basic语言的特点 1. 具有面向对象的可视化设计工具 在 VB 中,应用面向对象的程序设计方法(OOP),
45、把程序和数据封装起来视为一个对象,每个对象都是可视的。程序员在设计时只需用现有工具根据界面设计要求,直接在屏幕上“画”出窗口、菜单、按钮、滚动条等不同类型的对象,并为每个对象设置属性。程序员的编程工作仅限于编写相关对象要完成的功能程序,因而程序设计的效率可大大提高。 2. 事件驱动的编程机制 事件驱动是非常适合图形用户界面的编程方式。在图形用户界面的应用程序中,是由用户的动作即事件掌握着程序运行的流向,每个事件都能驱动一段程序的运行。程序员只需要编写响应用户动作的代码,而各个动作之间不一定有联系。 3. 提供了易学易用的应用程序集成开发环境 在 VB 集成开发环境中,用户可设计界面、编写代码、
46、调试程序,直至把应用程序编译成可执行文件在Windows中运行,使用户在友好的开发环境中工作。 4. 结构化的程序设计语言 VB具有丰富的数据类型和结构化程序结构,作为一种程序设计语言,它还有如下一些特点: (1)强大的数值和字符串处理功能; (2)丰富的图形指令,可方便地绘制各种图形; 第2章 Visual Basic程序开发环境 9 (3)提供静态和动态数组,有利于简化内存的管理; (4)过程可递归调用,使程序更为简练; (5)支持随机文件和顺序文件的访问; (6)提供了一个可供应用程序调用的包含多种类型的图标库; (7)具有完善的运行出错处理。 5. 支持多种数据库系统的访问 利用数据控
47、件可访问的数据库系统有:Microsoft Access、Btrieve、DBase、Microsoft FoxPro和Paradox等,也可以访问Microsoft Excel、Lotus1-2-3等多种电子表格。 6. 支持动态数据交换(DDE)、动态链接库(DLL)和对象的链接与嵌入(OLE)技术 7. 完备的HELP联机帮助功能 与 Windows 环境下的软件一样,在 VB 中,利用帮助菜单和 F1 功能键,用户可以随时方便地得到所需要的帮助信息。VB帮助窗口中显示了有关的示例代码,通过复制、粘贴操作可获取大量的示例代码,为用户的学习和使用提供了极大的方便。 2.1.3 Visual
48、 Basic语言的版本 Microsoft公司于1991年推出Visual Basic 1.0版,获得巨大成功,直到1998年推出6.0版,至今已经历了6个版本。随着版本的改进,Visual Basic已逐渐成为简单易学、功能强大的编程工具。 Visual Basic 6.0包括三种版本,它们分别为学习版、专业版和企业版。这三种版本是在相同的基础上建立起来的,以满足不同层次的用户需要。 学习版:(Learning Edition)可使用一组工具来创建功能完备的Windows应用程序,它包括所有的内部控件、网格控件及数据绑定等控件。 专业版:(Professional Edition)在学习版的
49、基础上添加了一些专门的工具和一个报表编制工具。它主要针对计算机专业开发人员(除了具有学习版的全部功能外,还包括 ActiveX和Internet控件开发工具之类的高级特性)。 企业版:(Enterprise Edition)包括了用于客户/服务器应用程序的工具(除了具有专业版的全部功能外,还包括了一些特殊的工具)。 本书使用的是Visual Basic 6.0中文企业版,但其内容可用于专业版,所有程序可在专业版中运行,大多数程序可在学习版中运行。 2.2 Visual Basic 6.0的安装和启动 2.2.1 Visual Basic 6.0的运行环境 (1)CPU:最低配置应不低于486DX,一般应选择奔腾133或更高主频的CPU。 (2)内存:最低不能少于16MB。一般应选用32