VB电子教材02.docx

上传人:b****6 文档编号:5626557 上传时间:2022-12-29 格式:DOCX 页数:72 大小:318.93KB
下载 相关 举报
VB电子教材02.docx_第1页
第1页 / 共72页
VB电子教材02.docx_第2页
第2页 / 共72页
VB电子教材02.docx_第3页
第3页 / 共72页
VB电子教材02.docx_第4页
第4页 / 共72页
VB电子教材02.docx_第5页
第5页 / 共72页
点击查看更多>>
下载资源
资源描述

VB电子教材02.docx

《VB电子教材02.docx》由会员分享,可在线阅读,更多相关《VB电子教材02.docx(72页珍藏版)》请在冰豆网上搜索。

VB电子教材02.docx

VB电子教材02

第2章程序设计基础

通过上一章的学习,使我们对VB有了初步的认识。

读者可以参照例题,编写一些简单的应用程序。

完成应用程序的界面设计后,用户就需要编写事件过程代码,用来对用户事件和系统事件作出响应。

只有界面设计合理、过程代码编写正确的程序,才能实现具体的功能。

因此,掌握VB6.0的语法及其使用方法是开发应用程序的基础和关键。

VB包含数百条语句、函数和方法,其中很多与WindowsGUI有直接关系。

程序员可用其实现其他Windows编程语言的功能,初学者可用其编制简单的应用程序。

2.1数据类型、常量与变量

数据是程序的必要组成部分,也是程序处理的对象。

VB预定义了丰富的数据类型,不同数据类型体现了不同数据结构的特点,如表2-1所示。

表2-1VB6.0的常用数据类型

类型

名称

字节数

取值范围和有效位数

整型

Integer

2

精确表示-32768~32767范围内的整数

长整型

Long

4

精确表示-2147483648~2147483647范围内的整数

单精度浮点型

Single

4

-3.402823×1038~-1.401298×10-45

1.401298×10-45~3.402823×10387位有效位数

双精度浮点型

Double

8

-1.79769313486232×10308~-4.94065645841247×10-324

4.94065645841247×10-324~1.79769313486232×10308

15位有效位数

货币型

Currency

8

-922337203685477.5808~922337203685477.5807

字节型

Byte

1

0~255

变长字符串

String

每个字符占1个字节,每个字符串最多可存放约20亿个字符

定长字符串

String*size

size是小于65535的无符号整常数,为字符串长度。

逻辑型

Boolean

2

True或False

日期型

Date

8

100.1.1~9999.12.31

对象型

Object

4

任何对象的引用

变体型

Variant

若存放数值类型数据,占16个字节,最大可达Double的范围。

若存放字符串类型数据,字符串长度与变长字符串相同。

表2-1中,“名称”用以标识变量的类型,“字节数”表示该类型数据所占内存空间的大小。

在2.1.2节,我们将介绍如何声明变量的类型。

了解不同类型变量的取值范围和有效位数,便于我们在设计时根据实际需要正确地选择数据类型。

如:

声明变量a用于存放某个同学一学期各门功课的总分(一般不超过32767),可以声明“DimaAsInteger”,VB处理系统会为变量a分配2个字节的存储空间。

声明变量b用于存放某大学所有职工的工资总和(一般不小于32767),则应声明“DimaAsLong”,VB处理系统会为变量b分配4个字节的存储空间。

又如:

计算圆柱体的体积,并存入变量v,声明v为Single类型,半径和圆周率也采用Single类型,则结果v具有7位有效数字;如果要求计算结果具有更高的精确度,可以考虑采用Double类型。

不同类型的数值数据,其数值范围和有效位数的差别,或是由于所占用的存储空间大小不同、或是由于存储格式不同。

如:

VB用1个字节(8个2进制位)存储Byte类型的数据,其最大值为(11111111)2,因此该类型数据的最大值为255。

又如,VB用2个字节(16个2进制位)存储Integer类型的数据,首位为符号位(正数为0、负数为1),因此其最大值为(0111111111111111)2,即32767。

至此,读者应可理解,为什么Long类型数据的数值范围超过了Integer类型的数据。

Single类型数据占用4个字节内存,第一个二进制位表示该数的符号。

因为任何一个实数都可以表示为±2±J×Q的形式,VB将Single类型数据的后31位分成2段:

一段表示J的大小与符号,一段表示Q的数值。

