--------------------------------------
梦断难寻VB系列教程
BLOG:http://blog.sina.com.cn/u/1177410867
QQ:297547664
教程全部是语音的屏幕录象,可以随意转载。
--------------------------------------
第3课 VB6.0程序设计基础
一 数据类型
数据类型 类型名称 类型声明字符 所占字节 有效值
字节型 BYTE 0-255 10,157,220
整型 INTEGER % 2 -32768--32768
长整型 LONG & 4 -2147483648--2147483648
单精度型 SINGLE ! 4 -3.402823E38到3.402823E38
双精度型 DOUBLE # 8 -1.79769313486232D308到1.79769313486232D308
货币型 CURRENCY @ 8 -922337203685477.5808到922337203685477.5807
日期型 DATE 8 100.1.1~9999.12.31
布尔型 BOOLEAN 2 TRUE或FALSE
对象型 OBJECT 4 任何对象的引用
变长字符串 STRING $ 字符串长度,1字节/字符
定长字符串 STRING*NUM $ NUM
可变类型 VARIANT 不定
数据类型转换
一般程序设计语言对不同类型数据的处理比较严格.将不同类型的值赋给同一变量,可能会产生逻辑错误.在VB中,一些数据类型可以自动转换.例如,数字字符串可自动转换为数值型.但是,许多数据类型不能自动转换,因此,VB 提供了函数可将已有的数据转换成特定的数据类型的数据类型转换函数.
注意,对目标数据类型,传递到转换函数的值必须是有效的,否则会发生错误.例如:如果想要把Long 类型的数据转换为Integer类型的数据,则Long类型的数据必须在Integer数据类型的有效范围内.
VB中四种数据存储形式
1 变量:是指程序在运行过程中其值可以改变的那些量
变量命名规则
1.第一个字符必须是字母
2.后接字符可以是字母,数字,下划线,但不可以是小数点,空格以及! @ # ¥ % &等变量变形说明符.
3.最后一个字符可以是类型说明符(! @ # ¥ % &)
4.变量名最长可达255个字符
5.不能与保留字重名
声明变量
1.隐式声明:只是变量不经声明.直接使用
虽然隐式声明使用方便,但用户一时疏忽而输错字符时,程序运行过程中由于不能检查出错误,其执行结果就不能达到预期的效果,而且这种错误不能利用编译系统检查出来,较难查找,特别是在大型复杂的程序中更是如此.因此,要养成在使用一个变量之前先声明它(即显式声明)的良好的编程习惯.
2.显示声明:变量声明后再使用的方式成为显式声明,它在模块级别中使用,我们可以强制必须显式声明模块中的所有变量,然后才能在程序中使用变量,这样可以避免发生一些由于错误输入而引起的程序错误.
强制显示声明的两种方式
(1)工具-选项-编辑器-勾选"要求变量声明"-重新启动VB
(2)窗体对象列表选择(通用),再声明区声明Option Explicit
使用DIM语句声明变量(也可以用来声明数组)
1.声明一个变量 Dim StuName As String
2.声明多个变量 Dim m As Integer,N As Integer
3.声明多个不同类型的变量 Dim a,b As Boolean,c As Date
全局变量的声明:在标准模块的声明部分,使用关键字Public或者Global声明,可以被工程中的任一窗体,任一模块中的任一过程或函数使用.
全局变量的使用过程中一定要特别注意,因为每一个程序模块都可能改变它的值,所以如果控制不当,极易出现错误
2 常量:常量指在程序运行过程中,其值不能改变的量.在编写程序时,常会遇到一些固定不变的数值,将它声明为常量来用.利用常量可以减少输入错误,简化固定数值的修改过程,增强程序的可读性.VB 中的常量分为两类
系统内部常量
是为应用程序和控件提供的
如:VbRed(红色) VbWhite(白色)
符号常量(自定义常量)
用户自定义常量使用关键字CONST进行声明
[Public|Private] Const 变量名 [As 数据类型]=表达式
Public是公有声明,使用Public 声明的常量可在整个应用程序中使用,它必须在标准模块的声明区中使用.在窗体模块或类模块中不能声明Public常量.
Private是私有声明,Private可用在模块级声明常量,此常量只准许在模块级使用;Private关键字不能在过程声明变量时使用
缺省为Public
如:Const PI As Double=3.1415926
几点说明:
1.用Const声明的变量在程序运行的过程中是不能被重新赋值的
2.在常量声明的同时要对常量赋值
3.可以在声明的常量指定类型
4.在使用一常量为另一常量初始化时注意循环引用时会出错
3 数组:是多个有序数据类型(包括VARIANT数据值)的值的集合
数组的定义和声明
数组的定义语法如下
Dim 数组名([[下标下界 To] 下标上界])[As 数据类型]3
如:Dim A(10) As Integer '表示数组名为A,此数组下标下界为缺省值0,下标上界为10,有11个Integer类型的元素,从A(0)、A(1)到A(10)
Dim B(3,4) As Integer '表示B是一个二维 Integer 数组
Dim C(1 To 5,4 To 9,2 To 5) As Integer '表示C是一个显式指定了上下界的三维 Integer 数组
Option Base语句
声明数组下标的缺省下界,必须在模块的数组声明之前使用
语法:Option Base{0|1}
静态数组
数组中的元素个数是固定不变的,它们占用的空间大小也是固定不变的.
动态数组
有时在数组开始使用前,不能知道需要多大的数组才能满足实际需要.当然可以把数组的大小定义到足够大来满足任意的实际应用需要,这种方法效率很低(大量浪费内存空间).如果使用动态数组,就可以在程序运行时根据实际需要,精确定义数组的大小.
动态数组的声明过程:
1.使用Dim声明数组
Dim MyArray()As Integer
2.使用ReDim语句重新定义
Dim MyArray(10,10)
要使用原有的数据保留,可使用以下语句:
ReDim Preserve MyArray(10,20)
注意:使用ReDim 时,重新定义数组会使所有数组元素的值消失,而使用Preserve可以保留数据.但是用Preserve只能在改变数组的最后一维的大小时,保留数组的数据.对于一维数组来说,所有数据都会保留,而对于多维数组:只能改变最后一维的大小,才能保留全部数组数据,否则出错.
LBound和UBound函数
LBound(数组名[,指定的维数]):返回指定数组维的可用最小下标
UBound(数组名[,指定的维数]):返回指定数组维的可用最大下标
4 记录:又称"用户自定义数据类型",是由多个变量构成的结构化的数据类型.变量称作记录的成员.成员可以是不同数据类型的变量(包括记录类型)
例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,都与某一个学生相互联系.如果将num(学号)、name(姓名)、sex(性别)、age(年龄)、score(成绩)、addr(地址)分别定义为互相独立的简单变量,是难以反映它们之间的内在联系的.应当把它们组织成一个组合项,在一个组合项中同时包含若干个类型不同(当然也可以相同)的数据项.
记录类型的定义
用Type...End Type语句定义(注意:只能在模块的声明部分使用)
如:
Type Student
Num As Integer '成员名 As 数据类型
Name As String*20
sex As String*1
End Type
记录类型变量的命名规则同一般变量命名相似,但不能使用类型声明后缀(% & # @ ! $)
定义记录类型变量
用Dim(或Public,Static)来声明拥有这种数据类型的变量.
如:Dim Student1,Student2 As Student
定义Student1和Student2为Student类型变量,即它们具有Student类型的结构
赋值
如:Student1.Sex="男"
Student1.Name="王华"
记录数组
一个记录变量可以是一组数据(如一个学生的学号、姓名、成绩……等数据).如果对一个班的学生的数据进行统计与处理,显然应该使用记录数组.记录数组与以前的数组不同之处在于每个数组元素都是一个记录类型的数据
二 运算符和表达式
运算符
用来对运算对象进行各种运算的操作符号
分为:算术运算符.连接运算符.关系运算符.逻辑运算符.特殊运算符.
表达式
由多个运算对象和运算符组合再一起的合法算式.
分为:算术表达式.关系表达式.逻辑表达式.
算术运算符
VB中,主要运算符有:
^ 指数
+ 加或取正值
- 减或取负值
* 乘
/ 除
\ 整数除法(整除)
Mod 求余
连接运算符
用来连接字符串的运算符.在VB中有两个连接运算符:
& 强制两个表达式(类型可能不通)作字符串连接
+ 当两边的表达式中混着数值字符串及数值的话,结果是对数值求和.
关系运算符
用来比较两个数或表达式的运算符,其运算结果为True,False或Null.
运算符 True False Null
< 表达式1<表达式2 表达式1>=表达式2 表达式1或表达式2=Null
<= 表达式1<=表达式2 表达式1>表达式2 表达式1或表达式2=Null
> 表达式1>表达式2 表达式1<=表达式2 表达式1或表达式2=Null
>= 表达式1>=表达式2 表达式1<表达式2 表达式1或表达式2=Null
= 表达式1=表达式2 表达式1<>表达式2 表达式1或表达式2=Null
<> 表达式1<>表达式2 表达式1=表达式2 表达式1或表达式2=Null
逻辑运算符
用来进行逻辑运算的运算符.
Not 逻辑非
And 逻辑与
Or 逻辑或
Xor 异或
Eqv 逻辑相等
Imp 蕴涵
特殊运算符
VB中提供两种特殊运算符:Is和Like
Is:比较两个对象变量,返回结果为True或False
Like:把一个字符串表达式与一个给定模式进行匹配,匹配成功结果为Ture,否则为False.
匹配字符和匹配内容:
? 任何单一字符
* 零个或多个字符
# 任何一个数字(0-9)
[Charlist] Charlist中的任何单一字符
[! Charlist] 不在Charlist中的任何单一字符
如:MyCheck="F"Like"[!A-Z]" 返回结果为False
运算符的优先级
在一个表达式中需要进行运算操作时,每一步都按预先确定的顺序进行计算求解,这个顺序由运算符的优先顺序所决定的。当表达式中有多个运算符时,较高优先级的运算符所对应的运算先执行。例如表达式4+3*2,乘法比加法的优先级高,所以先运算3*2,结果为6,然后运算4+6,结果为的10,故表达式的结果为10。如果表达式中的运算符优先级相同时,运算按从左到右的顺序进行。当表达式中有括号时,先计算括号内的值,再计算括号外的值
优先顺序从高到低依次为:
算术运算符
连接运算符
比较运算符
逻辑运算符
当乘法和除法同时出现在表达式中时,每个运算都按照它们从左到右出现的顺序进行计算。当乘法和除法同时出现在表达式中时,每个运算也都按照它们从左到右出现的顺序进行计算。可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算总是优先于括号外的运算。但是,在括号之内,运算符的优先顺序不变。
语句
赋值语句:[Let]变量或属性=表达式(对一般变量赋值)
Set 变量名=表达式(对对象型变量赋值)
在使用赋值语句时,要注意数据类型的匹配问题。如果我们把变量声明为数值型的,如整形,浮点型等,那么就不能将字符串表达式的值赋给该变量。同样,如果我们将变量声明为字符串型的,那么就不能将数值型的值赋给该变量
注释语句:使用Rem关键字或撇号(')
注释是在程序中加入一些评注,往往是提供写程序的日期,编写人,解释程序代码的作用。其根本目的是为程序的阅读和修改提供信息,提高程序的可读性和可维护性
程序续行:当一条语句过长时,为编写及阅读方便,可以将它分为多行书写,在行尾加一个空格和一个续行符(下划线’_’)表示该语句在本行未写完,转到下一行继续
在VB的代码窗口中,程序行的最大长度为1023个字符,但是,为了便于阅读,一行代码的长度最好不超过80个字符。通过在每行行尾放置一个续行字符(_),可以把很长的程序语句拆分成多行(但是,不能使用续行符把用引号引起来的字符串拆分成多行)。
一行中的多条语句:语句之间以冒号(:)隔开
三 程序流程的控制
程序流程指在一个程序中语句的执行次序。如果不使用流程控制语句,程序流程的走向是简单的从上到下顺序执行的单向流程。这种简单、有序的程序流所能完成的工作有限。在实际工作中,除了简单的顺序执行结构外,经常需要根据一定条件重新定向程序流程。从程序的一处切换到数行甚至数百行之后的地方执行
跳转
无条件转向语句,其形式为:
Goto 语句标号 或 Goto行号
Goto语句的使用可以达到一定的程序流程控制的功能,但在结构化程序设计中一般不提倡使用Goto语句,因为它的使用不易实现结构化程序设计.
分支
在日常生活中,我们总是要按一定的条件作出相应的决定,程序中同样如此。分支结构是根据一定的条件来决定执行何种操作,在VB 中由以下语句实现
1.If......Then语句
2.If......Then......End If语句
3.If......Then......Else语句
4.If......Then......ElseIf语句
5.Select Case语句
多重判断虽然可以用If…Then…Else来完成,但是判断的层次太多时,不仅编写困难,而且可读性差,不易维护。这种情况下,最好改用分情况选择语句Select Case语句
循环
1.Do......Loop语句
2.For......Next语句
当你不知道程序中循环的次数时,可用Do…Loop语句,知道循环的次数时,可用For…Next语句。For…Next循环中有一个计数器变量,决定循环的次数
3.For Each......Next语句
For Each…Next循环语句与For…Next 循环语句的区别在于,前者对于指定集合或集合中的每个元素重复执行某个程序段,而后者使用计数器变量控制循环过程。所以,使用For Each…Next 语句不必事先知道数组或集合中元素的个数
4.While......Wend语句
对于简单的循环可以用While…Wend语句,它的功能比其它的循环语句简单。如果条件式为 True,则所有的语句都会执行,一直执行到 Wend 语句。然后再回到 While 语句,并再一次检查条件式,如果条件式还是为 True,则重复执行。如果不为 True,则程序会从 Wend 语句之后的语句继续执行
四 常见标准函数
交互式函数
交互式函数是用来和用户进行交互的函数。我们在这里主要介绍Msgbox函数和InputBox 函数
类型转换函数
当我们要对不同类型的变量进行赋值操作或表达式中的运算时,就要进行类型转换,所有的类型转换函数可见数据类型转换
数学函数
数学函数用来完成特定的数学计算
日期和时间函数
VB提供了丰富的关于日期和时间的函数,这些函数和语句不仅可以用来返回和设置当前的时间和日期,还可以从日期和时间中提取年、月、日、时、分、秒以及可以对时间和日期进行格式化等
字符串函数
字符串函数用来完成对字符串的操作和处理,如截取字符串、查找和替换字符串、对字符串进行大小写处理等。VB6.0新添了许多字符串函数,加上原有的字符串函数,在对字符串的处理方面功能非常全面
目录和文件函数
目录和文件函数属于文件系统函数。通过它们我们可以操作目录和文件,如创建目录、删除文件和读写文件等