VB语言主要内容优秀教师版.docx
《VB语言主要内容优秀教师版.docx》由会员分享,可在线阅读,更多相关《VB语言主要内容优秀教师版.docx(23页珍藏版)》请在冰豆网上搜索。
![VB语言主要内容优秀教师版.docx](https://file1.bdocx.com/fileroot1/2023-4/21/86ab0632-c98f-45fa-9e0c-eb5845563e96/86ab0632-c98f-45fa-9e0c-eb5845563e961.gif)
VB语言主要内容优秀教师版
VB语言基础
一、数据类型
1、数值型:
取值范围:
Byte(字节型)━占1字节;0~255无符号
Integer(整型)━占2字节;-32768~32767
long(长整型)━占4字节;-2147483648~2147483647
single(单精度浮点)━占4字节;略
Double(双精度浮点)━占4字节;略
Currency(货币型)━占8字节小数点左15位,右4位
(精确定点数据类型)
2、逻辑型:
Boolean(布尔型)━占2字节;true或false
3、字符串型:
String¡ª¡ª定长型占字符串长度,变长型再加10
4、日期型:
Date(日期型)━占8字节100-1-1~9999-12-31
5、对象型:
Object━占4字节;任何Object引用
6、变体型:
Variant━变体型数字占16字节,变体型字符占22字节+字符串长
注:
此类型还包含三种特定值:
Empty;Null;Error;
7、用户定义的数据类型:
用户可以利用Type语句定义自己的数据类型。
格式如下
Type数据类型名
数据类型元素名As类型名
……
EndType
用Type可定义类似于C语言中的结构体类型。
例如:
TypeDate_Rec
RYearAsInteger
RMonthAsString*3
RDayAsInteger
EndType
注:
记录类型中的元素可以是字符串,但必须是定长字符串,其长度由类型名加上一个星号和常数指明。
数据类型转换函数:
函数名及书写格式转换结果
CBool(表达式)布尔型
CCur(表达式)货币型
CByte(表达式)字节型
CDate(表达式)日期型
CDbl(表达式)双精度
CSng(表达式)单精度
CInt(表达式)整型
CLng(表达式)长整型
CStr(表达式)字符串
Cvar(表达式)变体型
二.变量
1.定义
一个有名字的内存单元就叫变量。
在程序运行期间变量的值量可以变的。
2.声明
用声明语句声明变量
格式:
Dim/Static变量名As类型/类型名
有类型说明符表示变量
将类型说明符放在变量名尾部,可以表示不同的变量。
类型说明符:
%:
整型;
&:
长整型;
!
:
单精度浮点型;
#:
双精度浮点型;
@:
货币型;
$:
字符串型;
字节、布尔、日期、对象及变体型没有类型说明符。
注意:
①Dima,b,cAsInteger是错误的。
只有c被声明成Integer,而a,b缺省为Variant类型。
②如果使用DimxAsInteger语句声明了变量x为Integer,而在后面又使用带有类型说明符的该变量,如x$,x!
,x@和x#,程序运行时就会产生“duplicatedefinition”错误。
③使用不带As的Dim语句,会被声明成变体类型的变量。
④通过不带长度说明的字符串声明语句可以声明变长字符串。
⑤对于声明布尔型的变量,其缺省值为False;
⑥为声明为Date类型的变量赋值时,日期值应放在一对#之间,且多种日期和时间格式在VB中都是有效的。
隐含声明
VB允许使用不声明的变量,即一个变量未经声明就可以在程序中使用。
(使用隐含变量时,VB会自动创建变量,并赋予它变体类型。
在为其指定值之前,其值为Empty,当为它赋值后,会采用所赋值的类型作为自己的类型。
)
强制声明
在VB程序开始处,利用OptionExplicity语句声明
但是需要注意的是:
optionexplicit语句必须写在模块的所有过程之前。
如果模块中使用了optionexplicit语句,使用未声明的变量名时编译会出现错误。
3.变量的有效范围
变量的作用域指的是变量的有效范围。
为了能正确地使用变量的值,应当明确可以在程序的什么地方访问该变量。
VB中变量可以分为3类:
局部(Local)变量、模块(Module)变量及全局(Public)变量,其中模块变量包括窗体模块变量和标准模块变量。
各变量位于不同的层次。
(1)局部变量:
在一个过程内部声明的变量,有效范围限于声明它的过程
自动变量:
用Dim声明,变量值只在过程执行期间才存在
静态变量:
用Static声明,变量值在程序运行期间一直存在
(2)模块变量:
“通用”声明段用Private或Dim语句声明,可被该模块中的任何过程所访问
(3)全局变量:
标准模块的声明段用Public或Global声明,效范围是整个工程的所有模块
说明:
标准模块:
只含有程序代码的文件,扩展名为.bas
添加标准模块:
“工程→添加模块”
如果在窗体模块的“通用”声明段
用Public声明变量,其它模块可通过如下方式引用该变量:
窗体模块名.变量名
4.变量命名原则
必须以字母或数字开头,合可跟汉字,字母、数字或下划线组成,长度小于等于255个字符。
不能使用VB关键字。
变量名不能与过程名或符名常量同名。
变量名在同一范围内必须是唯一的。
5、枚举类型:
当一个变量只有几种可能的值时,可将这个变量定义为枚举类型。
枚举类型的声明放在窗体模块、标准模块或公用类模块中的声明部分,用Enum语句来定义,格式如下:
[Public|Private]Enum类型名称
成员名[=常数表达式]
成员名[=常数表达式]
¡¡
EndEnum
默认情况下,枚举类型中的第一个常数被初始化为0,其后的常数逐项递增1。
3.常量
1、定义
在程序运行过程其值始终不变的量。
2、种类
vb中的常量可以分为1,直接常量 2,符号常量
直接常量可分为 数值常量 字符串常量 布尔常量 日期常量 (当然直接常量是不用定义的)
符号常量可分为 系统内部常量和自定义常量
(系统内部常量也不用自己定义)
自定义常量格式如下:
[Public|private]const常量名 [as数据类型]=表达式
使用常量时应注意:
(1)用Const声明的常量在程序运行过程中是不能被重新赋值的。
(2)在常量声明的同时赋值。
(3)可以为声明的常量指定数据类型,如ConstconValAsCurrency=3.78,缺省时为所赋值的类型。
(4)在用常量为常量初始化时注意,不可有循环引用。
例如:
模块1中:
Publicconstcon1=con2+8……
模块2中:
PublicConstcon2=con1*3……
四.数组
1.数组的定义:
必须用Global或Dim语句定义。
Dim语句的语法格式如下:
Dim数组名([lowerTo]upper,[[lowerTo]upper])[Astype]
在这里,每对lower和upper为数组的一维,lower是该维下标的下限,upper是该维下标的上限,如不标明lower,其默认值为0。
Upper不可省略。
例如:
(1)一维数组的定义:
DimRecord(5)AsInteger
定义了一个有六个数据元素的整型数组
(2)二维数组的定义
DimMatrix(2,3)AsInteger
该数组定义了一个二维数组,可以存储12个整型数,三行四列下标:
00,01,02,03,10,……23
2.动态数组
带有空()的Dim可以声明一个动态数组,如:
DimdynArray()
然后,可用ReDim语句在一个过程或函数中定义动态数组的维数和元素个数。
申请或重申请存储空间的一般格式为:
ReDim[Preserve]数组名([lowerTO]upper[,[lowerTo]upper])[AsType]
其中,Preserve为可选项,表示是否保护己有数据。
缺省时为不保护。
例如:
ReDimdynArray(10)//为动态数组申请10个单元
ReDimPreservemyArray(Ubound(myArray)+10)
其中,Ubound函数返回数组的指定维的上限。
这是一个保留原数据的增量分配数组
五、运算符
1、种类
.赋值运算符:
VisualBasic中的赋值运算符是“=”。
.数学运算符:
优先级运算符说 明
高^指数运算,如2^3=8
-负号运算符
*/乘除运算,其中除法(/)的所得结果为实数
\整除。
所得结果为实际结果的整数部分
Mod取模运算符,两数相除取余数
+-加、减运算
低&连接字符串。
.关系运算符:
=(等于);<>或><(不等);<(小于);>(大于);<=(小于等于);>=(大于等于);like(比较样式);Is(比较对象变量)
.逻辑运算符:
逻辑运算用于判断操作数之间的逻辑关系。
VB提供了非(Not)、与(And)、或(Or)、异或(Xor)、相等(Eqv)和隐含(Imp)逻辑运算。
逻辑运算符的优先级低于数学运算符和关系运算符。
逻辑运算符本身也有优先级,其顺序为Not,And,Or,Xor,Eqv,Imp。
2.优先级
即:
各种运算符在表达式中的运算顺序。
1)函数运算;
2)算术运算;
3)关系运算;(优先级:
=,<,>,<>,<=,>=)
4)逻辑运算;
注:
乘除法同时出现时,遵循从左到右顺序;括号的运算总是优先;字符串连接(&)不是算术运算符,但其优先顺序在所以算术运算符之后,又优先于其他运算符
六、数据的输入与输出
数据输出:
1.Print方法
功能:
在窗体/立即窗口/图片框/打印机上输出信息
格式:
[对象.]Print[输出项][,|;]
[对象]缺省为当前窗体,[输出项]缺省则打印一空白行
输出项之间可用分号或逗号分隔:
使用分号,其后的输出项紧接着前一个输出项输出;使用逗号,其后的输出项在下一个输出区输出。
两个输出区默认相隔14列
各输出项表示要打印的表达式,组成
[Spc(n)|Tab(n)]表达式
Spc(n):
指定在输出之前插入n个空白字符
Tab(n):
指定在第n列上输出
2.格式输出函数
功能:
使数值、日期或字符串按指定的格式输出
格式:
Format(expression[,format])
expression-需要格式化输出的表达式
format-输出的格式模式
3.MsgBox函数
功能:
创建预定义的消息对话框
常用格式:
MsgBox(prompt[,buttons][,title])
prompt-字符串,指定消息框中显示的信息
Buttons-指定消息框中显示的按钮数目及形式、图标样式等,缺省值为vbOKOnly
Title-指定消息框的标题,缺省值为工程名
用户所选按钮的返回值可作为继续执行程序的依据。
说明:
如果消息框中显示的信息过长,可使用回车符Chr(13)和换行符Chr(10)
如果不需要返回值,可使用没有括号的
MsgBox语句:
MsgBoxprompt[,buttons][,title]
数据输入:
功能:
生成输入对话框
常用格式:
InputBox(prompt[,title][,default][,xpos][,ypos])
prompt-字符串,指定输入框中显示的信息
Title-指定输入框的标题,缺省值为工程名
Default-字符串,指定文本框中的初始内容,缺省为空。
xpos和ypos-数值表达式,成对出现或者成对缺省,指定输入框左上角相对于屏幕的位置。
InputBox函数一次只能输入一个值
七、语句与控制流
1、注释语句:
注释用来说明程序中某些语句的功能和作用。
在VB中用“‘”和Rem来标识一条注释语句。
VB程序在解释运行或编译过程中,不会处理Rem后面那一行注释语句。
2、赋值语句:
目标操作符=源操作符
//操作符两边的数据类型必需一致!
3、暂停语句:
格式:
Stop
//当程序执行到Stop时,自动打开立即窗口
4、结束语句:
格式:
End//常用于结束程序
5、条件分支结构
(1) If…语句
它有三种格式:
第一种是单分支格式:
If条件Then
[语句]
EndIf//其中加“[]”部分为可选择部分。
第二种是双分支格式:
If 条件 Then
[语句块1]
[Else
语句块2]
EndIf
这里是双分支,即如果条件满足,执行语句块1,否则,执行语句块2。
注意:
语句块中的语句不能与其前面的Then在同一行上!
第三种格式:
If 条件1 Then
[语句块1]
[ElseIf条件2Then
语句块2]
……
Elseif条件nThen
语句块n
[Else
语句块]
EndIf
注:
IIf函数
VB提供了一种用来执行简单条件判断的函数IIf,它是“If……Then……Else”结构的简单版本,格式如下:
Result=IIf(条件,为“True”的执行语句,为“False”的执行语句)
这里的Result是函数的返回值,括号中的三项均不能省略,执行的操作为首先判断条件,当“条件”为真的时候,执行“为“True”的执行语句”,否则执行“为“False”的执行语句”。
例如有如下判断条件:
Ifa>8Then
x=3
Else
x=0
EndIf
用IIf函数替代,则可简化为:
x=IIf(a>8,3,0)
(2) SelectCase…语句
SelectCase…语句很适合多重条件判断。
它的书写格式为:
Selectcase测试表达式
Case 表达式结果1
[语句块1]
[Caset 表达式结果2
语句块2]
……
[Caset else
语句块n]
EndSelect
测试表达式既可以是数值表达式,也可以是字符串表达式,通常为变量或常量;每个语句块由一行或多行合法的VisualBasic语句构成;表达式结果1、表达式结果2……被称为域值,它可以是:
表达式[,表达式]……、表达式To表达式或者Is关系运算表达式(运算符可以是:
<,<=,>,>=,<>,=)之一。
这三种表现形式均合法,但应该注意表达式结果中的表达式必须与测试表达式的类型一致。
6、循环结构:
(1)For…Next语句
语句格式:
For循环变量=初值To终值[Step步长]
[语句]
[ExitFor]’用于在特定条件下退出循环
[语句]
Next[计数器]
其中:
①循环变量:
数值型变量,用于统计循环次数的变量。
②初值:
数值型变量,用于设置循环变量的初始值。
③终值:
数值型变量,用于设置循环变量的终结值。
④步长:
数值型变量,用于决定每次循环变量的变化值。
可为正值亦可为负值,默认为1。
这里遵循:
“先检查、后执行”的原则,循环次数由初值、终值和步长决定;
For语句和Next语句必须成对出现,且For语句必须在Next语句之前;
For-Next循环是可以嵌套的,且嵌套层数没有限制,但每个循环必须有唯一的一个变量名作为循环变量,内层循环的Next语句必须位于外层循环的Next语句之前,不可相互交叉;
当内循环与外循环有相同的终值时,可以共用一个Next语句,但不能省略变量名;
循环控制值既可以是整型量或单精度数,也可以是双精度数。
(2)ForEach…Next语句
对集合中的每个元素进行一次循环,直到集合中无更多元素时,执行Next下面的语句。
一般格式为:
ForEach集合中元素in集合
[语句]
[ExitFor]
[语句]
Next[元素]
(3)Do…Loop语句
当型循环格式:
格式1:
Do
[语句块]
[ExitDo]
Loop[While循环条件]
格式2:
Do[While循环条件]
[语句块]
[ExitDo]
Loop
这种结构的功能是当“循环条件”为“真”时,执行循环体语句块,否则,跳出循环体,执行Loop后面的语句。
第一种格式的执行顺序是:
先执行循环体语句块,然后判断“循环条件”,如果为“真”,则继续执行循环体语句块,否则,跳出循环,执行Loop后面的语句;第二种格式的执行顺序:
先判断“循环条件”,如果为“真”,则执行循环体语句块,否则跳出循环,执行Loop后面的语句;
直到型循环格式:
格式1:
Do[Until循环条件]
语句块
[EixtDo]’用于在特定条件下退出循环
Loop
格式2:
Do
语句块
[EixtDo]’用于在特定条件下退出循环
Loop[Until循环条件]
这种结构的功能是直到“循环条件”为“真”时,跳出循环体,执行Loop后面的语句,否则,就一直执行循环体语句块。
第一种格式的执行顺序是:
判断“循环条件”,如果为“假”,执行循环体语句块,否则,跳出循环体,执行Loop后面的语句;第二种格式的执行顺序是:
先执行循环体语句块,然后判断“循环条件”,如果为“假”则继续执行循环体语句块,否则,跳出循环体,执行Loop后面的语句。
注意:
“While循环条件”或“Until循环条件”为可选项,如果缺省,则该循环将成为无限循环。
(4).While…Wend语句
这种语句是从传统BASIC语言中继承下来的,用DoWhile…Loop语句功能一样,其语句格式为:
While 条件
[语句块]
Wend
7、在VisualBasic中有以下几种跳出语句:
①ExitFor:
用于中途跳出For循环。
②ExitDo:
用于中途跳出Do循环。
③ExitSub:
用于中途跳出Sub过程。
⑤ExitFunction:
用于中途跳出Function过程。
以上几种中途跳出语句都既可以直接使用,也可以用条件判断语句加以限制。
且在循环中或过程中出现的次数没有限制。
使用它们,可以为某些循环体或过程在需要的时候设置明显的出口。
八、过程
1.Sub过程(子程序)
一般格式:
[Static][Private][Public]Sub过程名[(参数列表)]
[语句块]
[ExitSub]
EndSub
参数表列中含有该过程被调用时由主调方传送过来的变量名或数组名,各名字之间用逗号分隔,它们指明了调用时需传送给该过程的参数类型和个数,每个参数的格式为:
[ByVal]变量名[()][As数据类型]
ByVal是可选项,如果有这个选项,则表明该参数是“传值”参数。
在VisualBasic中应区分通用过程和事件过程这两类子过程。
①通用过程:
告诉应用程序如何完成一项指定的任务。
通常,在应用程序中经常会发生几个不同的事件过程也许要执行同样的动作的情况,这就要求系统提供能够将公共语句放入一个分离开的过程(通用)中。
②事件过程:
当用户对VisualBasic中的对象施以动作并得到系统确认时,便自动用相应事件的名称调用该事件过程。
事件名称相当于对象和代码之间的桥梁,事件过程则是附加在窗体或控件上的一段程序代码。
所有的事件过程使用相同的语法。
其格式如下:
PrivateSub控件名_事件名[(参数表列)]
[语句块]
[ExitSub]
EndSub
窗体的事件过程也使用相同的语法。
其格式如下:
PrivateSubForm或MDIForm_事件名[(参数表列)]
[语句]
[ExitSub]
EndSub
2、Function 函数
函数实际是实现一种映射,它通过一定的映射规则,完成运算并返回结果。
函数的定义方式与Sub过程的定义很相似,可以说只不过是用Function关键字取代Sub,同时加入返回值类型说明。
格式:
[Static][Private][Public]Function过程名[(参数列表)][As类型]
语句块
[过程名=表达式]
[ExitFunction]
[语句块]
EndFunction
注意:
Function过程与Sub过程的最大区别在于Sub过程无返回值,而Function过程有至少一个返回值;过程不能嵌套,因此,不能在事件过程中定义通用过程(包括Sub过程和Function过程),只能在事件过程内调用通用过程。
3、调用过程
如果要使得程序执行某过程,则必须调用该过程。
过程的调用方式有两种:
第一种方式:
过程名[(参数1,参数2,……)]
第二种方式用Call调用:
Call过程名[(参数1,参数2,……)]
每次调用过程都会执行Sub(或Function)和EndSub(或Function)之间的语句。
可以将子过程放入标准模块、类模块和窗体模块中。
调用Sub过程相当于执行一个语句,不考虑返回值,而调用Function过程则需考虑返回值。
在工程中的任何地方都可以调用其它模块中的公用过程。
大致分为几种调用方式
(1)调用窗体模块中的过程。
所有窗体模块中的外部调用必须指向包含该过程的窗体模块。
例如,如果窗体模块Form1中包含SomeSub过程,则可以以下语句调用:
CallForm1.SomeSub[(参数表)]
调用标准模块中的过程。
如果过程名是惟一的,则不必在调用时加模块名,无论是在模块内还是在模块外调用,结果总会这个惟一的过程。
如果两个以上的模块都包含同名的过程,那就有必要用模块名来限定了。
九、常用标准函数
CurDir函数——返回一个用来代表当前路径的字符串变量;格式:
CurDir[(drive)]
方括号为可选项,默认为当前驱动器的路径。
CVErr函数——返回一个包含指定错误号的变体型
格式:
CVErr(errornumber)
Date函数——返回一个包含系统日期的Variant型或者date
格式:
Date
Day函数——返回表示一个月中某一天的整型数
格式:
Day(date)
Timer函数?
a?
a返回一个从当日午夜零点到当前时刻所经历的秒数(单精度数)