Double类型数据比Single类型数据多出32位:

1位增加在表示J的段中,31位增加在表示Q的段中,因此Double类型数据比Single类型具有更大的数值范围、更多的有效位数。

特别要指出的是,VB的Single、Double类型数据,表示各自数值范围内的数据是有误差的。

读者可以做一个尝试:

将10进制数0.6转换为2进制数,会发现用2进制不可以将其精确表示。

事实上,计算机不可能用无限位数来表示一个实数,误差就是这样产生的。

2.1.1常量

常量是直接写在程序中的数据,常量的类型由它们的书写格式决定。

数值常量

VB中的整型数、长整型数、单精度浮点数、双精度浮点数、货币型数、字节型数又统称为数值型数据,在使用数值型数据时,应注意以下几点:

如果数据包含小数,则应使用Single、Double或Currency类型。

其中,Single类型的有效数字为7位,Double类型的有效数字为15位,Currency类型支持15位整数和四位小数,适用于货币计算。

在VB中,数值类型数据都有一个有效的取值范围,程序中的数如果超出这个范围,就会出现“溢出”(Overflow)错误。

VB中的常量一般采用十进制数,但有时也使用十六进制数(数值前加前缀&h)或八进制数(数值前加前缀&o)。

如:

赋值语句“d=&h1a2”的作用是,将418(10进制)送入变量d所在的存储单元。

又如:

赋值语句“d=&o216”的作用是,将142(10进制)送入变量d所在的存储单元。

字符串常量

字符串常量是用双引号括起来的一串字符,格式为:

"h1h2h3...hn"。

每个字符占1个字节;可以是任何合法字符,如:

"VB"、"123"、chr$(13)(回车符)、"无实数解",等等。

逻辑常量

逻辑常量只有两个值:

真(True)和假(False)。

当把数值常量转换为Boolean时,0为False,非0值为True;当把Boolean常量转换为数值时,False转换为0,True转换为-1。

日期常量

日期常量用来表示日期和时间,VB可以表示多种格式的日期和时间,输出格式由Windows设置的格式决定。

日期数据用两个“#”把表示日期和时间的值括起来,如:

#08/18/2001#、#08/18/200108:

10:

38AM#,等等。

符号常量

当程序中多次出现某个数据时,为便于程序修改和阅读,可以给它赋予一个名字,以后用到这个值时就用名字代表,这个名字就称为符号常量。

符号常量的定义格式如下:

Const<符号常量名>=<常量>

可以在窗体模块的任何地方(通用对象声明部分或事件过程中)定义。

例2-1符号常量的作用域及应用。

Constpi=3.14159'在通用对象声明部分声明数值符号常量

PrivateSubCommand1_Click()

Constpi=3.14

'事件过程与通用对象声明部分声明的符号常量同名,则事件过程内部引用的是内部

'声明的值,下列Print语句的输出结果是3.14而不是3.14159。

Printpi

EndSub

PrivateSubCommand2_Click()

'事件过程中未声明pi,此处pi是通用对象声明部分所声明的pi,输出3.14159。

Printpi

EndSub

2.1.2变量

常量的类型由书写格式决定,而变量的类型由类型声明决定。

变量的命名规则

变量名由首字符为英文字母、不超过255个字符的字母、数字、下划线符组成。

如Sum、a2、x_1都是VB的变量名。

变量命名的几点说明

不能使用VB的关键字作为变量名。

关键字是指VB系统中已经定义的词,如语句、函数、运算符的名称等,如Print、If等都不能用作变量名。

变量名不能与过程名或符号常量名相同。

VB不区分变量名的大小写。

即大小写是一样的,如X1与x1是同一变量。

变量取名尽量做到“见名知义”,以提高程序的可读性。

建议根据变量类型确定变量名的首字母。

这是一个小写字母,称为变量的数据类型代码标识符。

如:

y:

字节型n:

整型l:

长整型g:

单精度浮点型

d:

双精度浮点型s:

字符串型t:

日期型

这里关于变量名首字符如何确定,提出的只是建议,而不是规定。

根据变量名的首字母并不能确定变量的类型,譬如,仅仅从变量名为“gx1”不能确定变量gx1为单精度浮点型,变量的类型只能根据变量声明来确定。

变量声明

在程序中用到的变量,一般应声明其类型,由此决定变量的存取格式、取值范围、有效数位等。

而声明变量类型的方法有两种:

