1、,教学要求:本章是Visual Basic最基本的知识。通过本章的学习,读者应该对VB有一个总体的认识,深入了解面向对象的编程思想,熟练掌握它的语言基础知识,为后面章节的学习打下基础。,1.1 Visual Basic产品的发展历史及其性能简介,1.2 数据表的数据类型及其基本说明,1.3 程序设计中常量、变量及其数据类型,1.4 Visual Basic常用的运算符与表达式,1.5 常用内部函数,1.6 过程及其具体应用,1.7 Visual Basic 语言编码规则,1.8 Visual Basic 与面向对象编程方法,1.9 小 结,第1章 Visual Basic的基本应用,1.1 V
2、isual Basic产品的发展历史及其性能简介,1.1.1 Visual Basic 的诞生及其发展 Visual Basic 最早是1991年Microsoft公司推出的,当时是Visual Basic1.0, 虽然刚推出时缺陷很多,但经过Microsoft公司的不断努力,随后又相继在1992年、1993年、1995年和1997年推出了2.0到5.0的版本,1998年推出了6.0. 整个过程中功能得到了不断完善和扩充,特别是Visual Basic6.0较之以前的版本其功能和性能都大大增强了,特别是数据库管理、网络应用方面更胜一筹。 Visual Basic6.0 有三个版本,分别是学习版
3、(Learning)、专业版(Professional)、企业版(Enterprise),1.1.2 Visual Basic的主要特点,1. 面向对象的可视化程序设计 传统的结构化语言,如Basic、Pascal和C等都是采用面向过程的编程方法。在这种方法中,代码和数据具有很大的分离性,因此这样的程序具有很多缺陷,如程序的可读性、可维护性很差。Visual Basic 采用了面向对象的程序设计方法(OOP),这种方法是把程序和数据封装在一个类中,类的实例就是对象。每个对象都是可视化的。设计程序时只需用现有的工具根据要求直接拖出所需的对象,并为每一个对象设置属性。程序员的工作仅编写针对对象要完
4、成那些功能的程序。因而程序设计的效率可大大提高。,2. 事件驱动的编程机制 传统的程序设计是一种面向过程的设计方式,程序总是按事先设计好的流程进行,而不能将后面的程序放在前面运行,当然用户就不能随意改变、控制程序的流向,这很不符合人类的思维习惯。事件驱动是非常适合图形用户的编程方式,在图形用户界面的应用程序中,程序员只要编写响应用户动作的代码,每个动作之间不一定有联系,这样的应用程序代码较短,当然程序既易编写又易维护。 3.支持多种数据库的访问 数据库访问特性允许对包括SQL Server和其他数据库在内的大部分数据库格式建立数据库和前端应用程序。 4.支持动态链接库(DLL)、动态数据交换(
5、DDE)、和对象连接和嵌入(OLE)。 5.完备的Help联机帮助功能。,1.1.3 学习Visual Basic的建议,1. 理解基本概念我们要清楚的理解数据、流程、赋值等概念;我们要掌握结构化程序设计方法、面向对象程序设计方法;以及我们要理解窗口、对象、属性、方法和事件等概念。2. 抓住基本特征要从特点入手:对象(Object)、属性(Property)、方法(Method)、事件(Event)。这4个特点构成了Visual Basic的灵魂。因此我们必须先理解这4个基本特征。3. 经常练习编程学习语言,一定要经常动手练习编程,Visual Basic也是一样,编程过程就是一点一滴的积累过
6、程。4. 学会使用帮助学会随时使用帮助文件(MSDN),以及多看一些优秀编程实例。,1.2 数据表的数据类型及其基本说明,1.2.1 标准数据类型,1.2.2 自定义数据类型,在VB中除了可以使用前面介绍的标准数据类型外,还可以让用户自己定义数据类型。自定义数据类型有若干个标准数据类型组成,类似于C语言中的结构Pascal语言中的记录类型,自定义数据类型可通过Type语句实现。其语法结构如下: Type 数据类型名元素名1 AS 类型元素名2AS 类型元素名n AS 类型End Type其中元素名表示自定义数据类型中的一个成员,下标表示该元素是数据变量,类型表示该元素为何种数据类型。,1.3
7、程序设计中常量、变量及其数据类型,1.3.1 常量在程序运行过程中,其值不能被改变的量称为常量。在VB中有3种常量:普通常量、符号常量、系统常量。普通常量一般可从字面上区分其数据类型;符号常量就是用一个字符串(称之为符号或常量名)代替程序中的一个常数;系统常量是VB系统定义的常量,存放于VB系统库中。1. 普通常量 (1) 整型常量 (2) 实型常量 (3) 字符串常量 (4) 逻辑常量 (5) 日期常量2. 符号常量 在程序设计中,某个变量多次被使用,则可以使用一个符号来代替该常量。例如数学运算中的圆周率(3.14159265),可以使用PI来表示,在程序中使用该常量时,就不用每次输入” 3
8、.14159265”, 可以用PI来代替,这样不仅书写方便,而且增强了程序可读性与可维护性。,3. 系统常量 VB系统提供了应用程序和控件的系统定义的常量,这些常量可以与应用程序的对象、方法和属性一起使用。它们存放与系统的对象库中,在Visual Basic(VB)和Visual Basic for Application(VBA)对象库中列举了Visual Basic的常量,其它提供对象库的应用程序,如Microsoft Excel和Microsoft Project,也提供了常量列表。在每个ActiveX控件的对象库中也定义了常数。 为了避免不同对象中同名变量的混淆,在引用是通常使用前缀加
9、以标记,例如:vb:表示VB和VBA的常量。 xl:表示Excel常量 db:表示Date Access Object库中的常量。 通过使用系统常量可以使程序更加易于阅读和理解。,1.3.2 变量,在程序运行过程中,其值可以改变的量称为变量,一个变量必须有一个名字和相应的数据类型,通过名字来引用一个变量,而数据类型决定该变量的存储方式和在内存中占据的存储单元大小。 在Visual Basic中,变量有两种形式,即对象的属性变量和内存变量。 属性变量:在一个对象创建时,Visual Basic系统会自动为它创建一组变量,即属性变量,并为其设置默认值,这类变量可供程序员直接使用。 内存变量,也就是
10、我们通常所讲的变量,是有用户更具需要所声明的。,1. 变量的命名规则 在Visual Basic中,给一个变量声明有如下规则: 1. 必须以字符或汉字开头,由字母、汉字、数字和下划线组成的字符串。2.变量长度最长为255个字符。3. 大小写字母同等对待4. 不能使用Visual Basic系统保留字。 2. 变量的申明 声明变量实际上就是要把将要存放的数据类型告诉程序,以便适当的在内存中安排空间,在Visual Basic中变量的声明分为显式声明和隐式声明两种。 所谓显示申明就是用变量声明语句来定义变量的类型,这些语句并不将数据传递给变量,而是告知该变量将要存放的数据类型。 申明语句语法格式为
11、: Dim|Private|Static|Public As,As,1.4 Visual Basic常用的运算符与表达式,1.4.1 运算符 1. 算术运算符,2. 字符串运算符字符串运算符只有两个:“&”和“+”作用都是将两个字符串连接起来。例如:“abcd”+”efgh” 结果为abcdefgh“Visual” & ” Basic6.0” 结果为Visual Basic在使用“&”符号连接字符串时,应当注意将字符串变量和”&”符号之间加一个空格,以免和长整型数据定义符混淆。若均为数值型则按算术加法进行计算,若一个为数值型,一个为字符型,则出错。”&”两边的操作数即可以是字符型也可以是数值型
12、,系统首先将其转化为字符型,然后进行连接操作。,3. 关系运算符关系运算符是双目运算符,作用是将两个操作数比大小,若关系成立,则返回True否则返回False。操作数可以是字符型、数值型。,4 逻辑运算符逻辑运算符除了Not(非)运算符为单目运算符外,其余均为双目运算符。其作用是将操作数进行逻辑运算,得到结果True和False.,1.4.2 表达式,1. 日期表达式日期型数据是一种特殊的数值型数据,他们之间只能进行加(+)、减(-)运算。日期型表达式有算术运算符“+、-”、算术表达式、日期型常量/变量和函数组成。 2. 对象表达式 用来指定一个特定对象的表达式。此表达式可以包括多个对象容器。
13、例如应用程序可以包含一个Application对象,这个Application又包含一个Document对象,而这个Document对象又包含一个Text对象。Command1.Caption=Text1.Text+“BCDEF”。设置标题字。,1.5 常用内部函数,1.5.1 数学函数数学函数用于各种数学运算,包括三角函数、求平方根、绝对值、对数、指数函数等等,它们与数学中的定义相同。,1.5.2 数据类型转换函数,数据类型转换函数用于类型或形式的转换,包括整型、浮点型、字符串型之间以及数值与ASCII字符之间的转换。,1.5.3 字符串函数,Visual Basic 提供了丰富的字符串处理
14、函数,给编程中字符处理带来了极大的方便。 Visual Basic字符串长度是以字为单位的,也就是说中英文字符都作为一个”字”的长度,占有两个字节,这与传统的观念不同,原因是早期Windows系统对字符采用了DBCS(Double Byte Character Set)编码方式,DBCS编码实际上是一种一套混合编码,即西文采用ASCII编码,中文采用双字节编码。现在在Window95以后的Visual Basic中,采用Unicode(国际化标准组织ISO字符标准)。例如:Len(“计算机程序”) 和Len(“ABCDE”)的值都是5 Mid(“计算机程序”,4,2) 结果为:“程序” 注意表
15、中函数的自变量M,当M=0表示区分大小写,M=1不区分大小写,省略M区分大小写。,1.5.4 日期、时间函数,Visual Basic提供了处理日期和时间的函数,同时提供了用于日期和时间操作的内部变量,在日期时间处理方面功能比较强大.日期函数中,“C|N”表示自变量可以是字符表达式或数值表达式。若为数值表达式,表示距1899年12月30前或后(正或负)的天数。例如:Print Day(20) 输出结果为19, Print Day(20) 输出结果为10,DateAdd、DateDiff函数。 例如:DateAdd(“ww”,2,#5/2/2004#) 表示在指定日期上加上2周,所以函数结果为:
16、5/16/2004。 例如:DateDiff(“m”,#5/12/2004#,#3/2/2004#) 结果为2,1.5.5 格式输出函数,格式输出函数即Format函数,是用来将要输出的数据,按指定的格式输出,使输出数据更符合程序设计的要求。返回值为字符串。Format函数使用格式: Format(Expression, Fmt)其中Expression表示要输出的内容,可以是数值,日期或字符串类型数据;Fmt是指输出格式字符串。不同数据类型,系统定义了对应格式字符串。Format函数一般用于Print方法中。1 数值数据格式化 2 日期与时间格式化,1.5.6 其它一些函数,1.6 过程及其
17、具体应用,在编制程序时,经常遇到这样的情况,某语句序列在程序中多次重复出现。把这样一个语句序列作为个整体,即作为过程来调用,就能使程序编写更加方便。如果一个过程执行后要返回一些值,则称其为函数过程。过程是程序设计技术的基本工具之。它在提高程序质量,降低程序设计的难度方面起着重要的作用。 当然,在Visual Basic中用户使用过程又有着其更为重要的意义。因为在Visual Basic用户,所有的事件处理都是以过程的形式编写的。在Visual Basic中经常使用的过程有: Sub过程(不返回值)Function函数过程(返回值),1.6.1 Sub过程,1. 在“代码”编辑窗口中输入 声明S
18、ub过程的名称,参数,以及构成其主体的代码。格式如下:Private|Public|FriendStatic(参数列表)Exit Sub End Sub,2. 使用”添加过程”对话框使用“添加过程”对话框建立过程的方法为 打开要添加过程的代码编辑窗口 执行“工具”菜单中的“添加过程”命令,打开”添加过程”对话框,如图1.1所示。 在“名称”文本框中输入过程名;从“类型”组中选择过程类型。从“范围”组中选择范围,这相当于使用Public或Private关键字。 单击“确定”按钮。,1.6.2 函数(Function)过程,1. 函数过程的定义 Function过程的定义格式如下: Public|
19、Private|FriendStaticAs = ExitFunction = EndFunction,【例1】 计算任意数Num的平方根Function过程SqRoot Function SqRoot(Num As Double)As DoubleIf Num0Then 评估参数Exit Function 退出调用过程Else SqRoot=Sqr(Num) 返回平方根 End If End Function 【例1】 计算任意整数N的阶乘N!Function过程Factorial Function Factorial(N As Integer) As Long Dim M As Long
20、,I As Integer M=1 For I=1 to NM=M*I Next I End Function,1.6.3 过程的调用,1. 子过程的调用 调用 Sub 过程有两种方法: 过程名 参数列表 Call过程名 (参数列表) 2. 函数过程的调用 通常,调用自行编写的函数过程的方法和调用 Visual Basic 内部函数过程(例如 Abs)的方法一样;即在表达式中写上它的名字。 变量名=函数过程名(参数列表),1.6.4 过程的参数传递,1. 按值传递参数按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。用 ByVal 关键字指出参
21、数是按值来传递的。 2. 按地址传递参数按地址传递参数使过程用变量的内存地址去访问实际变量的内容。结果,将变量传递给过程时,通过过程可永远改变变量值。按地址传递参数在Visual Basic 中是缺省的。如果给按地址传递参数指定数据类型,就必须将这种类型的值传给参数。可以给参数传递一个表达式,而不是数据类型。Visual Basic 计算表达式,如果可能的话,还会按要求的类型将值传递给参数。,3. 数组参数的传递 在使用通用过程和函数过程时,可以将数组或数组元素作为参数进行传递。传递整个数组时,在实际参数与其所对应的形式参数都必须写上所要传递的数组的名称和一对圆括号,例如Arr()。 在子过程
22、中不可在用Dim语句来定义所要传递的数组。 4. 使用参数 (1) 使用可选的参数 在过程的参数列表中列入 Optional 关键字,就可以指定过程的参数为可选的。 (2) 使用不定数量的参数 一般说来,过程调用中的参数个数应等于过程说明的参数个数。,1.6.5 递归,递归是一种通用的处理问题的方法,它将复杂的问题分解为一系列相类似的相对简单的小问题。对于一个有经验的程序员,递归地思考问题,使其对特定的问题具有独特的理解力。因此往往能够很好的解决问题,得到一个漂亮的程序。在Visual Basic中,会经常在通用过程中使用递归以使事件过程或真个项目运行的更平滑、快速。递归算法是指一个过程直接或
23、间接调用自己本身,即自己调用自己。递归在算法描述中有着不可替代的作用。很多看似十分复杂的问题,使用递归算法来描述显得非常简洁和清晰。特别是在处理阶乘运算、级数运算、幂级数运算等方面特别有效。,【例】利用递归调用计算n的阶乘n! Function Factorial( N As Integer) As LongIf N1时 Factorial调用Factorial(N-1)End If End Function,【例】求Fibonacci数列 第一个Fibonacci 数是1 (表示为Fib(1)=1) 第二个Fibonacci 数是1 (表示为Fib(2)=1) 第三个Fibonacci 数是
24、11 (表示为Fib(2)=2) 依此类推,下一个Fibonacci数是前两个数之和 例如 Fib(3)= Fib(2)+ Fib(1)Fib(4)= Fib(3)+ Fib(2) 依此类推。 由此我们用递归来实现求Fibonacci,c,程序如下: Function Fib(N As Integer) As IntegerIf N=2 thenFib=1ElseFib(N)=Fib(N-1)+Fib(N-2)End If End Function,1.7 Visual Basic 语言编码规则,1.7.1 Visual Basic 字符集 Visual Basic字符集就是指用Visual
25、Basic语言编写程序设计时所能使用的所用符号的集合。若编写过程中使用超出了字符集的符号,系统会提示错误信息,因此我们首先一定要弄清楚Visual Basic字符集包括的内容。Visual Basic的字符集和其他高级程序设计语言的字符集相似,包括字母、数字和专有字符3类,共89个字符。 字母:大写英文字母AZ; 小写英文字母az. 数字:09. 专用字符:共27个。,1.7.2 Visual Basic 编码规则和约定,1. 编码规则 (1) VB代码中不区分大小写。(2) 一行最多允许255个字符;在一行中可以写多条语句,但必须用”:”分隔(3) 若一条语句一行不能全部写下可以换行,换行时
26、需要本行后加入续行符:一个空格加下划线“_”。 (4) 注解以Rem开头,也可以使用半个单引号:“ ” 。(5) 在程序转向时需用标号,标号是以字母开始而以冒号结束的字符串。 2. 约定 (1) 对于VB程序中的关键字其首字母大写,其余字母小写。 (2) 编写代码过程中,要加入一定量的注解。注解易于程序的维护和调试,(3) 对象命名约定:每个对象的名字有3个小写字母组成的前缀(指明对象的类型)和表明该对象作用的缩写字母组成,1.8 Visual Basic 与面向对象编程方法,1.8.1 面向对象编程与面向过程编程的历史早期程序设计结构化程序设计面向对象的程序设计面向对象程序设计(OOP:Ob
27、ject Oriented Programming)是20世纪80年代初提出的,起源于Smalltalk语言。为了使软件便于在程序设计中能够模仿建立客观世界模型,对系统复杂性进行很好的概述、抽象和分类,使软件的设计和实现形成一个由抽象到具体、由简单到复杂的循序渐进的过程。,1.8.2 Visual Basic 与面向对象编程的优点,Visual Basic中运用OOP方法将代码和数据封装起来形成一个可视化的对象(如控件等),使对象成为有形的实在的东西。编程时,不需要编写和建立和描述每个对象的程序代码,而只需要拖放在相应的位置,系统自动生成对象的程序代码并封装起来。从而可以看出,在Visual
28、Basic中编程比一般OOP语言要简单、容易。 就单纯面向对象程序设计来讲,主要有以下优点: 符合人的思维方式,便于分析复杂的问题; 重用性好,缩短了程序开发的时间; 易于软件维护和功能的扩展; 容易与可视化技术结合,很好的改善了工作界面。,1.8.3 面向对象编程方法与面向过程编程的联系,面向对象程序设计与结构化程序设计方法并不矛盾,也不意味着要抛弃结构化程序设计方法。当面向对象的程序设计在分解为低级模块时,仍需要结构化编程。只是处理大问题和小问题采取的思路不一样。结构化程序设计突出的是过程,即强调代码的功能是如何实现的,重视怎么做,做的过程。面向对象程序突出的是客观世界和抽象的对象,重视做
29、什么。它将大量的工作由相应的对象来完成,而开发人员只需在应用程序中说明对象完成的任务是什么。,1.8.4 对象、属性、事件及方法,1 对象(Object) Visual Basic的对象大致分为以下三大类:(1)界面对象(Interface Objects)主要用来设计应用程序的界面,又可分为“窗体”(Form) 和“控件”(Control)两种:,Visual Basic中的控件大致可以分为3类: 内部控件: ActiveX控件 可插入对象(也叫插件),(2) 系统全局对象(Global Object) 在画面中看不到的对象,如剪贴板等。Visual Basic也会把这些系统资源也当作对象一
30、样看待,处理上十分方便。 (3) 数据存储对象(Data Access Object)作为数据库管理用,又细分为 Database、Dynaset、Field、Index等,了解这些对象的详细用途及功能,是Visual Basic程序设计及其重要的一环。后面章节将会专门介绍。,2. 属性(Property) Visual Basic 的窗体和控件是具有自己的属性、方法和事件的对象。可以把属性看作一个对象的性质,把方法看作对象的动作,把事件看作对象的响应。 3 事件(Event) 事件(Event)是指对象能够识别并作出反应的外部刺激。例如,单击(Click)事件、双击(DblClick)事件、装载(Load)事件、GotFocus事件等等。不同的对象能够识别不同的事件。 4 方法(Method)“方法”指的是作用在对象上的内建指令或函数。其目的是为了对对象执行特殊操作。,1.9 小结,Visual Basic是微软公司推出的可视化编程工具之一,是目前世界上使用最广泛的程序开发工具。 本章主要介绍了Visual Basic的基本理论和基本应用知识。主要包括:VB的发展历史及性能、VB的语言基础与语法规则、VB常用运算符和表达式、过程及内部函数、以及VB面向对象编程方法和对象、属性、事件和方法地概念及示例。,