面向对象的程序设计方法_第1页
面向对象的程序设计方法_第2页
面向对象的程序设计方法_第3页
面向对象的程序设计方法_第4页
面向对象的程序设计方法_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安财经学院vb重点

第2章面向对象的程序设计方法

(选择、填空)

简单VB程序的建立过程

具体过程:

创建一个VB应用程序有6个步骤:

创建应用程序界面

设置对象的属性

编写代码

保存窗体和工程

运行调试程序

生成可执行文件

对象(object)是客观世界中实际存在的事物,可以是有形的,也可以是无形的,具有静态

和动态特征,如一名学生、一所学校、一个表单、一个按钮等。在程序设计中是数据与方

法的统一体。

类(class)

是同一种对象的统称。如动物是一个类,具体到某一个动物,比如一只猴子就是一个具体

的对象。

L属性

属性是指一个对象的性质和特征。这些特征可能是直接可见的,也可能是不可见的。设

置对象属性的方法:

在设计阶段,在[属性]窗口中直接设置对象的属性,决定对象的初始值。在程序代码中

通过赋值实现

[对象名•]属性名=属性值

示例:

Labell.Caption="输入数”’设置标签的标题

2.事件、事件过程和事件驱动

(1)事件

事件是对象能够识别的一种操作或动作(并做出反应的外部刺激)。

单击鼠标、双击鼠标、键盘按下等都是一些控件所能识别的动作,这就是控件的事件。

(2)事件过程

当在对象上发生了事件后,应用程序对这个事件所能做出的反应及处理步骤就是事件过

程。一个动作可能导致多个事件发生。

事件过程的语法格式如下

PrivateSub对象名_事件名()

处理事件的程序代码

EndSub

3.方法

方法是对象所具有的动作和行为,实际上是VB提供的一些已封装好的通用子程序。1

方法的调用格式:

[对象].方法[(参数表)]

例:PrivateSubForm_Click()

Forml.Move0,500,1000,2000

①属性

对象名.属性名

②方法

对象名.方法名[(参数表)]

③事件过程

PrivateSub对象名事件名([参数表])

EndSub

其中窗体的事件过程为:Form事件名

Name、Caption、Font、Enabled、Visible,Height^Width^Left和Top等。

(l)Name(名称)属性

用于设置窗体对象的名称,其被用在代码中引用该窗体。只能在设计时设置,运行时为只

读。以字母开头,后跟字母、数字和下划线,长〈=40字符。建议以frm为默认前缀。当

前窗体name可用me.

(2)Appearance属性

用于设置一个对象是否以3D效果显示,运行时为只读。

(3)BackColor>ForeColor属性

BackColor:用于设置窗体内文本或图形对象的背景色。

ForeColor:用于设置窗体内文本或图形对象的前景色。

(4)BorderStyle属性

用于设置窗体的边框样式:0~6。P21

(5)Caption属性

用于确定窗体标题显示的文本。

(6)ControlBox属性

设置是否取用窗体一控制菜单II:T.F

(7)Enabled属性

设置或返回对象是否能够对用户产生的事件作出反应。T、F

(8)Height,Width,Left、Top属性

值以twips(堤,1缝=1/567CM)为单位。

(9)Font属性

设置或返回窗体上字体的样式、大小、字形等。

如:

FontName="楷体_GB2312”

FontSize=20

FontBold=True

2

(10)Icon属性

该属性用于设置窗体的标题图标。

(ll)Picture属性

用于设置在窗体中显示的图片。

设计时:

运行时:[对象.]Picture=LoadPicture("文件名")

(12)StartupPosition属性

决定窗体启动后出现时在屏幕上的位置,运行时不能设置。

(13)Visible属性

用于设置窗体是被显示还是被隐藏。

(14)WindowState属性

(DClick/DbClick事件

Click是鼠标单击事件。其事件过程结构为:

PrivateSubForm_Click()

(VB语句)

EndSub

DbClick是鼠标双击事件。其事件过程结构为:

PrivateSubFormDbClick()

(VB语句)

EndSub

(2)Resize事件

Resize事件。

①Initialize事件

在加载一个窗体时,此事件最先被引发,称为初始化事件。此时,在内存中只存在窗体的

代码部分,且窗体不存在。利用这个事件可以编写窗体或控件的初始化程序。事件过程

为:

PrivateSubFormInitialize()

EndSub

②Load事件

在窗体被加载时,由系统引发Load事件。可以使用该事件过程在窗体显示之前作一些准

备活动,例如:设置窗体或控件的属性,给变量赋初值等等。事件过程为:

PrivateSubForm_Load()

③Activate事件

当窗体被加载或被激活时引发Activate事件。可在此事件过程中设置控件焦点、进行绘

图等。

事件过程为:

①QueryUnload事件

当窗体卸载之前,先引发QueiyUnload事件。P25

3

事件过程为:

PrivateSubForm_QueryUnload(cancelAsInteger,UnloadModeAsInteger)

②Deactivate事件

在卸载时.,当活动窗体变为非活动窗体时触发此事件;当不进行卸载时,但窗体变为非激

活窗体时,也会接收到此事件。事件过程为:

PrivateSubForm_Deactivate()

③Unload事件

如果QuerUnload事件过程未中止窗体的卸载过程,当窗体从屏幕上消失时,会继续引发

Unload事件。事件过程为:

PrivateSubForm_Unload(cancelAsInteger)

©Terminate事件

这是窗体卸载过程中的最后•个事件。事件过程为:

PrivateSubObjectTerminate()

(5)Paint事件

在鼠标在一个窗体上移动或放大窗体之后,或在一个覆盖该对象的窗体被移开之后,引发

此事件。

(1)Show方法

用于显示窗体。

语法:Object.Show[Style]'默认0,无模式

(2)Hide方法

用于隐藏窗体,但不能将窗体卸载。

语法:Object.Hide

(3)Move方法

用于移动窗体到一定的坐标位置。

语法:Object.Moveleft[,topE,width[,height]]]