隐含声明和强制声明。

隐含声明

在变量名的后面加上特定字符(后缀字符),用于规定变量类型的方法称为隐含声明。

由变量后缀字符决定变量类型的具体规定如下:

①变量后缀字符为“%”,隐含声明该变量类型为整型。

②变量后缀字符为“&”,隐含声明该变量类型为长整型。

③变量后缀字符为“!

”,隐含声明该变量类型为单精度浮点型。

④变量后缀字符为“#”,隐含声明该变量类型为双精度浮点型。

⑤变量后缀字符为“$”,隐含声明该变量类型为字符串型。

强制声明

用Dim语句(类型强制声明语句)可以强制声明只能在本窗体中能使用的变量类型。

DimybAsByte,ycAsByte,nkAsInteger,kAsLong

DimgxAsSingle,dyAsDouble,snameAsString*10

以上语句声明yb、yc为字节变量,声明nk为整型变量,声明k为长整型变量,声明gx为单精度浮点型变量,声明dy为双精度浮点型变量,声明sname为最多10个字符的定长字符串型变量。

注意:

不可以将语句“DimmAsInteger,nAsInteger"写作“Dimm,nAsInteger",后者实际上将m声明为变体类型,增加了变量m的内存开销。

若强制声明了变量类型,则不可再为变量名加后缀字符。

一个变量如没有声明,则VB将其作为变体类型变量。

好的程序设计风格是声明每一个变量的类型,一方面可以提高程序的可读性,另一方面,可避免采用变体数值类型数据,以减少程序运行时的内存开销。

变量的初始值

在程序中声明了变量以后,VB自动将数值类型的变量赋初值0,变长字符串被初始化为零长度的字符串(""),定长字符串则用空格填充,而逻辑型的变量初始化为False。

同符号常量一样,可以在窗体模块的任何地方(通用对象声明部分或事件过程中)定义变量。

例2-2变量的作用域及应用。

DimsMystringasString'在通用对象声明部分声明字符串变量

PrivateSubForm_Load()

sMystring="欢迎使用VB6.0"

EndSub

PrivateSubForm_Click()

PrintsMystring

EndSub

程序运行时,单击窗体,在窗体中显示欢迎使用VB6.0。

如果不在通用对象声明部分声明字符串变量sMystring,或将其放在Form_Click或Form_Load事件过程中声明,则程序运行后什么也显示不出来。

2.2Print语句、赋值语句

2.2.1语句、命令的语法描述规则

为便于解释语句、方法和函数,本书在各语句、方法和函数的语法格式和功能说明中采用统一的符号约定。

DIM<变量名>[AS<数据类型>][,<变量名>[AS<数据类型>]...]

各语法描述符号及它们的含义如下:

·“<>”为必选参数项,尖括号中的中文提示说明,必须由使用者根据问题的需要提供具体的参数。

如果缺少必选参数,则发生语法错误。

·“[]”为可选参数项,方括号中的项目由使用者根据具体问题决定选与不选。

如省略,则为缺省值。

·“{}”和“|”,包含多中取一的各项,竖线分隔多个选择项,必须选择其中之一。

·“...”表示同类项目的重复出现。

注意:

在书写具体的命令时,不能出现这些语法描述符号。

2.2.2Print语句

使用Print语句可以在窗体上输出表达式的值,并可在其他图形对象或打印机上输出信息。

该语句格式为:

[<对象名称>.]Print[<输出项>[[{,|;}][<输出项>]]...]

其中,<对象名称>可以是窗体(Form)、图片框(PictureBox)或打印机(Printer)。

·输出项之间的分隔符“,”为分段格式,“;”为紧凑格式。

·语句末尾为分隔符“,”或“;”,则该语句最后的输出位置为下一条print语句输出的起始位置。

·若省略输出项,则输出一空行。

VB将一行分为若干段,每14列为1段,若两个输出项之间用逗号间隔,则第2个数据项的输出位置从下一段开始;若两个输出项之间用分号间隔,则第2个数据以“紧凑”格式输出。

例2-3Print语句的输出格式及应用。

PrivateSubForm_Click()

Print123,888,-456,3.14

Print123;888;-456;3.14

Print"123";"888";"abc",True;

Print123,888;-456;3.14

Print

Print123,888,-456,3.14

EndSub

运行该程序时,在窗体上的输出结果如图2-1所示。

图2-1例2-3的输出结果

