本书深入浅出地介绍了Visual Basic 6 语言的基本概念和编程技术,包括对象、属性、方法、语句、函数、结构等基本问题,以及面向对象编程、数据库管理和网络编程等高级课题。全书共分为21章,系统地讨论了Visual Basic 6 的编程技巧及应用,并且提供了大量实用、有趣的实例和练习。通过学习本书,读者可以在较短的时间内掌握基本的和最新的程序设计技术。可以说本书是最好的学习Visual Basic 6语言的教程之一,是学习Visual Basic 6编程的“宝典”。本书所配的“多媒体教室”光盘更是独具特色,通过交互式环境,使学习过程更加生动有趣。\r\n 本书是高等院校进行编程语言和Visual Basic 6教学的教材,是软件设计人员进行Visual Basic 6程序开发的宝贵参考资料,也是一本值得珍藏的好书。
第1章 计算机的概念 \r\n\r\n1.1 简介 \r\n1.2 什么是计算机 \r\n1.3 计算机的组成 \r\n1.4 操作系统的变革 \r\n1.5 个人计算、分布式计算与客户/服务器计算 \r\n1.6 机器语言、汇编语言和高级语言 \r\n1.7 Visual Basic的历史 \r\n1.8 其他高级语言 \r\n1.9 结构化编程 \r\n1.10 什么是Visual Basic \r\n1.11 关于Visual Basic和本书的一般性提示 \r\n1.12 本书概览 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第2章 集成开发环境 \r\n\r\n2.1 简介 \r\n2.2 集成开发环境综述 \r\n2.3 Project窗口 \r\n2.4 工具箱 \r\n2.5 Form Layout窗口 \r\n2.6 Properties窗口 \r\n2.7 菜单栏和工具栏 \r\n2.8 一个简单的程序:显示一行文本 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第3章 Visual Basic 编程入门 \r\n\r\n3.1 简介 \r\n3.2 可视化编程和事件驱动编程 \r\n3.3 一个简单程序:在窗体上打印一行文本 \r\n3.4 另一个简单的程序:整数相加 \r\n3.5 内存的概念 \r\n3.6 算术运算 \r\n3.7 运算符的优先级 \r\n3.8 进行判断:比较运算符 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第4章 控制结构(一) \r\n\r\n4.1 简介 \r\n4.2 算法 \r\n4.3 伪代码 \r\n4.4 介绍控制结构 \r\n4.5 If/Then 选择结构 \r\n4.6 If/Then/Else选择结构 \r\n4.7 While/Wend循环结构 \r\n4.8 Do While/Loop循环结构 \r\n4.9 Do Until/Loop循环结构 \r\n4.10 构造算法:示例1(计数器控制循环) \r\n4.11 自顶向下、分步求解的算法:示例2(标志控制循环) \r\n4.12 自顶向下、分步求解的算法:示例3(嵌套控制结构) \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第5章 控制结构(二) \r\n\r\n5.1 简介 \r\n5.2 计数器控制循环的基础知识 \r\n5.3 For/Next 循环结构 \r\n5.4 使用For/Next循环结构的例子 \r\n5.5 Select Case多项选择结构 \r\n5.6 Do/Loop While循环结构 \r\n5.7 Do/Loop Until循环结构 \r\n5.8 Exit Do和Exit For语句 \r\n5.9 Boolean数据类型 \r\n5.10 常量变量\r\n5.11 逻辑运算符 \r\n5.12 结构化编程总结 \r\n5.13 Visual Basic数据类型 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第6章 子过程与函数过程 \r\n\r\n6.1 简介 \r\n6.2 窗体模块 \r\n6.3 Sub过程 \r\n6.4 Function 过程 \r\n6.5 按值调用与按引用调用 \r\n6.6 Exit Sub 和Exit Function \r\n6.7 存储类 \r\n6.8 作用域规则 \r\n6.9 生成随机数 \r\n6.10 范例:一个机会游戏 \r\n6.11 递归与阶乘函数 \r\n6.12 另一个递归例子:Fibonacci序列 \r\n6.13 递归与迭代 \r\n6.14 可选参数 \r\n6.15 命名参数 \r\n6.16 Visual Baisc 数学函数 \r\n6.17 代码模块 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第7章 数组 \r\n\r\n7.1 简介 \r\n7.2 数组 \r\n7.3 声明数组 \r\n7.4 使用数组的例子 \r\n7.5 给过程传递数组 \r\n7.6 数组排序 \r\n7.7 查找数组:线性查找和二分查找 \r\n7.8 多维数组 \r\n7.9 控件数组 \r\n7.10 动态数组 \r\n7.11 变长参数表:ParamArray\r\n7.12 Array函数 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第8章 字符串、日期和时间 \r\n\r\n8.1 简介 \r\n8.2 字符与字符串基础知识 \r\n8.3 String数据类型 \r\n8.4 利用 & 和 + 连接字符串 \r\n8.5 比较字符串 \r\n8.6 Like运算符 \r\n8.7 操作字符串中的单个字符:Mid$ \r\n8.8 Left$、 Right$和InStr \r\n8.9 使用InStr和 InStrRev函数在字符串里搜索子字符串 \r\n8.10 LTrim$、RTrim$和Trim$ \r\n8.11 String$和 Space$ \r\n8.12 使用Replace 函数替换子字符串 \r\n8.13 使用StrReverse函数反转字符串 \r\n8.14 转换字符串的大小写 \r\n8.15 转换函数 \r\n8.15.1 Asc 和Chr$ \r\n8.15.2 IsNumeric、 Val 和Str$ \r\n8.15.3 Hex$和Oct$ \r\n8.15.4 类型转换函数 \r\n8.16 格式化字符串 \r\n8.16.1 Format$ 函数和命名数字化格式 \r\n8.16.2 Format$函数和用户定义数字化格式 \r\n8.16.3 FormatNumber函数 \r\n8.16.4 FormatCurrency函数 \r\n8.16.5 FormatPercent函数 \r\n8.17 处理日期和时间 \r\n8.18 格式化日期和时间 \r\n8.19 String数组 \r\n8.19.1 模拟洗牌与发牌 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n特殊小节:高级字符串操作练习 \r\n特殊小节:关于字符串操作的工程 \r\n\r\n第9章 图形 \r\n\r\n9.1 简介 \r\n9.2 坐标系 \r\n9.3 绘图方法 \r\n9.4 绘图属性 \r\n9.5 Line控件和Shape控件 \r\n9.6 颜色 \r\n9.7 图像 \r\n9.8 Printer对象 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第10章 基本图形用户界面 \r\n\r\n10.1 简介 \r\n10.2 控件 \r\n10.3 TextBox控件 \r\n10.4 MaskEdit控件\r\n10.5 ComboBox控件 \r\n10.6 ListBox控件 \r\n10.7 滚动条\r\n10.8 Slider控件 \r\n10.9 菜单 \r\n10.10 弹出菜单 \r\n10.11 MsgBox函数 \r\n小结\r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n特殊小节:建立自己的计算机 \r\n\r\n第11章 高级图形用户界面 \r\n\r\n11.1 简介 \r\n11.2 多文档界面(MDI) \r\n11.3 多窗体 \r\n11.4 模板窗体 \r\n11.5 RichTextBox 控件 \r\n11.6 UpDown 控件 \r\n11.7 ImageList 控件 \r\n11.8 ImageCombo 控件 \r\n11.9 FlatScrollBar 控件(专业版和企业版) \r\n11.10 机器代码编译(专业版和企业版) \r\n小结 \r\n自测题 \r\n自测练习答案 \r\n练习 \r\n\r\n第12章 鼠标和键盘 \r\n\r\n12.1 简介 \r\n12.2 改变鼠标指针的形状 \r\n12.3 鼠标事件 \r\n12.4 鼠标键 \r\n12.5 Shift、Ctrl和Alt键 \r\n12.6 拖放 \r\n12.7 键盘事件 \r\n12.8 KeyPreview属性 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第13章 错误处理与调试 \r\n\r\n13.1 简介 \r\n13.2 何时使用错误处理 \r\n13.3 简单的错误处理例子:除数为0 \r\n13.4 嵌套的On Error语句 \r\n13.5 Err对象 \r\n13.6 Resume语句\r\n13.7 错误处理程序和调用堆栈 \r\n13.8 重新引发错误 \r\n13.9 中断模式、Immediate窗口和Debug对象 \r\n13.10 防止程序错误的第一步\r\n13.11 调试策略\r\n13.12 调试器 \r\n13.12.1 Debug菜单和工具栏 \r\n13.12.2 Locals窗口 \r\n13.12.3 Watch窗口 \r\n13.12.4 Call Stack 窗口 \r\n13.13 调试器和错误处理程序\r\n小结\r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第14章 顺序文件处理 \r\n\r\n14.1 简介 \r\n14.2 DirListBox、FileListBox、DriveListBox控件 \r\n14.3 数据分层 \r\n14.4 文件系统对象 \r\n14.5 建立一个顺序存取文件 \r\n14.6 从顺序文件内读取数据 \r\n14.7 更新顺序存取文件 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第15章 记录和随机存取文件 \r\n\r\n15.1 简介 \r\n15.2 随机存取文件 \r\n15.3 记录用户自定义类型 \r\n15.3.1 用户自定义类型的定义 \r\n15.3.2 操作用户自定义类型的成员 \r\n15.4 建立随机存取文件 \r\n15.5 向随机存取文件写入数据 \r\n15.6 从随机存取文件中按顺序读取数据 \r\n15.7 从随机存取文件中随机读取数据 \r\n15.8 范例:事务处理程序 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第16章 面向对象编程 \r\n\r\n16.1 简介 \r\n16.2 数据抽象与信息隐藏 \r\n16.3 利用类实现一个时间抽象数据类型 \r\n16.4 类成员 \r\n16.5 合成:将对象作为其他类的实例变量 \r\n16.6 简介面向对象编程 \r\n16.7 带有部件的软件工程 \r\n16.8 类型域和 Select Case语句 \r\n16.9 多态性 \r\n16.10 Visual Basic接口 \r\n16.11 多态性举例 \r\n16.12 范例:IShape、CPoint、CCircle \r\n16.13 范例:使用多态的支付系统 \r\n16.14 范例:图形的多态处理 \r\n16.15 利用接口继承和指派模拟实现继承\r\n16.16 Object Browser \r\n16.17 事件和类 \r\n小结 \r\n自测练习\r\n自测练习答案\r\n练习\r\n\r\n第17章 ActiveX \r\n\r\n17.1 简介 \r\n17.2 部件、COM和DCOM \r\n17.3 ActiveX 控件类型 \r\n17.4 ActiveX 控件的生存期和事件\r\n17.5 UserControl对象\r\n17.6 创建包含构造控件的ActiveX控件\r\n17.7 ActiveX 控件举例:Clock控件 \r\n17.8 ActiveX控件界面向导\r\n17.9 属性页和属性页向导(Property Page Wizard) \r\n17.10 ActiveX DLL \r\n17.11 ActiveX EXE \r\n17.12 Friend访问 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第18章 数据库管理 \r\n\r\n18.1 简介 \r\n18.2 数据库系统 \r\n18.2.1 数据库系统的优点 \r\n18.2.2 数据独立 \r\n18.2.3 数据库语言 \r\n18.2.4 分布式数据库 \r\n18.3 关系数据库模型 \r\n18.3.1 关系数据库 \r\n18.4 介绍Microsoft ADO Data Control 6.0和Microsoft DataGrid Control 6.0\r\n18.5 关系数据库概览:Biblio.mdb数据库 \r\n18.6 结构化查询语言 \r\n18.6.1 基本的SELECT查询 \r\n18.6.2 WHERE从句 \r\n18.6.3 ORDER BY从句 \r\n18.6.4 使用INNER JOIN 从多个表中合并数据 \r\n18.6.5 Biblio.mdb中的全标题查询 \r\n18.7 再次讨论ADO数据控件和DataGrid控件 \r\n18.8 Hierarchical FlexGrid控件 \r\n18.9 DataList和DataCombo控件 \r\n18.9.1 范例:使用DataList和DataCombo控件 \r\n18.9.2 使用BoundColumn属性 \r\n18.10 使用Data Environment Designer \r\n18.11 Recordset的其他程序化功能 \r\n18.12 事务处理 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n参考文献\r\n\r\n第19章 网络、Internet和WWW \r\n\r\n19.1 简介 \r\n19.2 Visual Basic Internet控件 \r\n19.3 WebBrowser控件 \r\n19.4 Internet Transfer控件 \r\n19.4.1 超文本传输协议(HTTP)连接 \r\n19.4.2 文件传输协议(FTP)连接 \r\n19.5 Internet Transfer控件的其他属性、方法和事件\r\n19.6 Winsock控件\r\n19.6.1 建立一个简单的服务器(使用TCP协议)\r\n19.6.2 建立一个简单的客户(使用TCP协议) \r\n19.7 范例:使用Winsock控件的客户/服务器交互 \r\n19.7.1 一个简单的基于TCP的服务器 \r\n19.7.2 一个简单的基于TCP的客户 \r\n19.7.3 客户/服务器交互的输出 \r\n19.8 Winsock控件和基于UDP的客户/服务器计算\r\n19.8.1 一个简单的基于UDP的服务器\r\n19.8.2 一个简单的基于UDP的客户\r\n19.8.3 客户/服务器交互的输出 \r\n19.9 Winsock 控件的其他属性、方法和事件 \r\n19.10 Visual Basic Script(VBScript):综述 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第20章 多媒体:图像、动画和音频\r\n\r\n20.1 简介\r\n20.2 Microsoft Agent 控件\r\n20.3 多媒体MCI控件 \r\n20.3.1 多媒体MCI控件形成的CD播放器 \r\n20.3.2 一个多媒体MCI控件AVI文件播放器\r\n20.4 Animation 控件\r\n20.5 RealAudio ActiveX控件库\r\n20.6 Marquee控件库 \r\n20.7 Microsoft ActiveMovie 控件 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n第21章 数据结构、集合和词典 \r\n\r\n21.1 简介 \r\n21.2 Variant类型 \r\n21.3 自引用类 \r\n21.4 动态内存分配 \r\n21.5 链表 \r\n21.6 堆栈 \r\n21.7 队列 \r\n21.8 树 \r\n21.9 Collection对象 \r\n21.10 Dictionary对象 \r\n小结 \r\n自测练习 \r\n自测练习答案 \r\n练习 \r\n\r\n附录A 运算符优先级表 \r\n附录B ANSI字符集 \r\n附录C Internet和WWW上的Visual Basic资源 \r\n附录D 数值系统
欢迎来到Visual Basic 6以及令人激动的Internet 和WWW(World Wide Web)编程世界!本书是由一位长者和两个年轻人撰写的。这位长者已经有近40年的编程和教学经验,两位年轻人也分别有15年的编程经验,并有着丰富的教学与写作经历。长者经验丰富,年轻人则精力充沛;长者追求清晰,年轻人则注重性能;长者喜欢优雅与美观,年轻人则喜欢快速得到结果。他们的合作使本书的信息更全面、内容更有趣。
为什么编写这本书
Harvey M. Deitel在大学里教授了20多年的编程入门课程,强调开发清晰易懂、结构良好的程序。这些课程主要教授编程的基本原理,强调有效地使用控制结构、原始数据类型、数组、函数以及程序的开发过程。
本书严格遵循Deitel的教学方式来展现这些主题。我们的经验是让学生如同学习Pascal 或C语言等入门课程那样,在前几章介绍原始数据类型、控制结构、过程和数组的知识。但这里却有一个明显的区别:学生们更有兴趣学习一流的语言(Visual Basic 6)和前沿编程技术(事件驱动和面向对象)。当他们离开大学以后,马上就能在实际工作中使用这种语言。学生们很快就会发现,可以利用Visual Basic 6完成很多任务,所以他们非常愿意在这门功课上下功夫。
我们的目标很清楚:编写好一本教科书,作为大学编程课程的入门教材,适用于具有很少或没有任何编程经验的学生;并且根据传统的、高层次的C和C++课程以及专业人士的需要,提供理论与实践方面进一步和严格的训练。为了实现这些目标,我们力求使本书易于理解,书中将详细讲授控制结构原理、事件驱动编程、面向对象编程和Visual Basic 6语言。
本书是“C How to Program”、“C++ How to Program”和“Java How to Program”的同系列著作,成千上万的学生和专业人员利用这些教材掌握了C、C++和Java语言。本书(英文版)出版后已广泛应用于学校教学和公司培训中。
我们信任Visual Basic 6。通过Microsoft 的概念化,Visual Basic 6的创建者以一种最广为人知的语言——Basic为基础,并赋予这个语言方便地建立用于Microsoft Windows(世界上最广泛使用的平台)应用程序的能力,从而提供了开发各种企业系统所需的多任务和高性能。这门语言不仅适合实现基于Internet和WWW的应用程序,并且具有人们需要的许多特性,如字符串、图形、图形用户界面、错误处理、多媒体(音频、图像、动画和视频)、文件处理、数据库处理、基于Internet的客户/服务器网络、WWW浏览、利用VBScript的WWW文档增强功能以及预打包组件。Visual Basic还是可扩展的,以便于软件供应商开发各种不同的应用程序。这些特性正是企业和组织为适应今天信息处理的需要所寻求的。
Visual Basic 6可以使程序员更好地发挥他们的创造力。他们将通过实践和探索,快速地生成运行良好的应用程序,其中的收获会大大超出学习C 、Pascal以及非可视化 Basic 版本等编程语言的入门课程。
如今发生的Internet/WWW“爆炸”是空前的。人们希望彼此沟通,人们需要相互通信。自从文明社会产生以来人们一直在努力着,但是计算机通信基本上限制在数字、字母和特殊字符的传递上。下一个“冲击波”肯定是多媒体,人们希望传递图片,而且是有色彩的;希望传递声音和音频部件;希望传递彩色动画,并且在某些方面要求必须是三维的、活动的图像。现在的二维电视机将由三维电视机所取代,从而使普通房间变成了环绕剧场;使得起居室变成了小型体育馆;使得公司的办公室可以为分布各地的同事召开电视会议,就像坐在同一张会议桌旁。这些可能性是极其诱人的,而Visual Basic 6在使它们变成现实的过程中起着关键的作用。
可以预见, Internet将最终取代电话系统,它还将取代收音机和电视。我们可以想像,Internet将利用电子新闻媒体来取代报纸。或许有一天,本书将出现在博物馆的展台上,旁边是收音机、电视机、报纸以及一个标注:“古代文明的早期媒体”。
教学方法
本书包含了取自许多领域的大量范例、练习和工程实例,为学生提供了一个解决现实问题的机会。我们避免使用生涩的术语,并使语法说明适合于实例教学。每一个示例代码都经过了仔细检查。
本书由三位教学工作者所编著,他们花费了大量的时间在世界各地的教室里教授最新的应用课题。本书着重强调教学方法。
活动代码教学法
本书含有许多活动代码的例子。这是我们教授与编写程序方法的重点,同时也是Visual Basic 6多媒体教室(本书附带的CD-ROM光盘)关注的焦点。几乎每一个新的概念都通过一个完整的、工作在Visual Basic 6的程序而展现出来,紧接着是一个或多个显示程序输出的窗口。我们称这种教学方式为活动代码方法,即利用语言来教授语言。阅读这些程序很像在计算机上输入并运行它们。
WWW访问
本书的所有代码都在Prentice Hall的网站:http://www.prenhall.com/deitel 和Deitel & Associates公司的网站:http://www.deitel.com中提供。当读者阅读代码文本时,请下载代码并运行程序;也可以试着改变代码,看看会产生什么结果。当遇到各种错误时,请查看Visual Basic 6编译器的“解释”说明。编写程序是学习编程的最好方法(读者必须考虑到这样一个事实:代码是有版权的。当读者学习Visual Basic 6时可以自由地使用它们,但如果没有作者和Prentice Hall的明确许可,不能出版任何代码部分)。
教学目标
每一章都是从叙述教学目标开始的,它告诉学生本章将要学到什么内容,同时也提供了一个自我检查的机会,看看阅读完某些章节后,是否达到了这些教学目标。这样可以增强学生的自信心。
178个例程(带有程序输出)中的7806行代码
利用完整有效的程序来展现 Visual Basic 6的特征,这是教学与编程的关键,我们称其为“活动代码”方法。在给出的每一个程序之后,将提供运行该程序时所产生的输出窗口,这样可以使学生确认程序按照题目要求运行。阅读本书就像在计算机上输入和运行这些程序一样。书中不仅有几行代码的小程序,也包含数百行代码的基本例程。当学习程序时,最好从以下网站下载所有代码:
http://www.deitel.com
http://www.prenhall.com/deitel
558个图示
包括丰富的图表说明和程序输出。例如,控制结构的讨论中就给出了精心绘制的流程图。注意:我们不想把流程图作为程序开发的工具,只是用它简要说明Visual Basic 6的控制结构是如何操作的。
412个编程提示
编程提示帮助学生注意程序开发的某些重要方面。我们利用如下一些特别说明强调了数百个提示,它们是:编程技巧、常见编程错误、外观与感觉视点、检测与调试提示、性能提示以及软件工程视点。这些提示与实践代表了我们多年的编程与教学经验中最有价值的内容。曾经有一位主修数学的学生告诉我们,她感到这种方法就像数学教程中强调公理、定理和推论一样,提供了创建有效软件的基础。
78个编程技巧
当讲授入门课程时,我们强调一些良好的编程技术,它们使编写的程序更清晰、更易于理解,并且更易于调试和维护。
155个常见编程错误
学习语言时经常会出现一些错误。让学生注意这些“常见编程错误”,可以帮助他们避免相同的错误,也可以减少指导教师的工作量。
14个外观与感觉视点
我们提供了外观与感觉视点来强调Windows图形用户界面的常见情况。帮助学生设计自己的应用程序,使其看起来或感觉上类似于典型的Windows程序。
39个性能提示
以我们的经验,在最初的编程课程上教会学生书写清晰、易于理解的程序是最重要的。但学生们往往希望编写运行最快、占用内存最少、需要的击键次数最少或其他流行的程序。学生们非常关心操作性能,他们希望知道怎样来补充和调试程序,所以我们包含了额外的性能提示。
15个可移植性提示
这些提示帮助学生编写出可移植的代码,也就是可以在不同平台上运行的代码。这些提示强调了一些问题,它们可能影响Visual Basic 6程序在具有不同硬件设备的Windows系统中的运行。
76个软件工程视点
事件驱动编程和面向对象编程要求我们重新考虑创建软件系统的方式。Visual Basic 6对操作良好的软件工程是有效的。软件工程视点强调影响软件系统、尤其是较大的系统构成的设计与结构方面的问题。这里所学的知识将有益于学习高级课程以及针对大而复杂的实际系统的工作。
40个检测与调试提示
最初设计这部分提示时,我们希望利用它来正确地告诉人们如何检测和调试Visual Basic 6程序。事实上,这些提示描述了Visual Basic 6中可以减少错误的某些方面,因此也简化了Visual Basic 6程序的检测与调试过程。
小结
每章最后带有附加的教学方法,提供了本章完整的项目符号形式的小结。平均每章有38个小结项,帮助学生复习本章内容并加强理解关键概念。
406个自测练习和答案
附加的自测练习和答案用于自学。使学生有机会利用这些题目建立信心,并为以后的学习做好准备。应该尽量完成这些自测练习并检查练习结果。
819个练习
每章最后均提供了大量的练习,包括复习术语与概念的题目,编写Visual Basic 6语句,编写小段的Visual Basic 6过程和模块;编写完整的Visual Basic 6过程、类、应用程序;编写主要的项目工程;等等。这些练习的范围广泛,允许指导教师根据学生的需要调整课程。也可以将这些练习作为家庭作业、小测验和考试题目。
其他的学习资源
在以下的网站上可以找到其他的学习资源,包括错误源、FAQ、习题库、课程大纲和其他资源:
http://www.deitel.com
http://www.prenhall.com/deitel
全书总览
第1章——计算机的概念:讨论了什么是计算机,它是如何工作的以及如何对其进行编程。介绍了结构化编程的概念,并解释了为什么这一技术引起了编程方式上的革命。本章还简单介绍了从机器语言到汇编语言再到高级语言的编程语言发展历史,并讨论了Visual Basic 6编程语言的起源。
第2章——集成开发环境:介绍了用于创建Windows程序的Visual Basic 6集成开发环境(IDE)。IDE是一个图形化的环境,包含一个用于编写Visual Basic 6代码的编辑器、一个编译器和一个调试器。讨论了工具箱、属性(Properties)窗口、工程(Project)窗口、窗体窗口、工具栏和菜单。本章使学生熟悉IDE,同时介绍了可视化编程的概念,即只编写少量的代码,有时甚至不用编写任何代码就可以创建程序。
第3章——Visual Basic 编程入门:简单地介绍了如何编写Visual Basic 6程序,详细讨论了事件驱动编程、条件判断、算术运算以及运算符优先级。学习完这章后,学生们将理解如何编写简单而又完整的Visual Basic 6程序。
第4章——控制结构(一):主要讲解程序的开发过程。本章讨论如何描述问题(例如需求文档),并从中开发有效的Visual Basic 6程序,还分析了执行伪代码的中间步骤。本章介绍了一些基本数据类型和用于条件判断(If/Then和 If/Then/Else)以及循环(While、 Do While 和Do Until)的控制结构;利用简单的流程图显示控制结构的控制流程;考察了计数器控制循环和标志控制循环。练习4.16到练习4.19非常好,它们具有相似的结构,完成这4个问题对了解程序开发过程很有帮助。爱好数学的学生会热衷于加密解密练习以及确定在一个5位数里有几位是7。
第5章——控制结构(二) :继续讨论Visual Basic 6的顺序、选择(Select Case)和循环(For/Next、Do/Loop While 和Do /Loop Until)控制结构。本章也利用简单的流程图显示控制结构的控制流程。第4章和第5章讨论的内容构成了一般大学里关于结构化编程课题的主要部分。第5章详细考察和比较了计数器控制循环和标志控制循环,帮助读者建立良好的编程习惯,为以后处理更艰巨的编程任务做好准备。本章也介绍了逻辑运算符And(逻辑与)、Or(逻辑或)和Not(逻辑非),以及常量和Visual Basic 6数据类型。本章有一个包括数学和图形应用程序的习题集。爱好数学的读者将喜欢使用无穷序列计算正弦三角函数、毕达哥拉斯三元组和摩根定律。我们的学生特别喜欢练习5.16、练习5.17和练习5.21中打印三角形和菱形的挑战,这些问题真正地帮助学生学会编写嵌套的循环结构,这是入门课程里的一个复杂问题。
第6章——子过程与函数过程:本章更深入地了解过程,进一步探讨过程的概念,并且包含一个“调用自己”的过程(即递归过程)。本章讲解了Visual Basic 6的过程、程序员定义的过程和递归过程。其中讨论的技术是生成结构良好的程序的基础,对于开发实际应用程序和软件的程序员尤其如此。这里介绍的将复杂问题分割成更简单问题的“分而治之”策略是相当有效的方法。学生们喜欢处理随机数和模拟程序,喜欢利用控制结构的掷骰子游戏(这是本书中最成功的教学实例)。本章全面详细地介绍了递归概念,在本书后面还有一部分介绍递归,最好是逐步地学习这一内容。本章的练习含有几个古典的递归问题(如汉诺塔)。将来读者可以重新考察这个问题,并利用图形、动画和声音使它“活动”起来。本章还有许多数学和图形化的例子,学生们特别喜欢练习6.19到练习6.21中的“计算机辅助教学”的开发。
第7章——数组:探讨了对数列和列表中的数据的处理。讨论了同一类型的相关数据项形成的数据结构,展现了一维数组和二维数组的各种例子。众所周知,开发结构化程序时,合适的数据结构与有效的控制结构同等重要。本章的例子考察了各种通常的数组操作,例如输出直方图、排序数组、向过程传递数组以及综合数据分析(简单的统计学)领域的介绍。本章的特点是讨论了基本的排序与查找技术,并展现了二分查找对于线性查找的改进。最后的32 个练习包含许多有趣并且具有挑战性的问题,诸如改进的排序技术、航空订票系统的设计、龟图(在LOGO语言中很著名)的介绍以及骑士旅行与八皇后问题,并且介绍了广泛应用于人工智能领域的试探法编程技术。这些练习包含一系列递归问题,其中有选择排序、线性查找、二分查找和快速排序。
第8章——字符串、日期和时间:针对字、句子、字符、字符数组、日期和时间的处理。每一个例子都提供了活动代码,从而动态地演示了Visual Basic 6函数,并且显示了输出窗口,这样读者可以看到字符串与字符操作的精确效果。学生们将会喜欢洗牌与发牌的范例(他们会加强这一练习)。本章的主要特点是收集了大量的具有挑战性的字符串操作练习,其中有5行打油诗、文本分析、字处理、以各种格式打印日期、支票保护、写出支票金额的大写、Morse码、洗牌与发牌、简单加密、刽子手游戏、加密程序以及公制与英制度量转换。学生们将热衷于开发自己的拼写检查器和填字谜游戏生成器。
高级课题
第9章——图形:开始展现Visual Basic 6的多媒体特性。我们认为第9 章到第21 章是本书的高级课题部分。讲授过C和C++入门课程的老师们会发现Visual Basic 6提供了探索新领域的机会。这是“令人愉快的素材”,本章讨论了描绘图形形状(直线、圆等)、颜色处理、图像和打印;并利用活动代码、漂亮的屏幕输出、详细的表格和画线技术说明了各种图形功能。本章的练习可以使学生绘制各种几何图形、处理图像以及创建一个刽子手游戏的图形化版本。
第10章——基本图形用户界面:介绍创建具有用户友好的图形界面(GUI)的应用程序。GUI开发是个庞大的话题,所以我们分成两章来讨论。这些内容的深度使读者可以创建“工业级别”的GUI。通过程序和表格,本章说明了GUI设计的原理,并介绍了ListBox、TextBox、ComboBox、MaskedEdit控件、滚动条、幻灯片、菜单、弹出菜单和MsgBox等概念。一些练习使学生可以利用各种控件来格式化输出,创建GUI并排序字符串以便于查找。本章的练习含有一个有趣的龟兔赛跑模拟程序。
在“建立自己的计算机”部分里解释了机器语言编程,然后是一个计算机模拟程序的设计和实现,它允许读者编写和运行机器语言程序。这一特性对希望了解计算机是如何工作的读者特别有用。我们的学生喜欢这个内容,并因此得到了技能提高。
第11章——高级图形用户界面:继续详细讨论Visual Basic 6 GUI的功能。其中的例子使得读者可以进入更高级的GUI控件的操作,包括RichTextBox、UpDown、 ImageList、 ImageCombo和FlatScrollBar。本章讨论了单文档界面(SDI)和多文档界面(MDI),最后讨论了机器代码编译。其中的练习鼓励读者利用本章展现的高级部件开发更有效的GUI。
第12章——鼠标和键盘:讨论处理鼠标与键盘事件。这里讨论的主题有拖放、改变鼠标指针的形状、识别按下的鼠标按键、拦截击键事件(来自键盘的)以及区分按下了哪个键。本章提供了几个很好的例子,包括允许用户在棋盘上移动棋子的拖放实例。
第13章——错误处理与调试:基于创建具有健壮性及较强容错能力的“面向任务”或“面向业务”的应用程序,本章是最重要的章节之一。程序以及其他操作经常会出错,并且当今计算机的执行速度是如此之快(每秒上亿次的操作)。因此,如果程序中有错误,则肯定会发生,而且执行速度相当快。程序员在使用部件时经常会问:“如何要求部件为我工作?” 或者“部件返回什么值以说明它已按我的要求执行了任务?”但是程序员也应该考虑到“当我调用的部件执行困难的任务时会发生什么?当出现问题时部件如何指示?” 在Visual Basic 6中,当部件(比如过程)遇到困难或麻烦时会“引发错误”,我们应对部件的环境进行编程以处理和解决这些错误。为了使用Visual Basic 6部件,不仅要了解运行良好时部件的特性,也要了解出现问题时部件引发什么错误。本章讨论了出错处理问题。当某事件出错时,OnError块执行程序代码,此程序可能正确地运行也可能引发错误。与OnError块相关的是一些处理程序,它们处理引发的错误,并尽量恢复原有秩序,保证系统正常运行而不是“崩溃”。即使不能完全恢复,也可以执行一些操作使系统继续运行,不过可能降低了性能水平——这种做法称为“故障弱化”。
本章也介绍了Visual Basic 6调试器。讨论了Debug菜单和调试工具栏命令(用于控制调试进程)、Locals窗口(用于显示局部变量值)、Watch窗口(用于浏览局部和模块变量)以及Call Stack窗口(用于浏览调用的所有过程列表,以到达所选的行)。
第14章——顺序文件处理:处理直接来自文件的数据流输入与输出,对于开发商业化应用程序的程序员是相当重要的。本章介绍了从位到字节、字段、记录和文件的数据分层体系,接着介绍Visual Basic 6对文件和数据流的处理。我们展示了程序如何向磁盘这样的辅助存储设备传递数据以及如何从这些设备里取出数据。利用一些演示如何打开和关闭文件、如何顺序地存储或读取文件数据的程序讨论了顺序存取文件。本章使用了Visual Basic 6的FileSystem对象模型,该模型允许方便地操作文件、目录和驱动器;同时也讨论了用于图形化操作文件、目录和驱动器的控件。
第15章——记录和随机存取文件:基于如何为随机存取顺序地创建文件、如何向一个随机存取文件读写数据、如何从一个随机存储的文件中顺序地读出数据这样的程序,本章讨论了随机存取文件。最后的随机存取程序把许多文件存取技术(顺序的和随机的)结合到一个完整的事务处理程序中。本章还介绍了用户自定义类型(UDT)——等价于Visual Basic 6的记录,解释了这些记录如何输入或从辅助设备输出。一些学生告诉我们,学完关于文件处理的这些内容后,他们能够编写立即应用于公司的文件处理程序。本章练习要求学生实现各种创建和处理随机存取文件的程序。
第16章—面向对象编程:开始了类模块的讨论。本章提供了一个教授数据抽象的机会,主要考虑类和对象的基础知识与术语。什么是对象?什么是对象的类?对象的内部是什么?如何创建对象?如何删除对象?对象之间如何通信?为什么类(打包软件的自然机制)是可重用的部件?本章讨论了实现抽象类作为Visual Basic 6的类、访问类成员、利用Private实例变量进行信息隐藏、从实现中分离接口、使用访问方法和组件方法以及初始化对象;并讨论了综合问题—创建类的过程,这些类引用对象作为其成员;还讲解了动态内存分配、接口继承和指派等内容;比较了继承(“is a”关系)与合成(“has a”关系)。本章的特点是几个范例学习,其中有一个较长的例子实现了点、圆和圆柱体的类继承。另一个例子实现了雇员、老板、佣金工人、计件工人和计时工人的类继承。
本章解释了多态性。一般在面向对象语言里,当许多子类通过继承与一个公有超类相连时,每一个子类对象可以作为超类对象进行处理,这使得程序员能够以独立于子类对象特定类型的方式编写程序。新的对象类型可由相同的程序处理,于是使系统更容易扩展。多态使得程序省去复杂的Select Case逻辑而倾向于简单的“直线”逻辑。例如,可视游戏的屏幕管理器可以简单地向绘制的对象列表中的每一个对象发送一个“绘制”(draw)消息,每一对象都知道如何绘制自己。也可以向程序加入一种新类型的对象而不必修改此程序,当然要求这个新对象也知道如何绘制自己。这种编程方式特别适合于实现当今流行的GUI。Visual Basic 6不支持传统的实现继承(不同于Java和C++),但允许通过接口继承的多态。本章介绍了接口——必须由实现该接口的类来定义的方法集,接口可以通过层次为类提供一些基本的方法,本章的特点之一是其多态实例的学习。
本章练习要求讨论几个概念和方法,利用接口修改这章的雇员类,并且利用多态化编程继续这些练习。这些练习也要求学生比较由继承和合成创建的新类,扩展本章讨论的继承层次,为四边形、梯形、平行四边形、长方形和正方形创建继承层次,并且创建一个汽车层次。另外一些练习要求学生为复数、有理数、时间、日期、三连棋游戏、存款账户和整数集开发类。
第17章——ActiveX:介绍Microsoft强大的分布式计算技术,即ActiveX。讨论了ActiveX的基础知识——Microsoft组件对象模型(COM)、Microsoft的分布式组件对象模型(DCOM)和对象链接与嵌入(OLE)。
在前面的章节里,学生们熟悉了使用ActiveX来创建GUI以及执行其他的任务。本章详细演示了如何创建ActiveX控件,并讨论了可利用Visual Basic 6创建的ActiveX控件类型,同时介绍了ActiveX控件生存期里的关键事件。
两个关键的范例创建了一个LabelScrollbar控件和数字Clock控件,LabelScrollbar控件结合了Label控件和Scrollbar控件,Clock控件利用一个Timer控件显示了控件上的时间。
为了快速创建简单控件及复杂控件的基础,我们介绍了ActiveX 控件接口向导(ActiveX Control Interface Wizard),它提供了使用ActiveX控件接口向导的分步示例来辅助创建相同的LabelScrollbar控件。
本章还讨论了一个包含属性列表的特殊窗口:属性页窗口。许多ActiveX 控件提供属性页,以方便开发者设置属性组。我们演示了如何利用属性页向导(Property Page Wizard)为LabelScrollbar控件创建属性页。
本章演示了Visual Basic 6程序如何通过一个称为自动机制的过程控制Microsoft Word。在一个例子中我们创建了一个Word文档,但没有显式地打开Word。在另一个例子中,我们使用Word的拼写检查器来查看是否存在错误的拼写。
这些练习也要求读者创建几个控件,并加强LabelScrollbar控件和Clock控件。
第18章——数据库管理:讨论如何利用Visual Basic 6访问关系型数据库。Visual Basic 6提供了许多与数据库有关的控件用于显示和操作数据库数据。这里主要考虑Microsoft ADO Data控件和Microsoft DataGrid控件。本章的例子使用Visual Basic 6提供的Biblio.mdb样本数据库。为了访问Biblio.mdb数据库,我们详细介绍了结构化查询语言(SQL)。本章还讨论了Hierarchical FlexGrid控件、DataList控件和DataCombo控件。为了快速设计和实现数据驱动的Visual Basic 6应用程序,本章介绍了数据环境设计器(Data Environment Designer)。
第19章——网络、Internet和WWW:处理可以在计算机网络上通信的程序。什么是客户?什么是服务器?客户怎样要求服务器执行其服务?服务器如何向客户返回结果?什么是URL(统一资源定位器)?程序如何装入WWW网页?如何利用Visual Basic 6开发协作的应用程序?
本章介绍了如何实现客户/服务器网络的Visual Basic 6程序;演示了如何编写程序“在网上漫游”;并讨论了操作URL,利用URL链接在服务器中读取文件,利用流接口建立简单的客户和服务器,客户/服务器与流接口的交互,以及无连接的客户/服务器与数据的交互。
本章最后讨论了用于加强WWW文档的VBScript。VBScript 是Visual Basic 6的一个子集。本章有一些很好的例子, 其中包括了对服务器例子的修改建议。
第20章—多媒体:图像、动画和音频:涉及Visual Basic 6使计算机“活动”起来的功能。在最初的编程课程里利用这些功能编写应用程序是非常吸引人的,想像一下访问巨大的图形、图像、音频和视频库,并能用其形成创造性的应用程序。现在超过半数新售出的计算机具有多媒体配置,再过几年,配有多媒体的计算机就像现在使用软盘的计算机一样普遍。当学生们访问巨大的图像、绘图、音频、图片、视频、动画这样的公共库时,不知会给出什么样的学期论文和课堂演示。
在学校里,“纸”是字符集,是手写或打印的。未来的几年“纸”将会变成多媒体的“奢侈品”,我们可以将“纸”活动起来。多媒体使你的科学实验室更加吸引人;文本教科书变成了“活动”的,不光是浏览某些静态的图片,你将看到其具有彩色、动画、音频、视频及其他效果。多媒体将调节学习过程,人们会学得更多、更深入并且更有经验。
本章讨论了图像和图像操作、音频及动画。本章的特点是一个使用Microsoft Agent 控件的例子,它允许用户从如下三个人物中选择一个:Merlin、 Genie和 Robby机器人。这些人物能说话、会活动。本章另一个关键的例子是多媒体MCI控件,可以用来创建CD播放器和AVI播放器。我们演示了从Internet接收音频和视频流的RealAudio控件。也演示了用于从特定的URL中滚动一个图像的Marquee控件。本章结束时讨论了ActiveMovie控件,它使应用程序以多种格式(如MPEG、AVI、WAV等)播放视频及音频。
阅读完本章后,读者一定会迫切地希望尝试这些技术,因此我们选择了许多练习来满足读者的需要,这些练习也可以作为工程实践:
解决这些问题可能需要大量的时间,有些需要几个小时,有些可以作为大的学期工程。我们经常看到在大学计算机课程表里的多媒体选修课,这些都是进行练习的好机会。读者可以与同学竞赛,找出这些问题的最好答案。
第21章——数据结构、集合和词典:是特别有价值的大学二年级、三年级课程。本章讨论了用于创建和操作动态数据结构的技术,数据结构包括链表、堆栈、队列(等待队列)和树。这一章开始了自引用类和动态内存分配的讨论,讲解了如何创建和操作各种数据结构,对于每一种数据结构展示了活动代码并显示简单的输出。本章还讨论了Collection 对象,可以动态地增大和缩小类似于数组的一个对象,以及用于存储关键字/值对的Dictionary对象。
当使用参考资料进行工作时,遇到的一个问题可能是不容易观察数据结构以及节点是如何连在一起的。所以我们给出了一些图示,说明连接以及创建的顺序。二叉树例子对于学习自引用和动态数据结构是很有帮助的,这个例子创建了一个二叉树,加入了删除重复值的处理,引入了前序遍历、中序遍历和后序遍历。学生们特别喜欢看到中序遍历以排序的顺序打印出节点。本章的练习包括超市模拟、利用队列递归地搜索链表和从前向后打印链表、二叉树删除、层次遍历、打印树、在一个链表中插入/删除,以及分析二叉树的查找、排序和实现索引类的操作。
附录A——运算符优先级表:列出了Visual Basic 6的每一个运算符以及它们的相关优先级。每一行列出一个运算符及其全称。
附录B——ANSI字符集:列出ANSI字符集的字符以及代码值。ASCII是ANSI的一个子集。
附录C——Internet 和WWW上的Visual Basic资源:展现了Abbey Deitel所能找到的最好的Web资源,非常有利于读者进入“Visual Basic的世界”。这里列出了许多Visual Basic 资源,如资讯、杂志和生产关键Visual Basic 产品的公司。
附录D ——数值系统:讨论二进制、十进制、八进制和十六进制数值系统。这些材料对于计算机科学和工程的入门课程是很有价值的。这个附录使用了与主课程相同的教学方法,其特点是本章的33个练习,其中19个是有答案的自测练习。
Visual Basic 6 多媒体教室
我们为本书制作了一套人机交互的、基于CD-ROM的软件版本,称为Visual Basic 6 多媒体教室(Viaual Basic 6 Multimedia Cyber Classroom),其中包含一个入门介绍,纵览了该多媒体教室的特点。在多媒体教室里,Visual Basic 6的代码例程真正地“活动”起来。每一个程序都有可执行部分,如果在浏览时希望运行一个程序, 只需点击加亮的灯泡图标,立即就会看到或听到(对基于音频的多媒体程序)程序的输出。如果要修改一个程序并希望看到或听到改变后的效果,只要点击软盘图标,源代码就会从光盘中存入读者机器的目录里,然后可以编辑程序、重新编译程序并运行新版本。点击“扬声器”图标,Nieto或Paul Deitel将讲解程序并与读者一起浏览和分析代码。
多媒体教室包含一系列交互式的自测练习,可以加强读者对相关内容的理解,并且提供了一部分练习的解答。请注意,我们没有对所有练习都提供完整的答案,这是因为本书是一本大学教材,教师可以使用这些练习作为家庭作业或考试题目。
Visual Basic 6 多媒体教室也提供了许多辅导内容,包括扩展的超级链接。多媒体教室可以记住读者最近访问的内容(历史列表),并允许读者在历史列表中前后移动。数千项索引是文中出现项目处的超级链接。利用这个完整的文本搜索特性,可以输入一个术语,多媒体教室将在整个文本里查找该术语。目录列表项也是超级链接,点击一章的名字会立即到达相应的内容中。Contents菜单提供了对当前章节的小结、所有其他章节、所有附录和索引的直接访问。许多人喜欢浏览我们的编程提示——常见编程错误、编程技巧、外观与感觉视点、性能提示、可移植性提示、软件工程视点和检测与调试提示。利用每页底部的图标可以访问它们。
使用多媒体教室的学生和专业人士告诉我们,他们喜欢这种交互性。由于提供了扩展的超级链接和其他导航特性,多媒体教室的确是有效的参考工具。老师们在给我们的来信中提到,学生们喜欢使用多媒体教室,他们掌握了比书本上更多的知识。