第2章 Visual Basic 6.0编程基础 (第一部分) 2.1 数据类型 2.2 Visual Basic 6.0中的常量 2.3 Visual Basic 6.0中的变量 2.4 数据输出 2.5 运算符和表达式 2.6
2.1 Visual Basic 6.0代码编写规 Visual Basic 6.0中的语句是执行具体操作的指令,每个语句以Enter键结束。 Visual Basic 6.0会按规则对语句进行简单的格式化处理,例如,方法的首字母大写,运算符前后加空格等。 Visual Basic 6.0程序中最好一行里只写一条语句,如果一条语句太长,需用续行符“_”把一个长语句分成若干行来存放,续行符与它前面的字符之间至少要有一个空格。在Visual Basic 6.0中允许使用复合语句,即如果要把几个语句放在一行中,各语句之间用“:”隔开。
2.1.1 注释语句 在Visual Basic 6.0中,添加注释语句有两种方法,一种是用“Rem”关键字,另一种是利用英文单引号“ ' ”。 格式: Rem 注释内容 ' 注释内容 例如: 'Dim a As String 与 Rem Dim a As String 的作用是一致的。 注释不仅仅是对程序的解释,对于调试程序也非常有用,例如可以利用注释屏蔽一条语句或者打印某个变量值以观察程序的执行情况,帮助我们发现问题和错误。注释语句是编程中应用最多的语句之一。
2.1.1 赋值语句 赋值语句的作用是将指定的值赋给某个变量或某个带有属性的对象,一般格式为: 目标操作符 = 原操作符 2.1.1 赋值语句 赋值语句的作用是将指定的值赋给某个变量或某个带有属性的对象,一般格式为: 目标操作符 = 原操作符 这里的“原操作符”包括变量、表达式、常量及带有属性的对象;而“目标操作符”指的是变量和带有属性的对象;“=”称为“赋值号”,与数学上的等号意义不一样。赋值语句兼有计算与赋值双重功能,它首先计算赋值号右边“原操作符”的值,然后把结果赋给赋值号左边的“目标操作符”。
2.1.3 结束语句 用来终止程序的运行,常用的语句为End。可以把它放在事件过程中。 End Sub 结束一个Sub过程 End Function 结束一个Function过程 End If 结束一个If语句代码块 End Select 结束一个Select条件语句代码块
2.2 数据类型 数据是程序的必要组成部分,也是程序处理的对象。在高级语言中,广泛使用“数据类型”这一基础的概念,数据类型体现了数据结构的特点。
2.3 Visual Basic 6.0中的常量 常量可分为直接常量和符号常量,直接常量以直接的方式给出数据,例如,123,“abc”,ture等;符号常量用Const定义,其定义格式如下: [Public] Const常量名[As类型名]=表达式 其中,说明类型“As类型名”部分是可选的,当省略说明常量类型时,常量的类型由它的值决定。等号后面的表达式必须用常量表达式,不能包含变量。
【案例2-1】 圆周长和面积计算器 Private Sub Command1_Click() '定义变量 Dim R As Double Dim L As Double Dim S As Double '定义常量 Const PI = 3.1416 '读取半径R的值 R = Text1.Text '计算圆周长和面积 L = 2 * PI * R S = PI * R * R '输出圆周长和面积的值图2-2 计算圆周长和面积 Text2.Text = L Text3.Text = S End Sub
2.4 Visual Basic 6.0中的变量 变量是指在程序的运行过程中随时可以发生变化的量,是任何一门高级语言所必须具有的过程中传递的参数。变量有一个名字和特定的数据类型,在内存中占有一定的存储单元。在该存储单元中存放变量值,注意变量名和变量的值是两个不同的概念。
2.4.1 变量命名规则和注意事项 在Visual Basic 6.0中变量的命名是有一定规则的,这些规则指出了用户变量和其他语言要素之间的区别,具体如下。 一个变量名的长度不能超过255个字符。 变量名的第一个字符必须是字母A~Z,第一个字母可以是大写,也可以是小写,其余的字符可以由字母、数字和下划线组成。 Visual Basic 6.0中的保留字不能用做变量名,保留字包括Visual Basic 6.0的属性、事件、方法、过程、函数等系统内部的标识符。
2.4.2 变量的类型和定义 在使用变量之前,很多语言首先需要声明变量。也就是说,必须事先告诉编译器在程序中使用哪些变量、变量的数据类型以及变量的长度。这是因为在编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,这样可以优化程序的执行。
1.用类型说明符标识变量 类型说明符放在变量名的尾部,可以标识不同的变量类型,这些类型说明符分别为: % 整型 & 长整型 ! 单精度符点数 % 整型 & 长整型 ! 单精度符点数 # 双精度符点数 $ 字符串型
2.在定义变量时指定其类型 在定义变量时并指定其类型,可以用下面的格式: Declare 变量名 As 类型名 其中“Declare”可以是Dim,Static,Public或Private;“As”是关键字;“类型名”可以是数据的基本类型或用户定义的类型。
(1)Dim语句 其格式为: Dim<变量名>[As<数据类型>] 用于在标准模块、窗体模块或过程中定义变量或数组。当定义的变量要用于窗体时,代码窗口中的【对象】框应为“通用”,【过程】框应为“声明”。
(2)Private语句 其格式为:Private<变量名>[As<数据类型>] 用于在模块和窗体中声明只在本模块或窗体中起作用的变量。
(3)Public语句 其格式为:Public<变量名>[As<数据类型>] 用于在标准模块中定义全局变量和数组。例如: Public Total As Double
(4)Static语句 其格式为:Static<变量名>[As<数据类型>] 用于在过程中定义静态变量及数组。 前面介绍过可以用Dim语句来声明过程级局部变量,这种局部变量在每次过程调用结束时消失,但是有时用户会希望过程中的某个变量的值一直存在,这就需要用静态变量。静态变量用Static声明 。 声明了静态变量之后,每次过程调用结束时系统就会保存该变量的变量值。在下一次调用该过程时,该变量的值仍然存在。
2.4.3 变量的作用范围 在Visual Basic 6.0中声明变量时,说明部分的放置位置决定了变量只能在程序中的某一部分有效,变量对于程序的可识别程度称为变量的作用范围。 在前面己经讲述过,Visual Basic 6.0应用程序由3种模块组成,即窗体模块、标准模块和类模块。其中窗体模块包括声明过程、通用过程和事件过程;而标准模块由声明部分和通用过程组成。
图2-3 Visual Basic 6.0应用程序的结构
根据变量的定义位置和所使用的变量定义语句的不同,Visual Basic 6 全局变量:在标准模块的声明部分,用Public声明的变量就是全局变量,程序中的任何窗体和模块都能访问它。 局部变量:在过程和函数中用Dim或Static等声明的变量只在定义它的过程和函数中有效。 模块或窗体变量:在模块和窗体中用Dim或Private等声明的变量只在本模块或窗体中起作用,这样的变量叫模块或窗体变量。
2.5 数据输出 Print方法可以在窗体上输出文本或表达式的值,也可以在图形对象上、打印机上输出信息。 Print方法使用的一般格式为: 2.5 数据输出 Print方法可以在窗体上输出文本或表达式的值,也可以在图形对象上、打印机上输出信息。 Print方法使用的一般格式为: [对象名称.] PRINT [表达式,|;表达式…][,|;] 说明: (1)“对象名称”是可选项,可以是窗体(Form)、立即窗口(Debug)、图片框(PictureBox)或打印机(Printer);若省略,则在当前窗体上输出。 (2)“表达式”可以是一个或多个表达式,可以是数值表达式,也可以是字符表达式。对于数值表达式,输出表达式的值;若是字符串则照原样输出;若省略“表达式”,则输出一个空行。
(3)当Print语句输出多项时,各项之间以逗号、分号或空格隔开。 ① 若以逗号隔开,表示是标准格式输出显示数据,即每项占一个标准位(14格)。 ② 若以分号隔开,表示是紧凑格式输出。当输出数值数据时,数值数据之前有一个符号位,数据之后有一个空格位;当输出字符数据时,字符数据紧密连接。 (4)Print语句具有计算、输出双重功能,对于表达式先计算后输出其值。 (5)Print语句末尾标点符号的用法如下。 末尾无标点,语句执行完毕按Enter键换行,下一个Print语句在新的一行上输出。 末尾有逗号,语句执行完毕不按Enter键换行,下一个Print语句在当前行的下一个标准位上输出。 末尾有分号,语句执行完毕不按Enter键换行,下一个Print语句在当前行以紧凑格式输出。
【案例2-2】 数据输出 Private Sub Command1_Click() '定义变量 Dim i As Integer, j As Integer '定义整形变量 Dim S As String '定义变长字符串 Dim S1 As String * 10, S2 As String * 5, S3 As String * 1 '定义定长字符串 i = 2: j = -5 Print "输出数值数据:" '输出字符串常量 Print "i="; i '输出数值数据 Print "j="; j Print "i+j="; i + j '输出计算表达式的值 Print '输出一个空行
S = "abcde" Print "使用分号输出变长字符串数据:" Print S; "ABCDE" '使用分号输出变长字符串变量和字符串常量 Print Print "使用逗号输出变长字符串数据:" Print S, "ABCDE" '使用逗号输出变长字符串变量和字符串常量 S1 = "xyz": S2 = "xyz": S3 = "xyz" Print "使用分号输出定长字符串数据S1,S2,S3:" Print S1; S2; '尾部加分号表示下一个变量输出不换行 Print S3 End Sub
2.6 运算符和表达式 运算(即操作)是对数据的加工。最基本的运算形式常常可以用一些简洁的符号来描述,这些符号称为运算符或操作符,被运算的对象,即数据,称为运算量或操作数。由运算符和运算量组成的表达式描述了对哪些数据以何种顺序进行什么样的操作。运算量可以是常量,也可以是变量,还可以是函数。 Visual Basic 6.0提供了丰富的运算符,它包括算术运算符、关系运算符、逻辑运算符以及字符串连接运算符。它们可以构成多种表达式。
2.6.1 算术运算符
(1)幂运算 幂运算(^)与数学运算中的指数运算类似,用来进行乘方和方根运算。例如,2^8表示2的8次方,即为数学运算中的28。下面是幂运算的几个例子: 10^3 10的立方,即103=1000 81^0.5 81的平方根,即811/2=9 10^-1 10的倒数,即1÷10=0.1
(2)整数除法 整数除法运算符(\)进行整除运算,结果为整型值,因此表达式“5\3”的结果为1。整除的操作数一般为整型数,其取值必须在-217483648.5~2147483647.5范围内。当其操作数为浮点型时,首先四舍五入为整型或长整型,然后进行整除运算。其运算结果被截断为整型数(Integer)或长整型数(Long),不进行舍入处理。 例如: a=5\3 b=21.81\3.4 其运算结果为 a=1,b=7。
(3)取余运算 取余运算符(Mod),又称模运算,用来求余数。其结果为第一个操作数整除第二个操作数所得的余数。例如,5 Mod 3的结果为2,即5整除3,则其余数为2。 同整数的除法运算一样,取余运算符的操作数一般也为整型数,它的取值范围为-217483648.5~2147483647.5。当其操作数为浮点型时,首先四舍五入为整型或长整型,然后进行取余运算,例如,21.81 Mod 3.4的结果为1。
【案例2-3】 多位数分位显示
Private Sub Command1_Click() Dim x As Long, a As Long, b As Long, c As Long, d As Long, _ e As Integer, f As Integer, g As Integer x = Val(Text1.Text) Text2.Text = Str$(x \ 1000000) a = x Mod 1000000 Text3.Text = Str$(a \ 100000) b = a Mod 100000 Text4.Text = Str$(b \ 10000) c = b Mod 10000 Text5.Text = Str$(c \ 1000) d = c Mod 1000 Text6.Text = Str$(d \ 100) e = d Mod 100 Text7.Text = Str$(e \ 10) f = e Mod 10 Text8.Text = Str$(f) End Sub
2.6.2 字符串连接符 字符串表达式是采用连接符将两个字符串常量、字符串变量、字符串函数连接起来的式子。连接符有两个:“&”和“+”。其作用都是将两个字符串连接起来,运算结果是一个字符串。例如: "计算机"&"网络" 结果是:"计算机网络" "123"+"45" 结果是:"12345" "123" &"ABC" 结果是:"123ABC"
2.6.3 关系运算符
2.6.4 逻辑运算符
逻辑运算的运算值
2.6.5 常用内部函数
续表
Len:用来返回字符串的长度(即字符串中字符的个数)。例如,Len("Hello"),Len ("Good")的值分别为5和4。 在Visual Basic 6.0中除了常用的一些字符转换函数和数学函数外,还提供了十分丰富的字符串处理函数。字符串函数是用来对字符串进行处理或操作的函数,主要如下。 Len:用来返回字符串的长度(即字符串中字符的个数)。例如,Len("Hello"),Len ("Good")的值分别为5和4。 Left:从某字符串的左边截取子字符串。其使用格式为:Left(原字符串,截取长度)。该函数有两个参数,第一个是被截取的原字符串,第二个是截取的字符个数。例如,Left("Hello",2)是从字符串“Hello”左边截取两个字符,返回值是“He”。 Right:从字符串的右边截取子字符串,使用方法与Left一样。例如,Right("Hello",2)的值为“lo”。
Mid:从中间截取子字符串,是Left函数和Right函数的综合。该函数的使用格式为:Mid(字符串,启始位置,截取个数)。例如,Mid(“Hello”,3,2),表示从该字符串的第三个字符处截取两个字符,其值为“ll”。 StrReverse:返回与原字符串反向的字符串。例如,StrReverse("Hello")的值为“olleH”。 LTrim:清除字符串左边的空格。例如,LTrim(" Hello")的值为“Hello”。 RTrim:清除字符串右边的空格。例如,LTrim("Hello ")的值为“Hello”。
Trim:清除字符串两边的空格。例如,Trim(" Hello ")的值为“Hello”。 Space:返回一个由指定长度空格组成的字符串。注意该返回值与空字符串("")并不相同,前者是由空格组成的字符串,而后者中不包含任何内容。 String:返回一个由指定字符组成的字符串。例如,String(5,"#")的值为“#####”。 LCase:将字符串的所有字母变成小写。例如,LCase("Hello")的值为“hello”。 UCase:将字符串的所有字母变成大写。例如,UCase("Hello")的值为“HELLO”。
【案例2-4】 Sin(x)和Cos(x)函数计算器
按钮单击事件中的代码为 Private Sub Command1_Click() Dim x As Single, sinx As Double, cosx As Double Const PI = 3.1416 x = Val(Text1.Text) x = x * PI / 180 '将角度转换成弧度进行计算 sinx = Sin(x) cosx = Cos(x) Text2.Text = sinx Text3.Text = cosx End Sub
按钮单击事件中的代码为 Private Sub Command2_Click() Text1.Text = "" Text2.Text = "" Text3.Text = "" End Sub
【案例2-5】 英文大小写转换器
【通用】/【声明】模块代码为 Dim S As String 按钮单击事件中的代码为 Private Sub Command1_Click() S = Text1.Text Text1.Text = UCase(S) End Sub Private Sub Command2_Click() Text1.Text = LCase(S)
2.6.6 表达式的执行顺序