从例2-3的输出结果可知:

·无论是分段格式还是紧凑格式,数值数据输出后都会尾随一个空格,输出正数时正号不显示、输出一个空格。

这就是为什么图2-1第二行中的123和888之间有2个空格、而888与-456之间只有1个空格的原因。

·字符串数据原样显示引号内的内容,逻辑类型数据直接输出True或False。

2.2.3赋值语句

格式:

<变量名>=<表达式>或<控件名>.<属性名>=<表达式>

功能:

计算表达式值并转换为相同类型数据后为变量或控件属性赋值。

说明:

·为数值变量赋值时,表达式的值不得超过数值变量的数值范围,否则显示错误信息。

如执行语句“k%=1234567”与“f!

=1.34E39”都将出现赋值错误。

·值为浮点类型的表达式四舍五入后向整型变量赋值。

如执行语句“k&=5.76”后,k&被赋值6;执行语句“i%=-4.49”后,i%被赋值-4。

·任何类型表达式都可以向字符串变量赋值。

如执行语句“a$=123.45”后,字符串变量a$中存放了字符串"123.45"。

·赋值号不是数学中的等号。

如执行语句“a=a+8”的过程是,取变量a的值与8相加后的结果再赋值给变量a。

例2-4编写一个实现两个变量值交换的程序。

我们可以把两个变量A、B设想成分别装有牛奶和咖啡的两只杯子,现在要把牛奶倒到咖啡杯里,而将咖啡倒到牛奶杯里。

可以这样来做:

另取一只杯子(同类型变量)C,将A中的牛奶倒入杯子C,再将B中的咖啡倒入杯子A,最后将杯子C中的牛奶倒入杯子B。

程序如下:

PrivateSubForm_Click()

a%=5:

b%=8

Printa%,b%'显示交换前的值

c%=a%:

a%=b%:

b%=c%'交换

Printa%,b%'显示交换后的值

EndSub

显然,将交换的过程写作“a%=b%:

b%=a%”是错误的。

2.3运算符、表达式、常用内部函数

2.3.1算术运算符与算术表达式

算术运算符

如表2-2所示,VB共有7个算术运算符,除了负号是单目运算符,其他都是双目运算符。

表2-2算术运算符

运算符

名称

实例

^

乘方

2^3值为8,-2^3值为-8

*

乘法

5*8

/

除法

7/2

\

整除

7\2值为3,12.58\3.45值为4(两边先四舍五入再运算)

Mod

求余数

7mod2值为1,12.58Mod3.45值为1(两边先四舍五入再运算)

+

加法

1+2

-

减法、取负

5-8,-3

算术运算符的优先级

算术运算符之间的运算优先级从高到低如下所示,由此可知:

指数运算优先级最高,而加、减运算优先级最低。

指数运算^→取负-→乘、除→整除\→求余Mod→加、减

其中,整除和求余运算只能对整型数据(Byte、Integer、Long)进行,如果其两边的任一个操作数为实型(Single、Double),则VB自动将其四舍五入、再用四舍五入后的值作整除或求余运算。

乘、除和加、减分别为同级运算符,同级运算从左向右进行。

在表达式中加括号可以改变表达式的求值顺序。

算术表达式

常量、变量、函数是表达式,将它们加圆括号或用运算符作有意义的连接后也是表达式,书写VB的算术表达式,应注意与数学表达式在写法上的区别。

·不能漏写运算符,如3xy应写作3*x*y。

·VB算术表达式中使用的括号都是小括号。

例2-5由下列数学式写出相应的VB算术表达式。

写作:

1/(1+1/(1+x))

写作:

-(a*a+b*b*b)*y^4

写作:

(-a^(b^c)+b^0.5)*(a-b)^-0.5

变量k是一个两位整数,求其个位数与十位数之和的算术表达式为:

kmod10+k\10

2.3.2字符串运算符与字符串表达式

字符串运算符有两个:

“+”和“&”,均为双目运算符、用于连接两边的字符串表达式。

"ABCD"&"efg"计算后所得表达式的值为"ABCDefg"

"杭州"&"西湖"计算后所得表达式的值为"杭州西湖"

字符串连接符“&”具有自动将非字符串类型的数据转换成字符串后再进行连接的功能,而“+”则不能。

如:

"xyz"&123计算后所得表达式的值为"xyz123"

"xyz"+123出现类型不匹配错误