(4)Refresh方法

用于强制性完全重绘窗体及上面的控件。

语法:Object.Refresh

(5)Cis方法

清除对象上的文本或图形。

语法:object.Cis

(6)Print方法

在窗体、图片框上输出文字,也可在打印机上输出。

语法:object.Print[输出列表]

Name属性

Caption属性'默认属性

Visible属性

Enabled属性

Default属性

Cancel属性

Value属性:无论用何种方法选中命令按钮,均将其值设为True并触发Click事件,

默4

认为False。

Move方法

Text属性'默认属性

MaxLength属性

MultiLine属性

ScrollBars属性

Appearance属性

Sellength>SelStart>SelText属性

PasswordChar属性

Alignment属性

Click事件:

DblClick事件:

Caption属性

BorderStyle属性

AutoSize、Wordwrap属性

、Font属性

事件

Change事件

七.程序书写规则(熟练掌握)

在编写程序代码时,要遵守一定的规则。不能超越其规定来自由发挥。不区分大小

写:VB不区分应用程序代码字母的大小写一行写多条语句,用冒号分隔。

Sum=Sum+x:Count=Count+1

•条语句写成多行

使用续行符(一个空格后面跟随一个下划线一_II),将长语句分成多行。例如:

PrintTextl.Text&Text2.Text&Text4.Text1~~1_

&Left(Text3.Text,3)

注释说明:英文单引号、Rem;

5

行号和行标号;

空格分隔

各关键字之间,关键字和变量名、常量名、过程名之间

一定要有空格分隔

示例:Private1-1Sub1-1Form_Click()

使用缩进

编写程序代码时,可以使用缩进来反映代码的逻辑结构和嵌套关系。课后习题:P35

6

第3章VB语言的基本成分

(选择、填空)

一.基本数据类型(考点:类型名及其取值范围)

数据是程序处理的对象。为了更好地处理各种各样的数据,VB定义了多种数据类型;

数值型数据--般分为整型数和浮点数两类。

整型数分为整数(Integer)和长整数(Long)„

浮点数分为单精度浮点数(Single)和双精度浮点数(Double)。有时也把货币型数据

(Currency)和字节型数据(Byte)划归数值型数据。

(1)整型(Integer)

整数是不带小数点和指数符号的数;

存储:2字节;

取值范围:-32768〜32767。

(2)长整数(Long)

存储:4字节;

取值范围:-2147483648〜2147483647。

(3)浮点数

浮点数(实型数或实数)由符号、指数和尾数组成。浮点数:分单精度浮点数(Single)

和双精度浮点。单精度浮点数(Single):

存储:4个字节(32个二进制位)

范围:-3.4028*1038~3.4028*1038

双精度浮点数:(Double)

存储:用8个字节(64个二进制位);

范围:T.79769*10308-1.79769*10308。

(4)货币型(Currency)

专门为处理货币而设计的数据类型,小数点前有15位,小数点后有4位,其余的数字被

舍去。

存储:用8位字节存储;

取值范围:-922337203685477.5808〜

922337203685477.5807。

(5)字节型(Byte)

存储:用1个字节的无符号二进制数存储;

字符串是用双引号括起来的一串字符序列,两种类型字符串:变长字符串和定长字符串。

例:

“Canton"、"1+2=?"、"Good1~1Morning”

在VB中,把汉字作为一个字符来处理。

注意:

7

①零字符串用表示,而“”则表示有•个空格的字符串;

②字符串中必须用两个连续的双引号来表示字符串有一个双引号。如字符串:“abc"”

计算机"“abc”;

+10个字节。

逻辑型数据只有两个值:真(True)和假(False),用2字节二进制数存储,经常用来

表示逻辑判断的结果。

当把数值型数据转换为逻辑型数据时,0会转换为Flase,其它非0值转换为

Trueo反之,当把逻辑型数据转换为数值型时,Flase转换为0,True转换为-1。

日期型数据按(8个字节)64位浮点数值存储,表示的日期从公元100年1月1日~9999

年12月31日,时间范围为0:00:00~23:59:59。

任何在字面上可以被认作日期的文本都可以赋值给日期变量,且日期文字必须用符号

括起来,

如^January15,2011#

对象类型的数据主要是以变量形式存在的,Object变量通过32位(4字节)来存储,该

地址可以引用应用程序中的对象。利用Set语句,声明为Object的变量可以被赋值并被

任何对象所引用。

Set对象变量名=对象名

例:DimobjlAsObject

Setobjl=Command1

变体型数据是一种可变的数据类型,可以存放任何类型的数据。存储:

N(数值):16字节

C(字符串):串+22

