null第2章 VB编程入门第2章 VB编程入门Visual Basic 程序
教程null本章将介绍有关VB程序的构成和数据类型以及变量的定义和使用、
达式以及基本的输入输出操作。这些知识是编程的基础。我们将通过简单示例的
,帮助理解如何进行VB编程。null本章
:
确定数据的性质:数据类型
两种数据表达:常量和变量
算术运算符和表达式
VB编程的开始:使用窗体
赋值和输入输出null 所谓编程就是针对要解决的任务,设计解决问
的步骤,使用计算机程序设计语言进行描述,最后通过编码、测试、修改等过程实现编程的目的。
编程有两个方面的要求:
一 需要理解编程的任务并给出算法
二 要使用特定的计算机语言具体地表示这些算法。 2.1 概 述null
1.加法器界面设计2.2 一个简单的加法器程序null
2.编写程序代码nullPrivate Sub CmdAdd_Click() ‘计算”按钮代码
Dim Temp As Long
TxtNum1.Text = ""
TxtNum2.Text = ""
TxtSum.Text = ""
TxtNum1.Text = InputBox ("请输入第一个数")
TxtNum2.Text = InputBox("请输入第二个数")
Temp = Val(TxtNum1) + Val(TxtNum2)
TxtSum.Text = Temp
End Sub
Private Sub CmdExit_Click() “退出”按钮代码
FrmAdder1.Hide
MsgBox ("加法器程序运行结束,谢谢使用")
End
End Subnull 数据是程序处理的对象。为了更好地处理各种各样的数据,VB定义了多种数据类型,数据类型定义了值的范围并确定了它能够进行的操作。nullnull 1. 字节型(Byte) 字节型数可以表示无符号的整数,0~255 2. 整型(Integer)和长整型(Long) 不带小数部分的数,表示正整数、负整数和零 整型数:
-32768~32767 98、98% 长整型数:
-2147483648~2147483647 45678、45678& null 3. 单精度型(Single)和双精度型(Double) 浮点数。表示带有小数部分的数 表示数的范围大,但有误差。 如超出某个表示范围,则用科学记数法 例如:4.53E8(4.53×108),8.173E-14,3.14D23 Single保留7位十进制有效位,Double保留15位
4. 货币型(Currency) 专门为处理货币而设计的数据类型 它可最多保留小数点右边4位和小数点左边15位null字符型(String) 用双引号括起来的一串字符。
例如Canton”、”1+2=?”、”Good Morning”等 “″”称为起止界限符。 字符串长度。分变长字符串(长度不固定)和定长字符串(长度固定) 在VB中,把汉字作为一个字符来处理。 例如:“浙江大学 浙江杭州 中国” 该字符串长度为12,含空格 null逻辑型(Boolean) 逻辑型又称布尔型,其数据只有True(真)和False(假)两个值逻辑值和数值类型进行转换的时候,它们是非对称的: (1)数值数据转换为布尔值时,0对应False,非0对应为True (2)布尔值转换为数值数据时,False对应0,True对应为 -1。null日期型(Date) 表示日期和时间 用两个“#”符号把日期和时间的值括起来 如:#08/20/2001#、#2001-08-20# #12/12/2005 11:35:35 PM#null变体型(Variant) 变体型数据是一种可变的数据类型,可以存放任何类型的数据 当指定变量为Variant变量时,VB会自动完成必要的转换 null在程序中不特别说明时,VB会自动将该变量默认为Variant型变量。 例:Temp=“22” ’字符串 Temp=22 ’数值 Temp=#01/01/2002# ’日期
对象引用型型(Object) 对象引用型型数据可用来表示应用程序中的对象null VB为用户了提供自定义数据类型,以满足用户的需求。实际上自定义数据只是把VB已有的数据类型重新组合或者构造为一个新类型。例如我们要给员工设计一个工资数据类型,
这个类型中有姓名、工号和工资数,可以使用以下方法定义: Type Pay 姓名 As String*8 工号 As Long 工资 As Single End TypenullVisual Basic 6.0的常用数据类型2.3确定数据的性质:数据类型nullVisual Basic 6.0的其他数据类型null说明: (1) 不同类型的数据,所占的存储空间不一样。 (2) 数据的类型可在数据之后加上一个类型符来表示,例如,413&,86!,104.67#等。 null2.4.1 常量 在程序运行期间其值始终保持不变的量 两种形式的常量:文字常量和符号常量 文字常量又分为数值常量、字符串、逻辑值和日期等 1.数值常量 例如2,35.567,它们直接出现在程序中。 null 2.字符串常量 它是用双引号括起来的各种有效字符串组成的,如“123“,“AbcD“,“程序设计“等。字符串可以为空。 字符串常量的长度为两个引号之间所有的字符数,包括空格。VB规定定长字符串最大长度为32767。 null3.逻辑常量 就是逻辑值,True和False。 4.日期常量 表示日期和时间的常量,
例如:#12-12-2005# 2.4.2 符号常量
符号常量是在程序中用符号表示的常量。符号常量定义一个符号(字符串)代表一个文字常量
格式:
[Public|Private] Const常量名 [As 数据类型]=表达式
例如:Const PI=3.14159 As Single
使用符号常量主要是为提高程序的可读性。另外,如果需要进行常数的调整,只需要在定义的地方一次性修改就可以了。 2.4.2 符号常量
符号常量是在程序中用符号表示的常量。符号常量定义一个符号(字符串)代表一个文字常量
格式:
[Public|Private] Const常量名 [As 数据类型]=表达式
例如:Const PI=3.14159 As Single
使用符号常量主要是为提高程序的可读性。另外,如果需要进行常数的调整,只需要在定义的地方一次性修改就可以了。 2.4.3 变量和声明变量
1.变量是什么
变量是在程序运行期间其值可以发生变化的量。
在程序运行时,数据是存放在内存中的。因此变量就是指示程序将到哪个内存单元去存取数据,即变量与内存单元有关。使用变量名标识不同的变量,同时要给出变量数据的类型。因此,VB变量由数据类型和变量名组成。
程序中选择使用常量还是变量,是根据它们是否需要变化而决定的。2.4.3 变量和声明变量
1.变量是什么
变量是在程序运行期间其值可以发生变化的量。
在程序运行时,数据是存放在内存中的。因此变量就是指示程序将到哪个内存单元去存取数据,即变量与内存单元有关。使用变量名标识不同的变量,同时要给出变量数据的类型。因此,VB变量由数据类型和变量名组成。
程序中选择使用常量还是变量,是根据它们是否需要变化而决定的。2.VB变量的特点
(1)可变性。向变量存数据,会改变变量原来的值。
(2)从变量中取数据,变量中原来的值不会改变,因此在程序中,一个变量的值可以被反复取用而不会导致数据的改变,“取之不尽”。这是变量的可复制性。
(3) 变量的取值和它的类型有关,但VB能够进行自动转换。 2.VB变量的特点
(1)可变性。向变量存数据,会改变变量原来的值。
(2)从变量中取数据,变量中原来的值不会改变,因此在程序中,一个变量的值可以被反复取用而不会导致数据的改变,“取之不尽”。这是变量的可复制性。
(3) 变量的取值和它的类型有关,但VB能够进行自动转换。 3.给VB变量命名
应遵守一些规则:
(1)变量名必须以字母开头;
(2)只能由字母、数字和下划线组成。不能含有小数点、空格等字符;
(3)字符个数不得超过255个;
3.给VB变量命名
应遵守一些规则:
(1)变量名必须以字母开头;
(2)只能由字母、数字和下划线组成。不能含有小数点、空格等字符;
(3)字符个数不得超过255个;
(4)不能使用VB的关键字(如语句名、函数名等)。例如,Print、Sub、End等
(5)变量名在一个程序区域内不能同名。
(6) 不区分变量名中字母的大小写,一般情况下变量的第一个字母以大写表示。变量取名应使用能够望名知义的单词或者缩写等,提高程序的可读性。 (4)不能使用VB的关键字(如语句名、函数名等)。例如,Print、Sub、End等
(5)变量名在一个程序区域内不能同名。
(6) 不区分变量名中字母的大小写,一般情况下变量的第一个字母以大写表示。变量取名应使用能够望名知义的单词或者缩写等,提高程序的可读性。null4. 变量的声明
变量的声明就是向程序说明要使用的变量。
有以下2种方法(显式声明与隐式声明)
(1) 声明变量(显式声明) 用Dim、Public、Private或Static语句来声明变量
例如:Dim sum As Integer ′把sum定义为整型变量
null (2)隐式声明 不加说明就直接使用变量,此时默认的变量类型为变体类型(Variant)
也允许使用类型符来声明变量的类型,如Num%,Sum!
(3)定义多个变量
null2.4.4 强制要求必须声明变量:Option Explicit
Option Explicit
一般情况下,该语句放置在程序模块的外部开始部分,强制要求所有变量必须显式声明后才能使用。
Option Explicit
Private Sub CmdAdd_Click()
……
End Subnull2.4.5 VB的关键字
VB有许多关键字,也叫做保留字,它们为VB系统本身所用,具有特定的含义。这些已经被VB使用了的单词或者缩写就是“关键字”。关键字不能被使用作为用户定义的变量名,也不能被编程者重新定义使用。
如我们已知的:As,Dim,Private,Sub,End,Integer,Long,String,Option Explicit,Date,Const,……等等。 nullVB有五类表达式:算术表达式、字符串表达式、日期表达式、关系表达式和逻辑表达式算术运算符 null1.除法
计算机使用 “/”和“ \”代表数学中的除号。“/”用于浮点数除,它将产生一个有小数部分的商。而“\”则是整数除法,它在进行除之前先将运算数四舍五入,结果为丢掉小数部分取其整数部分。注意下面的几个例子:
3/2 结果为1.5
3\2 结果为1
3.5\2 结果为2null2.取模运算Mod
取模运算是取整除后余数的整数部分。VB支持整数和带小数的数的取模运算。如果是带小数的,则在运算前进行四舍五入操作。注意下面的例子:
13 Mod 3 结果为1,即余数为1
3.5 Mod 2 结果为0。先将3.5四舍五入为4,除2的余数为0
7 Mod 2.6 结果为1
5 Mod 0.49 除数为0错误(如果你把0.49改为0.5和0.51,试试看会发生什么?)null2.5.2 算术表达式
算术表达式也称数值表达式,是用算术运算符把数值型常量、变量、函数连接起来的式子。
表达式的运算结果是一个数值
例如:(A1+B1/3-X\0.5)*Sin(X) null2.5.3 算术运算符的优先规则
运算符优先级 ^(乘方) → -(求负) → */ → \ → Mod →+- 同级左到右null说明:(1)/和\的区别:1/2=0.5,1\2=0 (2)Mod用来求整型数除法的余数。
例如:9 Mod 7 结果为 2 (3)在表达式中乘号不能省略,如a*b不能写成ab(或a·b) (4)括号不分大、中、小,一律采用圆括号。可以嵌套使用
例如,x[x(x+1)+1] → x*(x*(x+1)+1)null窗体是我们进入VB编程所遇到的第一个对象,它是进行程序界面设计的基础平台。在程序运行时它就是程序的实际窗口。
使用窗体的“属性”定义窗体的外观
使用窗体的“方法”定义窗体的行为
使用窗体的“事件”定义与用户之间的交互
因此了解窗体(包括后续的控件等对象),就是围绕它的属性、方法和事件展开。这也是学习VB对象编程的主要思路。2.6 VB编程的开始:使用窗体null2.6.1 一个使用窗体显示文本的例子null 窗体的绝大多数属性可以在属性窗口中设置,也可以在程序代码中设置,在程序中输入窗体对象名称和“.”分割后会自动跳出窗体的属性和方法,在这里可以区分属性和方法。2.6.2 窗体的属性null窗体的常用属性 nullnullnullnull2.6.3 窗体的方法
窗体方法就是对窗体的操作行为。
方法使用格式为:
Object.方法名 [可选参数]
Object为窗体对象的名称(Name),如果在当前活动窗体,可省略Object或者用关键字Me。null1.显示窗体方法(Show)
功能:显示窗体对象。Show方法的使用格式为:
Object.Show [Style]
使用Show方法如果没有指定窗体名称,则默认当前活动窗体。参数Style是一个整数,决定窗体的模式,取值0为无模式,1为有模式null2.隐藏窗体方法(Hide)
功能:隐藏窗体。注意这只是不显示窗体而不是卸载。要再次显示窗体,使用Show方法即可。Hide方法的格式为:
Object.Hide
如果Object没有被指定,则当前活动窗体被隐藏。null3.移动窗体方法(Move)
Move方法可以移动或者改变窗体的大小。使用格式为:
[Object].Move Left ,[Top],[Width],[Height]
其中,Left是必选参数,Top是可选参数,分别代表窗体的x,y方向的坐标。Width和Height为窗体移动到新位置后的高度和宽度。坐标参数的单位默认为缇(Twip,1/1440英寸)。可在窗体属性ScaleMode中选择参数单位。null4.清除窗体方法(Cls)
Cls(Clear Screen)是清除窗体上的显示的文本和图形。如Me.Cls为清除当前窗体的显示。
5.打印方法(Print)
Print是在窗体上输出文本。
6.打印窗体方法(PrintForm)
把整个窗体作为位图图像输出到打印机。该方法使用的格式为:Object.PrintForm。null2.6.4 窗体识别的动作:事件
在窗体中使用某种事件触发一个过程,以便完成某个任务,因此我们也叫它为事件过程。
例如:Private Sub Form_Load()
……
End Sub
null 这里程序就是窗体的装载事件过程,称为Load过程,Load就是窗体的一个事件。
窗体事件过程的一般格式为:
Private Sub Form_事件名(参数表)
…… ‘我们在这里编写处理事件的程序代码
End Sub null窗体常用事件:
1.装载事件(Load)
程序运行时,通过Load事件把窗体装载到内存。
2. 卸载事件(Unload)
窗体卸载时触发Unload事件,使窗体从内存中退出并从屏幕 上消失。
Private Sub Form_Unload (Cancel As Integer)null3. 活动/非活动事件(Activate/Deactivate)
Private Sub Form_Activate()
Private Sub Form_Deactivate()
使用Show可触发这个活动过程,使用Hide触发非活动过程。null4. 重绘窗体事件(Paint/Resize)
当窗体被移动或者改变大小时,触发Paint事件。如果在窗体上有图形输出,则可以使用Paint事件过程重绘图形。
窗体改变了大小,原来窗体上的控件的布局比例发生了改变,为此可以进入Resize事件过程重新调整控件的布局,使之适合新的窗体大小。 null2.6.6 Tab键和焦点
焦点——对象的活动状态。
改变对象焦点的方法:
1.使用鼠标点击或者使用Tab键
使用Tab键焦点的移动次序与对象的Tabindex属性有关。null2.程序中改变
对象. SetFocus
对象. LostFocus
一个对象能否得到焦点还与对象本身、对象的其他属性(Enabled)有关。null计算机的工作原理:
数据输入→处理机(程序)→信息输出
在构造一个程序时必须考虑:如何给变量赋值,如何输入数据并如何把有关计算结果输出。
赋值就是把一个合适的值(数或字符)存入指定的变量中,而值的来源可以是程序直接产生,也可以是从键盘输入,也可以来自其他程序的传送或来自于文件。null2.7.1 如何进行赋值操作
赋值语句的格式如下:
[Let] 变量名 = 表达式
或者:
变量名 = 表达式
例如:Sum = 100
x = x + 1
CmdAdd.Caption = “计算”null使用赋值语句要注意以下问题:
1.“=”不是数学中的等号的意思,是一个赋值的运算符,叫做赋值号。
2.对变量的赋值后,以新值代替了原来的值。
3.在表达式中的变量应先赋值。如果是首次直接被用在表达式中,则VB自动赋初值:
(1)如果是数值型变量,则自动赋初值为0。
(2)字符型变量的初值为空。null 4.同一个变量出现在赋值号的两边的意义不同。在右边的变量是取出变量的值参与运算,在左边则是保存右边表达式结果值。
5.一般要求变量的数据类型和表达式的结果值的类型一致,或者说表达式的值能够被所赋值的变量的类型所接纳。null【例2-3】计算半径为5的圆面积和圆周长。
Private Sub Form_Click()
Const PI = 3.141526 '定义常量π
Dim R As integer, Area As Single, Perimeter As Single '定义变量
R = 5 '给半径变量赋值
Area = PI * R * R '计算后的面积值赋给变量Area
Perimeter = 2 * PI * R '周长值赋给变量Parimeter
Print “半径=”;R,”面积”;Area,”周长”;Perimeter '输出半径、面积。周长
End Sub null2.7.2 使用输入对话框InputBox函数
【例2-4】计算半径为R的圆面积和周长,半径值由键盘输入。
Private Sub Form_Click()
Const PI = 3.141526
Dim R As Integer, Area As Single, Perimeter As Single
R = Val(InputBox("请输入圆的半径:", "输入"))
Area = PI * R * R
Perimeter = 2 * PI * R
Print " 半径="; R, "面积"; Area, "周长"; Perimeter
End Sub
这个例子中使用了InputBox函数产生输入对话框。 null1.输入对话框的使用
InputBox函数的使用格式如下:
InputBox(提示[,标题][,默认值][,xpos][,ypox])
它们的含义如下:
(1)提示信息。这是InputBox对话框所必须的信息,也可以使用空文本,即“”。
(2)标题。这是在对话框窗口标题栏显示的内容。可设置,也可以没有标题。null(3)默认值。在输入框中的默认输入。系统默认为空,可选。
(4)xpos和ypos为对话框的左侧与屏幕左边的距离和上边与屏幕顶部的距离值。可选。 null2.在提示中使用多行文本
如果提示信息比较多,可以使用ASCII控制符回车Chr(13)和换行符Chr(10)产生另起一行。
例如:提示信息为“请输入圆的半径” + Chr(13)+ Chr(10)+“使用正整数” , 产生如图效果null3.使用转换函数
InputBox函数接受的是文本,也就是字符型数据,在程序中根据变量类型不同,可以使用转换函数。如:
R = Val(InputBox("请输入圆的半径:", "输入"))
这里的Val就是转换函数,将文本类型的数据转换为整型数以便参加运算。
VB提供了在不同类型数据之间的转换。 null2.7.3 使用Print方法输出数据
使用Print在对象中显示(打印)输出文本。
使用格式如下:
[对象名].Print [表达式] [,表达式]……
1.对象名
一般情况下,Print输出到窗体或者图片框。在本窗体中输出,可以缺省对象名。null2.表达式
Print方法支持多个表达式的输出,可输出数字、文字字符、日期、逻辑值等。如果Print后面没有任何表达式,则输出空行(在显示效果上相当于回车换行)。null3.输出格式
多个表达式输出,可以使用分号和逗号分隔。
(1)逗号分隔(标准格式输出)。逗号后的下一个表达式按照14个字符的空间分开显示。实际分隔位置还与所在输出行的宽度和分隔的数目有关。
(2)分号分隔(紧凑格式输出)。后一个表达式的值接着前一个表达式的输出。null(3)在Print语句最后使用逗号或分号结束,不换行,下一个Print接着按格式输出。
(4)使用Spc()和Tab()函数,前者控制插入空格,后者确定列位置 null例:
Private Sub Form_click()
Me.FontSize = 16
Print '空行
Print "A="; 1, "B="; 2
Print 1, 2; 3, 4
Print "A"; Spc(4); "B"
Print Tab(10); "B"
Print "1234567890"
End Subnull 2.7.4 使用消息对话框MsgBox函数
MsgBox函数提供了一个显示应用程序运行信息的标准途径,如图所示:MsgBox的格式如下:
变量名 = MsgBox( 提示
[, 对话框类型] [, 对话框标题] )null(1)使用形式: MsgBox有两种使用形式,注意区分,如:
A = MsgBox("您确定要退出吗?", vbOKCancel + vbDefaultButton2, "退出")和MsgBox "您确定要退出吗?", vbOKCancel + vbDefaultButton2, "退出“
格式1是具有返回值的使用,程序根据用户的不同选择把选择结果赋值给变量A。格式2没有返回值。null(2)提示
必选参数项。如果显示多行,可使用Chr(13)+ Chr(10) 。
(3)对话框标题
在对话框标题栏显示的信息文本。null(4)对话框类型
类型参数由三部分组成,分别确定对话框中的按钮形式、默认的焦点在哪一个按钮上和按钮使用的图标。把按钮形式、焦点选择、图标三组参数中各选一个进行组合,或直接把它们对应的符号常量进行相加确定对话框类型值 nullnullnull(5)返回值
使用一个变量保存MsgBox函数返回值,返回值的符号常量和有关描述如表所示。 nullnull(6)省略参数项
如果只给出提示,系统默认为对话框类型参数值为0,没有对话框标题。如果要省略某一个参数项,需要加上逗号分隔符。例如:A = MsgBox ( “您确定要退出吗?”, , “退出” )null【例2-5】在窗体上设置三个命令按钮,分别为“放大窗口”“缩小窗口”和“结束程序”。点击“放大窗口”“缩小窗口”窗体相应进行放大和缩小操作,并在窗体上显示操作后窗口的宽度和高度,点击“结束程序”则程序结束运行退出。null【例2-6】在窗体上放置一个标签显示文本,单击窗体空白处输入字体和字号使显示的文本随之变化。使用三个命令按钮“隐藏显示”“恢复显示”和“程序结束”。其中“隐藏显示”有效时“恢复显示”处于无效状态,反之亦然。