2.3.3关系运算符与关系表达式

关系运算符也称为比较运算符,包括<、<=、>、>=、=、<>六种,均为双目运算符,用于比较两边的表达式是否满足条件,运算结果为True或False。

在关系表达式求值时:

·数值数据比较大小,如3<=5为True;

·日期类型数据比较先后,如#11/18/1999#>#03/05/2001#为False;

·字符类型数据比较字符的ASCII码:

若两端首字符相同则比较第2个字符……直到比较出相应字符的ASCII值大小或两端所有字符比较结束。

如"ABCd">="ABCD"为True

"ABCd">="cd"为False

"ABCd"="ABCd"为True

两个字符串的“=”关系比较结果为True,它们必定是两个完全相同的字符串。

2.3.4逻辑运算符与逻辑表达式

常用的逻辑(布尔)运算符有三种,如表2-3所示。

逻辑运算符的优先级是:

先Not,次And,后Or。

算术运算符、关系运算符和逻辑运算符的优先级关系为:

算术运算符最高,其次是关系运算符,最后是逻辑运算符。

关系表达式的值为False或True,因此也是逻辑表达式;逻辑表达式用逻辑运算符正确地连接后也是逻辑表达式。

表2-3逻辑运算符

运算符

名称

实例说明

And

8Mod2=0And8Mod3=0,值为False。

只有当两个表达式的值都为真(True)时,结果才为真,否则为假(False)

Or

8Mod2=0Or8Mod3=0,值为True。

两个表达式中只要有一个为真(True)时,结果就为真;只有当两个表达式的值都为假(False)时,结果才为假(False)

Not

Not1>0,值为False,由真变假;

Not1<0,值为True,由假变真

例2-6由下列条件写出相应的VB逻辑表达式。

条件“-3

-3

判断变量a、b均不为0的逻辑表达式为:

a*b<>0或a<>0andb<>0

判断变量a、b中必有且仅有1个为0的逻辑表达式为:

a=0andb<>0ora<>0andb=0或a*b=0anda+b<>0

判断整型变量k是正的奇数的逻辑表达式为:

k>0andkmod2=1

判断变量a、b、c是否等比数列中顺序的3项,逻辑表达式为:

a/b=b/c

平面三点坐标为(x1,y1)、(x2,y2)、(x3,y3),且x1≠x2≠x3,判断它们是否共线的逻辑表达式为:

(y3-y2)/(x3-x2)=(y2-y1)/(x2-x1)

2.3.5常用内部函数

VB的内部函数是系统预定义函数,可由用户直接调用。

VB函数的自变量必须用括号括起来,并满足一定的取值要求。

这里主要介绍一些常用内部函数,其他函数可参见VB的有关资料。

1.数学函数

下列函数的参数均为数值类型。

三角函数:

Sin(x)、Cos(x)、Tan(x),反正切函数Atan(x)

以上函数分别返回正弦值、余弦值、正切值和反正切值;

VB没有余切函数,求x弧度的余切值可以表示为1/Tan(x);

函数Sin、Cos、Tan的自变量必须是弧度,如数学式Sin30°,写作VB的表达式为Sin(30*3.1416/180);

其他反三角函数可以转换为等值的反正切函数,然后用VB的反正切函数Atan计算,如函数Atan(x/sqr(1-x*x))可以求sin-1x(不可以写作Asin(x),因为VB没有预定义反正弦函数Asin)。

Abs(x):

返回x的绝对值。

Exp(x):

返回e的指定次幂,即ex。

Log(x):

返回x的自然对数。

Sgn(x):

符号函数,当x>0时,Sgn(x)的值为1;当x=0时,Sgn(x)的值为0;x<0时,Sgn(x)的值为-1。

Sqr(x):

返回x的平方根,如Sqr(16)的值为4,Sqr(1.44)的值为1.2。

Int(x):

返回不大于x的最大整数,如Int(7.8)值为7,Int(-7.8)值为-8。

Fix(x):

返回x的整数部分,如Fix(7.8)值为7,Fix(-7.8)值为-7。

2.字符串函数

Ltrim(x):

返回删除字符串x前导空格符后的字符串。

如Ltrim("abc")的计算结果为字符串"abc"。

Rtrim(x):

返回删除字符串x尾随空格符后的字符串。

如Rtrim("abc")的计算结果为字符串"abc"。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 起诉状

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1