未声明的变量系统默认为Variant型。

例:

Temp=“22”'字符串

Temp=Temp-l'数值

Temp=#01/01/2002#'日期

二.直接常量(考点:明白各是什么意思)

常量是指在程序运行过程中,其值保持不变的量。包括直接常量和符号常量。直接常

量:在程序代码中直接给出的数据。

例如:123,-263,

"VisualBasic","12.57”等

符号常量:符号常量是在程序中用符号表示的常量。用户定义、系统常量。例如:

ConstPI=3.14159AsSingle

S=PI*R*R

8

整型:十进制、八进制、十六进制

例如:888&0555&H888

长整型:在整型常量之后加上后缀&

例如:999999&

&0555&0555&

&H888&H888&

有两种表示方法。

(1)日常记数法

一般书写方法。如果整数或小数部分为零时,可以省略零,但是小数点不能省略。如

0.5可写为.5

在浮点型常量后面可加上类型声明符"!"、来指明该浮点型常量是单精度浮点型

常量还是双精度浮点型常量。

例如:0.123!,.123,12.#,0.0

(2)科学记数法

用指数形式来表示浮点型常量,用mEn表示mX

10n„其中,m称为尾数,它可以是一个带有正负号的小数;n称为指数,它只能是一个带

有正负号的整数。

标准科学记数法:尾数的小数点前有且仅有一位非零数字。也可用mDn表示mXIOn。

12.34e8,1.23D-3,-1.23d3

字符串型常量是指用双引号括起来的一串字符。

例如:“大家好!”、“abD123”、“”、

“”是含有三个空格的字符串,长度为3。

是一个空字符串,长度为0。

“大家好!”,长度为8。

空格也是合法的字符,要注意含有空格的字符串和空串的区别:

“”就是含有空格的字符串

空串中没有任何字符

True和False,分别表示逻辑真和逻辑日期时间型常量:用“#”括起来的一串日期和时

间,它可以表示一个日期,也可以表示-个时间,还可以同时表示日期和时间。

例如:#1/31/2003#

#2003.3.8#

#May1,2003#

#11:30:22AM#

#3/1/200312:22:09#

三.变量(考点:变量的声明一作用域、参数传递)

1)变量名必须是以字母开始的,由字母"之和小2)、数字(0、9)或下划线(_)组

成。

9

2)长度不能超过255个字符。

3)自定义的标识符不能和VisualBasic中的运算符、语句以及系统已有的函数、过程名

等关键字同名,同时也不能与系统已有的方法和属性同名。

4)最好做到一见名知意II。

5)可使用下划线改变长变量名的可读性。

6)用默认前缀。

下面是一些正确的变量名:

SumTelCircleXAlMy_name

下面是一些非法的变量名:

Integera[l]Y$1

语法格式如下:

一般:

[Let]变量名或属性名=表达式

例:

strl=—abc||

forml.caption=一练习||

对象型:

Set对象变量名=对象名

例:

DimobjlAsObject

Set

objl=Command1

objl.Caption="OK"

声明变量就是事先将变量通知给程序,由此使变量的使用合法。

声明变量时需要指明:变量名、变量类型、变量的作用域和生存期。

变量声明后,系统为该变量分配内存空间,确定其数值范围、作用范围和生存周期。变

量的声明分为3个级别:

过程级变量、模块级变量和应用程序级变量

声明变量的语句所放的位置不同,其作用范围不同。

(1)过程级变量

过程级变量:在某个过程中定义的变量。其特点是只在其定义变量的过程中有效,当过程

代码执行完时,变量立即从内存中释放掉。

声明过程级变量的语句格式:

Dim|Static变量名As类型名

说明:

•用Dim声明的变量的生存周期短,进入此过程时,系统为变量分配存储单元,退出此过

程时,系统释放存储单元,变量消失。

•用Static声明的变量叫静态变量,第一次进入此过程时,系统为变量分配存储单元,

退出此过程时,存储单元保留,变量失效。重新进入此过程时,该变量被激活,变量值仍

存在,可以继续使用。

(2)模块级变量

在模块通用声明段中声明的变量,在模块中的所有过程中都有效,模块运行结束后被释

放。

10

语句格式:

Dim|Private变量名As类型名

说明:Dim和Private是等效的。

(3)用程序级变量

应用程序级变量是指在整个工程的任何模块中都有效的变量。又叫全局变量。在标准模块

的声明段中声明。

语句格式:

Public变量名As类型名

如:Publica1AsInteger

儿种特殊变量的声明

①定长字符串变量与变长字符串变量的声明

变长字符串变量:

Dim|Private变量名AsString

变长字符串变量包含字符的个数是可变的,所占用的存储空间是该字符串的长度加上10

个字节。

定长字符串变量:

Dim|Private变量名AsString*字符串长度

定长字符串变量包含字符的个数是固定的,所占用的存储空间是就是声明语句中指定的字

符串长度。多出的截掉,不够的补空格。

注意:不能在窗体模块或类模块中声明全局定长字符串变量。

②对象型变量

语句格式:

Dim变量名AsObjectControl|对象类型名

使用Object声明的变量可以引用任何一种类型的对象。使用Control声明的变量可以引

用所有的控件对象。使用一对象类型名II声明的变量只能引用这种类型的对象。

例如:DimobjlAsObject

DimobjlAsControl

DimobjlAsCommandButton

声明变量的注意事项

1)一条语句中声明多个变量,例如:

DimaAsInteger,bAsString,cAsDate

Privatea,b,cAsDate

2)变量被声明时.,VB自动设定默认值。P45

数据的类型可在数据之后加上一个类型符来表示,

例如:

a%,413&,86!,104.67#等。P46

四.符号常量(考点:各声明方法的含义)

符号常量也称为用户自定义常量,用户首先得给常量起一个名字,其命名方法类似于变量

的命名方法,也要求使用以字母开头的字母、数字、下划线串命名;然后使用Const常量

声明语句来声明常量,这样才能使用它。与声明变量不同的是,声明符号常量时要指定符

号常量的值,这个值在程序的整个运行过程中都不能被改变,不能被重新赋值,这也是符

号常量与变量的本质区别。

11

声明格式:

Const常量名[As类型名]=表达式

如ConstPI=3.14156

表达式的值就是被声明的变量的值。【AS类型名】用来定义常量的类型,可以省略。这

个声明语句如果放在某个过程的内部,则称它为过程级变量,过程级变量使用范围局限于

该过程的内部。

声明格式:

[Private]Const常量名[As类型名]=表达式

声明格式:

PublicConst常量名[As类型名]=表达式

说明:声明语句要放在标准模块的声明段中声明。

(4)注意

①当省略了[As类型名]时,默认为Variant常量。

②不能在窗体模块和类模块中声明全局常量。

③表达式中不能使用函数和Is运算符。

④可以使用一条语句声明多个常量,方法与声明变量类似。

⑤常量取名时建议加上Con前缀。

*-*/\Mod+------------------------------------------------------------------

-------------->运算符优先级

”(指数运算)f-(求负)一*(乘法)、/(除法)-\(整除)-Mod(求余)一+、-

同级从左到右

说明:

(1)日期时间土数值型

将日期时间型数据的日期部分加上(减去)数值型数据的整数部分以形成新的日期。将

日期时间型数据的时间部分加上(减去)数值型数据的小数部分以形成新的时间。

(2)日期型土日期型

两个R期时间型数据进行减法运算时,结果两个日期之间相差的天数;

进行加法运算时,将后一个转换成数值再加。

(3)日期型土逻辑型、

同日期时间土数值型。

例:

#5/1/2003#+31结果:#6/1/2003#

#5/1/20036:00:00PM#-1.25结果:#4/30/200312:00:00AM#

#6/1/2003#-#5/1/2003#结果31

#5/1/2002#+True相当于#5/1/2002#+(-1)

(4)/和\的区别:1/2=0.5,1\2=0

整除运算符一\II:运算前先将两个运算量按四舍五入的方法转换成整型数值,如果小数

12

部分正好是0.5,则向最近的偶数靠拢,然后再参加运算,运算结果只截取整数部分。

例:

17\2结果是817.3\2结果是817.5\2结果是917.8\2结果是

916.5\2结果是8

(5)Mod用来求整型数除法的余数例如:9Mod7结果为2

运算结果的符号与被除数保持一致;在运算前先将两个运算量按四舍五入的方法转换成整

型数值,如果小数部分正好是0.5,则向最近的偶数靠拢,然后再参加运算。绝对值小于

或等于0.5的数不能作为除数。再例:

17mod3结果是2-17mod3结果是-217mod-3结果是217.5mod3

结果是0

0&、+运算符都能用于两个字符串的连接。&运算符:强制两个表达式按字符串连

接。+运算符:当两个表达式都是字符串时按字符串连接,否则视具体情况会有不同结

果。一般使用&运算符。例如:

一西安II&一财院II

—西安财院II

&和+运算符的比较

X

Y"5"555

X&Y"12345"”12345"”12345”"123A5”

X+Y”12345”12391239报错

"1234"1234"1234”"123A"

13

<<=>>=<>=IsLike

运算优先级:同级

反映两个运算量之间的关系。关系成立,返回True(真);关系不成立,返

运算结果只有True和False。

注意一等于II和一赋值号II的区别。

若英文字母的比较运算不区分大小写在模块的通用声明部分添加一行代

码:

OptionCompareText

日期时间型数据做关系运算时,较晚的日期时间大于较早的日期时间。

如:#10/30/1999#<#10/31/1999#

Is运算符

对象比较运算符,它用来比较两个对象变量。如果它们引用的是同一个对象,则运算结果

为True,否则为False。

例如:DimObjvarlAsObject

DimObjvar2AsObject

DimBlnvar3AsBoolean

BInvar3=ObjvarlIsNothingT

SetObjvarl=Cmdl

Set0bjvar2=Cmd2

Blnvar3=ObjvarlIs0bjvar2F

Like运算符

字符串匹配运算符,它将字符串与给定的一模板II进行匹配,若匹配成功,结果为True,

否则为Falseo

格式:

StrvarlLikeStrvar2

其中:Strvarl是被比较的字符串,Strvar2是一模板IIoP54例:

-xyzIILike—x*IIT

—yyz||Like—x?z||F

14

NotAndOrXorEqvImp

双目运算符:And(与)、Or(或)、Xor(异

或)、Equ(逻辑等于)和Imp

(逻辑蕴涵)。

单目运算符:Not(非),只有一个操作数。

说明:逻辑运算时,只要参与运算的表达式中

有一个为Null,则将返回Null,

所谓按位逻辑运算是指先把操作数转换为补码表示的二进制数(机器内部表示数的方

法),然后,对该数的每一个数值位进行逻辑运算,这里,二进制数1当作True,而二进

制数0当作False,运算规则与逻辑运算符相同。P57

六.表达式

表达式是指用运算符和括号将属性、常量、变量和函数连接起来的有意义的式子。算术、

字符串、关系和逻辑表达式。

1.表达式的书写规则:

(1)水平书写,表达式中无上下角标,无上分子下分母,所有的符号都写在一行上;

(2)在表达式中乘号不能省略

如a*b不能写成ab(或a•b)

(3)括号不分大、中、小,一律采用圆括号,可以嵌套使用

如,x[x(x+l)+l]—x*(x*(x+l)+l)

2.运算优先级

从高到底的顺序进行:

算术运算符一>字符串运

Abs(x):x为数值型表达式,它的功能为求x的绝对值;

Sqr(x):x为大于或等于0的数值型表达式,它的功能为求x的平方根;

Exp(x):x为数值型表达式,它的功能为求e的x次方,函数返回值的类型为Double

型,当Exp(x)>709.8时,会产生溢出;

Log(x):x为大于0的数值型表达式,它的功能为求x的自然对数(以e为底的对数),

函数返回值的类型为Double型;

15

Sgn(x):x为数值型表达式,它的功能为求x的符号;Int(x):x为数值型表达式,

Int(x)返回值为不大于x的最大整数;Fix(x):x为数值型表达式,Fix(x)的功能为剪取

x的整数;Round(x,n):x为数值型表达式,n为整数。Round(x,n)的功能是对x四舍五

入保留n

为小数,如果n省略,就四舍五入保留x的整数部分;

Rnd(x):x为数值型表达式,Rnd(x)返回一个大于等于0而小于1之间的随机整数,它

的返回类型为Single类型;

(如果要产生[a,b]之间的随机整数,可以使用以下变换:Int((b-a+1)*

Rnd(l))+1)例如:

产生[1,10]之间的随机数:Int(10*Rnd(l))+1

产生[11,99]之间的随机数:Int(89*Rnd(l))+ll

产生[-20,20]之间的随机数:Int(41*Rnd(l))-20

Str(x):x为数值型表达式,Str(x)的功能为把数值表达式x转换

为相应的字符串;

(Str函数与CStr函数的区别是:当x>0时,Str的返回值有前导空

格(符号位),而CStr无前导空格)

例如:

Str(-3.14)的返回值为II-3.14II;

CStr(-3.14)的返回值也为II-3.14II;

Str(3.14)的返回值为II3.14II,一共5个字符,有一个前导空格;CStr(3.14)的返回

值为II3.1411,一共4个字符,无前导空格;

Vai(Str):Str为字符串表达式,Vai(Str)的功能为把将字符串Str

转换为数值型数据从左到右转换,直到遇到字符串中的非数字字符为止;

例如:

Val(“12345abcd")的返回值为十进制数12345;

Val("-123.4e-2")的返回值为十进制数-L234;

16

Val("&HFFFF")的返回值为十进制数T;

Val("&0177777”)的返回值为十进制数T。

Chr(x):x为数值型表达式,Chr(x)的功能为把数值表达式x作为字符编码,转换为仅

含有一个符号的字符串;

例如:

Chr(65)的返回值为IIAII;

Chr(97)的返回值为IIaII;

Chr(13)的返回值为II回车符II。

Asc(Str):Str为字符串表达式,Asc(Str)的功能与Chr(x)函数正好相反,它是将Str

的首字符转换为十进制数值;

例如:

Asc("Hello")的返回值为十进制数72(H的Ascii的值为72);Asc(“?abcd")的返

回值为十进制数63(?的Ascii的值为63);Asc("-3.14")的返回值为十进制数45

(-的AscH的值为45)。

Format(Exp[,format]):Exp可以是日期、时间、数字、字符串等任意类型的表达

式;Format参数是格式控制字符串,它指定输出格式。Format函数的功能为:首先将Exp

表达式变换成字符串

类型,然后按参数format指定的格式输出Exp表达式的值,函数的返回值是字符串类

型;P63(注意:其格式)

Len(str):str为字符串表达式,Len(str)函数返回str的字符个数(字符串的长

度);

17

例如:

Len("VisualBasic")的返回值为11;

Len("VisualBasic")的返回值为12;

LCase(str)>UCase(str):str为字符串表达式,LCase(str)函数的功能是将str中所

有字母转变为小写字母;UCase(str))函数的功能是将str中所有字母转变为大写字母;

例如:

LCase("VisualBasic")的返回值为IIvisualbasicII;

UCase("VisualBasic")的返回值为IIVISUALBSICII;

LTrim(str),RTrim(str),Trim(str):str为字符串表达式,3个函数的功能分别

为:将str字符串左边、右边、或者两边的空格删除;

注意:3个函数都不会对字符之间的空格进行任何操作

例如:

LTrim(uVisualBasic")的返回值为IIVisualBasicII;RTrim(uVisual

Basic")的返回值为IIVisualBasic||;Trim(uVisualBasic")的返回值

为IIVisualBasicII。

Left(str,n),Right(str,n):str为字符串表达式,这两个函数的功能都是取字符

串。Left(str,n)函数是取字符串str最左边n个字符;Right(str,n)函数是取字符串

str最右边n个字符;当n大于str的长度时,返回整个字符串;

例如:

18

Left("VisualBasicn,6)的返回值为IIVisualII;

Right(uVisualBasic”,5)的返回值为IIBasicII;

Left("VisualBasic",20)的返回值为||VisualBasicII。

Mid(str,m,[n]):str为字符串表达式,Mid(str,m,[n])函数的功能是取子字符串。函

数返回从字符串str中第m个字符开始的n个字符;若n省略,函数返回从字符串str中

的第m个字符开始的所有字符;若m大于字符串str的长度,则返回空串;

例如:

Mid("VisualBasic”,7,3)的返回值为IIBasII;

Mid(uVisualBasic",7)的返回值为IIBasicII;

Mid(uVisualBasicw,30)的返回值为IIII;

另外,Mid函数还有另外一种用法:MicKstrl,m,[n])=str2的含义是将字符串strl第m

个字符开始的n的字符用字符串str2替换。P68

Space(n):n为非负整数,Space(n)函数返回—个由空格组成的字符串;

例如:

Space(5)的回值为IIII(包含5个空格的字符串)

String(n,str):n为非负整数,str为字符串表达式,String(n,str)函数返回一•"1、由

n个字符组成的字符串,这个字符串为Str的首字符;

例如:

19

String(6,w*")的返回值为II******||;

String(8,“VisualBasic”)的返回值为IIVVVVVVVV||;

LBound(ArrayName

[,Dimension]):

LBound(ArrayName[,Dimension])函数返回数组名为ArrayName的第Dimension维下标

的下界,如果省略Dimension参数,则函数返回第一维下标的下界;

UBound(ArrayName[,Dimension])函数返回数组名为ArrayName的第Dimension维下标

的上界,如果省略Dimension参数,则函数返回第一维下标的上界;

Array(ArgList):

Array函数定义一个一维变体类型的数组,其参数列表ArgList中逗号分隔的多个值就是

该数组元素的值。数组下界从0开始,不受OptionBase1|。的影响。如果ArgList省

略,则定义一个无元素的数组;

例如:

DimVntaAsVariant

Vanta=Array(—RedII,IIYelloII,||Blue||,IIGreenII,||BlackII)

PrintVanta(2)=输出||BlueII

PrintVanta(5)=下标越界

20[,Dimension])和UBound(ArrayName

Date和Time

这两个函数没有参数,Date函数用来返回计算机系统当前日期;Time函数用来返回计算

机系统当前时间。另外,可以用Date和Time重新设置计算机系统的日期和时间。

例如:

Date:返回值是计算机系统当前日期;

Time:返回值是计算机系统当前时间;

Date=#2/14/2003:把系统日期设置为2003年2月14日;Time=#5:58:00PM#:把系

统时间设置为下午5点58分。Now

这个函数没有参数,Now函数用来返回计算机系统当前日期和时间;

Year(dtm)、Month(dtm),Day(dtm)、WeekDay(dtm)

Year函数返回给定日期dtm的年;

Month函数返回给定日期dtm的月;

Day函数返回给定日期dtm的天;

Month函数返回给定日期dtm的星期;若返回值为1,则表示星期天;返回值为2,表示星

期一;以此类推,返回值为7表示星期六;

例如:

Year(-2003/8/26II)的返回值为2003;

Month(-2003/8/26II)的返回值为8;

21

Day(-2003/8/26II)的返回值为26;

WeekDay(—2003/8/26II)的返回值为3,表示星期二;Hour(dtm)、Minute(dtm)>

Second(dtm)

Hour函数返回给定时间dtm的时;

Minute函数返回给定时间dtm的分;

Second(函数返回给定时间dtm的秒;

例如:

Hour(-pm09:30:28II)的返回值为21;

Minute(-pm09:30:28II)的返回值为30;

Second(-pm09:30:28II)的返回值为28;

使用转换函数的示例

PrivateSubForm_Click()

x二〃123〃

y二123

a=Chr(Asc(x)+5)

b=Str(Vai(x)+5)

c=Vai(Str(y)+〃5〃)

Printa,b,c

EndSub

运行程序后单击窗体,输出结果如下:6“128”1235

22

HE(bln,TruePart,FalsePart)函数

Bln是逻辑表达式,HF函数的功能是:bln的值为True时,,函数返回值取TruePart;

bln的值为False时,函数返回值取FalsePart;例如:

Intvar1=80:intvar2=50

IFF(intvarl>=intvar2,intvarl,intvar2)=返回值为80

Choose(expn,expl[,exp2,exp3…])函数

expn为整形表达式。Choose为多项选择函数,当表达式expn的值为1时,,函数返回expl

的值;

当表达式expn的值为2时,函数返回exp2的值;

…以此类推。若表达式expn的值小于1或大于可选项时,函数返回NULLo

Switch(expl,valuel[,exp2,value2,••,])函数

exp是条件,value是要取的值,exp和value必须成对出现。Switch函数是多条件分支

函数,若expl为True,则函数返回valuel的值;若exp2为True,则函数返回value2

的值;以此类推,若所有的表达式都不为True,则函数返回NULL。

Shell()函数

在VB中,可以通过Shell()函数调用各种应用程序。PathName为字符串型表达式,使

用双引号扩起来的应用程序名及其路径。WindowStyle为整形表达式,表示执行应用程序

的窗口风格,取0到6的整形数值。

23

例:在VB程序中启动Excel

Shell('C:\ProgramFiles\MicrosoftOffice\excel.exe")

说明:函数一般不能独立成行,Shell函数是特例。Beep语句

Beep语句是报警语句,每执行一次,它使计算机发出“嘟”的一声响;

输入框函数InputBox()

输入框具有标题栏、提示信息、•个文本框、两个按钮(确定按钮和取消按钮),如下图

所示:strvar=InputBox(一请输入项目号II项目概况II)

函数格式:

InputBox(prompt[,title][,default][,xpos,ypos][,helpfile,context])

参数说明:

Prompt:为输入框上出现的字符串,必选。可换行,例:

InputBox(一项目号不能省略II+Chr(13)+Chr(10)+—请输入项目号II,一项目概况

")Title:输入框标题栏中的字符串。

Default:显示文本框中的字符串,省略则文本框为空。

Xpos.Ypos:N型达式现,指定对话框在屏幕上的位置。

Helpfile:字符串表达式,识别帮助文件,用该文件为

对话框提供上下文相关的帮助。

context:Context可选的。数值表达式,帮助文件的某

个帮助主题的帮助上下文编号。与helpfile成

对出现。

执行过程:

当程序执行到InputBox()函数时,显示输入框并且等待用户在文本框中输入信息,如果

用户输入信息并单击[确定]按钮,WJInputBox()函数以字符串形式接受文本框的内容并

返回;

如果单击[取消]按钮,则InputBox()函数返回空串。

消息框函数MsgBox()

消息框具有标题栏、一条消息、一个图标、最多三个按钮。如下图所示:

24

MsgBox(一是否继续执行||,32,一提示II)

函数格式:P75

MsgBox(prompt[,buttons][,title][,helpfile,context])

参数说明:P75-77

MsgBox函数只有一个参数prompt时可独立成行。

例:

MsgBox("数据出错”)

执行过程:

消息框函数MsgBox()主要用于向用户显示信息,然后等待用户进行选择。当程序执行到

消息框函数时,显示消息框并且等待用户响应,当用户选择所需的按钮后,消息框函数

MsgBox()返回一个整数值。

课后习题:P78

第4章控制结构与算法

(程序填空、编程)

一.顺序结构(了解)

顺序结构是按照一从上到下II的顺序依次执行各语句的,在其结构中用到的典型语句是:

赋值语句和输入输出语句。

例4.1

ax2+bx+c=0的实根。

25

PrivateSubcmdRoot_Click()

DimaAsSingle,bAsSingle,cAsSingleDimDAsSingle

DimxlAsSingle,x2AsSinglea=Textl.Text

b=Text2.Text

c=Text3.Text

D=b*b-4*a*c

xl=(-b+Sqr(D))/(2*a)x2=(-b-Sqr(D))/(2*a)

Label4.Caption="xl="+Str(xl)

Label5.Caption="x2="+Str(x2)EndSub

26

格式

变量名=表达式

赋值含义:将值送到变量的存储单元中去

注意:数据类型匹配的问题

输入语句

通过文本框和InputBox函数获得输入数据。

例如:

a=textl.text

x=InputBox(一输入x:II)

注意:

由文本框或InputBox函数输入的数据默认为字符型,必要时需引用Vai函数转换成数值

型。输出语句

1)过文本框、标签和MsgBox函数显示计算结果。

例如:

Label.caption=12

Textl.text=123

MsgBox(一数据出错||)

2)Print方法

是常用的一种输出程序运行结果的语句。

格式:

对象名.Print〈输出项表》

注意:

对象可以是窗体、图片框、打印机或立即窗口。如果省略了一对象名II,则在当前窗

体上

打印输出。

一输出项II可以是常数、表达式或空。若是常数,则直接输出;若是表达式,则输出

表达

式的值。

Print中多个输出项间分隔符:

逗号:以标准格式用来分隔各输出项,即每个输出项的宽度占18个字符位置,每行分成

四个区。

分号:以紧凑格式用来分隔各输出项,输出的字符之间留一个空格位,输出的数值之间除

留一个空格位外还留一个符号位。

调用Print方法的语句中,若最后一个输出项的后面有逗号或分号,则下一次执行

Print

方法时,输出的内容与之同行;否则,将换行显示。

可以用?代替Print。

输出格式控制函数

Format函数P87

格式:Format(〈表达式>,[一格式字符串II])

功能:以一格式字符串II指定的格式返回一表达式II的值。如果没有指定格式,则返回字

符串。

二.选择结构程序设计(了解)

三.循环结构设计(重点掌握)

VB提供的循环语句有

27

Do...Loop

For...Next

While...Wend

ForEach...Next

最常用的是For...Next和Do...Loop语句

For...Next循环主要是用在知道循环次数的情况下,若事先不知道循环次数,可以使用当

型循环Do...Loop;

Do...Loop两种格式:前测型循环结构和后测型循环结构。两者区别在于判断条件的先后

次序不同;

格式:

Do[While|Until条件]

循环体

Loop

功能:

Do...Loop:无条件的执行循环体(绝对循环)

DoWhile...Loop(当型循环):当条件成立(为真)时,执行循环体;当条件不成立(为假

时),终止循环

DoUntil...Loop(直到型循环):当条件不成立(为假)时,执行循环体,直到条件成立

(为真)时,终止循环

222例1:求S=1+2+…+100

采用DoWhile...Loop语句

采用Print直接在窗体上输出结果,程序代码:

PrivateSubFormLoad()

DimnAsInteger,sAsLong

Show

n=1:s=0

DoWhilen<=100

s=s+n*n

n=n+1

Loop

Print"s"〃;s

EndSub

程序运行结果:S=338350

例2:用n/4=l-1/3+1/5-1/7+,,,,级数,求冗的近似值。当最后一项的绝对值

小于10-5时,停止计算

采用Print直接在窗体上输出结果,程序代码:

PrivateSubForm_Load()

Show

DimpiAsSingle,nAsLong,sAsInteger

pi=0:n=l:s=l

DoWhilen<=100000'或l/n>=0.0000128

pi=pi+s/n

s=-s

n=n+2

Loop

Print〃n=〃;pi*4

EndSub

=3.141575

格式:

Do

循环体

Loop[WhileUntil条件]

功能:先执行循环体,然后判断条件,根据条件决定是否继续执行循环

注意,本语句执行循环的最少次数为1,而前测型Do...Loop语句的最少次数为0(即一次

都不执行循环)

例1:输入两个正整数,求它们的最大公约数

一辗转相除法II算法:求出m/n余数p,若p=0,n即为最大公约数;若p非0,则把原

来的分母n作为新的分子m,把余数p作为新的分母n继续求解

设计步骤如下:

(1)创建应用程序的用户界面和设置对象属性

编写的一计算||按钮Click事件过程代码如下:

PrivateSubCommandl_Click()

DimmAsInteger,nAsInteger,pAsInteger

m=Vai(Textl.Text):n=Vai(Text2.Text)

Ifm<=0Orn<=0Then

MsgBox(〃数据错误!〃)

End

EndIf

Do

29

p=mModn

m=n

n二p

LoopWhilep<>0

Text3.Text=m

EndSub

的值为85和68,则运行结果如上图

格式:

For循环变量=初值To终值[Step步长值]

循环体

Next循环变量

功能:本语句指定循环变量取一系列数值,并且对循环变量的每一个值把循环体执行一

次;初值、终值和步长值都是数值表达式,步长值可以是正数(称为递增循环),也可以

是负数(称为递减循环)

若步长值为1,则Step1可以省略

For...Next语句的执行过程

(1)求出初值、终值和步长值,并保存起来

(2)将初值赋给循环变量

(3)判断循环变量值是否超过终值(步长值为正时,指大于终值;步长值为负时,指小于终

值)。超过终值时,退出循环,执行Next之后的语句

(4)执行循环体

(5)遇到Next语句时,修改循环变量值,即把循环变量的当前值加上步长值再赋给循环变

后一

(6)转到(3)去判断循环条件

例1:在窗体上显示2至10各偶数的平方数

采用Print直接在窗体上输出结果,程序代码:

PrivateSubForm_Load()

DimkAsInteger

Show

Fork=2To10Step2

Printk*k

Nextk

EndSub

程序运行结果:

4

16

36

64

100

例2:求S=1+2+3+・・・+8

采用Print直接在窗体上输出结果,程序代码:

PrivateSubForm_Load()

Show

s二0

30

Fork=1To8

s=s+k

Nextk

Printzs-s

EndSub

程序运行结果如下:

s=36

例3:求T=8!=1X2X3X-X8

采用Print直接在窗体上输出结果,程序代码:

PrivateSubFormLoad()

Show

t二1

Forc=1To8

t=t*c

Nextc

Print〃T=〃;t

EndSub

程序运行结果是:

T=40320

语句t=t*c也称乘法器。先将t置1(不能置0)o

在循环程序中,常用累加器和累乘器来完成各种计算任务

例4:用冗/4=1-1/3+1/5-1/7+……级数求冗的近似值(取前5000项来进行计

算)采用Print直接在窗体上输出结果,程序代码如下:

PrivateSubForm_Load()

Show

DimpiAsSingle,cAsInteger,sAsInteger

pi=0

S=1'S表示加或减运算

Forc=1To10000Step2

pi=pi+s/c

s=-s'交替改变加、减号

Nextc

Print”冗二〃;pi*4

EndSub

程序运行结果是:

兀=3.141397

例5:用100元买100只鸡,母鸡3元1只,小鸡1元3只,问各应买多少只?下面采

用一穷举法II来解此题。

其做法是:从所有可能解中,逐个进行试验,若满足条件,就得到一个解,否则不是。直

到条件满足或判别出无解为止。

令母鸡为x只,小鸡为y只,根据题意可知

y=100-x

31

3x+y/3=100

开始先让x初值为1,以后逐次加1,求x为何值时,条件3x+y/3=100成立。如果当x达

到33时还不能使条件成立,则可以断定此题无解

采用Print直接在窗体上输出结果,程序代码:

PrivateSubForm_Load()

DimxAsInteger,yAsInteger

Show

Forx=1To33

y=100-x

If3*x+y/3=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论