vb理论资料Word格式.docx
《vb理论资料Word格式.docx》由会员分享,可在线阅读,更多相关《vb理论资料Word格式.docx(37页珍藏版)》请在冰豆网上搜索。
分隔符可以是逗号或者分号。
如:
printa,b与printa;
b
用逗号按制表列进行输出。
printa,b输出结果是ab
用分号按紧凑格式输出。
当输出数值时数值尾部加一个空格,头部加一个符号位(正数为空格)。
printa;
b输出结果是ab。
Print1;
2输出结果是12
3、常用控件
●命令按钮(Commandbutton):
注意cancel属性和default属性。
Cancel:
当其值为true时,按[Esc]等于单击本按钮。
Default:
当其值为true时,按[Enter]等于单击本按钮
●列表框(Listbox):
注意AddItem的用法:
[object].AddItem<
l列表项文本>
[,插入位置序号]
如List1.AddItem"
电子商务"
●计时器控件(Timer):
Interval:
单位为千分之一秒
没有方法,事件只有Timer
4、注意Setfocus与Gotfocus的区别:
Setfocus:
是方法
Gotfocus:
是事件
5、注意方法Clear和Cls:
两者都可用于内容的清除,但不同的控件,方法不同
Clear:
只有ListBox和ComboBox才有
Cls:
只有Form和PictureBox才有
6、菜单:
每个菜单至少包括一个菜单项(菜单命令)。
VB允许最多创建四级子菜单。
第四章
1、过程:
事件过程:
缺省情况下是私有的。
通用过程:
缺省情况下是公有的。
2、模块
窗体模块
标准模块:
被多个窗体共享的代码,应该被组织到标准模块中。
其保存的过程都是通用过程。
其代码可供其他应用程序使用。
类模块
3、数据类型
变体型数(Variant):
可存储数值的最大。
故其占用的内存也较大。
整数(Interger)的取值范围:
-32768~32767
4、常量:
mmmEeee与mmmDeee:
mmm是尾数,eee是指数。
如1.234E5代表1.234×
105,E代表单精度,D代表双精度
&
O与&
H:
数字前面加&
O指八进制数,数字前面加&
H指十六进制数。
日期常量:
表示形式:
mm/dd/yy(m指月month,d指天day,y指年year)日期常量要用#括起来。
如#6/15/1998#
符号常量:
常量名只能由字母,数字和下划线组成,首字符必须是字母的,字母不区分大小写。
(与控件的Name的命名规则是一样的)
5、变量
命名规则:
与符号常量的命名规则一致。
变量的初始值:
数值型的为“0”。
变长字符串型的为空串。
定长字符串型的为n个空格。
逻辑型的为“False”
定义:
必须逐个定义。
如Dima,bAsInterger:
a为变体型,b为整型。
DimaAsInterger,bAsInterger:
a,b都是整型。
6、运算符与表达式:
算术运算符与算术表达式,关系运算符与关系表达式,逻辑运算符与逻辑表达式。
运算符运算次序:
^,-(负号),*和/,\(整除),mod,+和-,&
速记方法:
方负乘(除)整模(模除即取余)加(减)连
关系表达式:
按值比较。
字符型的是按字符的ASCII代码,自左至右逐个进行比较的,遇到则大的。
逻辑运算:
✧Or逻辑或:
只要有一个为“True”则为“True”
✧Xor逻辑异或:
只有一个为“True”才为“True”
✧运算次序:
Not,And,Or,Xor速记:
非与或异或
3*2<
8值为真
"
32"
<
="
3"
"
2"
值为真
6>
8值为假
7>
=9值为假
ac"
="
a"
值为假
3<
>
6值为真
其值只有真(true)与假(false)如:
预算规则:
算术〉〉关系>
逻辑
注意:
✧一个整数和一个长整数运算结果是长整数。
✧一个整数和一个单精度数进行运算结果是单精度数
✧一个单精度数和一个长整数进行运算结果是双精度
✧不管除数和被除数什么类型,结果都是双精度数
7、赋值语句不同数据类型的转换:
(赋值语句是将等号右边的值赋给左边的变量)
字符型变量=数值型表达式:
数值型表达式的值变成字符型赋给左边的变量
逻辑型变量=数值型表达式:
数值型表达式的值为非零值时,则转换为“True”赋给变量,为“0”时则把“False”赋给变量。
整型变量=逻辑型表达式:
表达式为“True”时则把“-1”赋给整型变量,为“False”时则把“0”赋给整型变量。
字符型变量=逻辑型表达式:
表达式为“True”时则把字符“True”赋给整型变量,为“False”时则把字符“False”赋给整型变量。
数值型变量=字符型表达式:
不可行。
系统提示错误,并停止执行。
8、公共函数:
Ø
注意Mid(),Instr(),Right(),Left()
比较Str(),CStr,
比较CInt(),Int(),Fix()
注意Val(),Chr(),Asc()
注意Ucase(),Lcase()
在表达式给变量赋值时,若数据类型不匹配,系统按C族函数(即CInt,CStr,CLng等)的方式自动进行类型转换。
CInt,CLng的运算规则:
小数部分大于0.5则进位加1,小数部分小于0.5,则舍去,若等于0.5则以整数位得到最靠近偶数进行取舍。
如CInt(2.5)的值为2,而CInt(3.5)的值为4。
9、Format函数:
注意#和0的区别。
10、Input函数和MsgBox函数
MsgBox函数的语法格式是:
变量=MsgBox(提示[,对话框类型[,对话框标题]])
如左边的消息对话框的代码应写作:
y=MsgBox(“输入文件名是否正确”,52,“请确认”)
注意括号中52的意义
消息框的三种格式
✧y=MsgBox(“输入文件名是否正确”,52,“请确认”)
✧MsgBox“输入文件名是否正确”,52,“请确认”
✧MsgBox(“输入文件名是否正确”,52,“请确认”)注意括号与等号
Input函数格式:
变量=InputBox(提示[,标题][,缺省值][,xpos][,ypos])
如左边的输入对话框的代码应写作:
y=InputBox(“请输入文件名(不超过8个字符)”,”文件名”,”vbfile”)
注意与msgbox函数比较括号中各项的位置差异。
11、注意字符串与数字的表达式的运算:
(字符串要加上“”)
字符串+字符串等同于字符串&
字符串(&
为连字符)。
如“123”+“456”结果是“123456”
字符串(数字组成的。
如“123”)+数字等同于字符串中的数字+数字。
如“123”+456结果是123456
字符串&
数字等同于字符串&
数字转换过来的字符串。
如“123”&
456结果是“123456”
第五章
随机数:
Rnd()。
生成某个范围内的随机数:
Int((上限-下限+1)*Rnd+下限)
随机化语句:
Randomize(置于变量语句之下,循环之上)。
第六章
1.数组:
动态数组和固定数组。
2.数组下界起始值定义:
OptionBasicn,缺省此语句则从0开始。
3.数组元素的初始值与变量的初始值类似。
4.二维数组在内存中是按列存放的。
先列后行。
5.三维数组则逐页逐列存放的。
先页再列后行。
6.LBound()和UBound()返回数组的维下界值和维上界值。
类型为Long型。
7.Debug.print将内容显示在“立即”窗口。
8.动态数组:
先不说明数组元素的数量,在过程中使用ReDim语句来定义元素的数量。
若ReDim后带有Preserve,则重新定义数组时会保留原数组最后一维元素的值。
第七章
1.过程:
子程序过程(Sub)。
不返回值。
可分为事件过程(窗体事件过程和控件过程)和通用过程
函数过程(Function)。
返回一个值
属性过程
2.窗体Initialize>
Load>
Active>
Gotfocus
3.Sub过程和Function过程比较
✧定义:
[Private\Public\Static]Sub过程名(参数列表)[Private\Public\Static]Function函数名(参数列表)As数据类型
✧调用:
Sub过程:
●Call语句(无参时,参数列表括号可省略)
●不加Call,参数列表括号省略
Function过程:
不能省略参数列表括号。
4.形参:
可以是数组,不可以是定长字符串变量。
5.按值传递(ByVal)与按址传递(缺省或ByRef)
6.形参为表达式或常数时只能是传值传递。
7.当不用作用域的同名变量发生冲突时,VB优先访问局限大的变量。
(即优先采用局部的变量的值)
8.静态变量作用域仅局限于定义它的过程,且能保留上一次访问时变量的值,不重新初始化。
第八章
该章一般情况下出题较上,而且江苏省二级笔试更加明显。
但并不是不可能出题。
选择题或者填写代码这类题目都有可能。
但大学的教学对此章并不太重视。
故在此不再对此章的内容进行整理。
此章识记的内容较多。
VB学习资料二
VB编程基础与实例
前
言:
VB的编程,一般是从第五章(循环和分支)开始的。
之前的几章着重于学习VB的变量,常量以及各种表达式的使用,各种数据类型的区别与使用,还用VB编程设计界面的各种控件的使用。
而从第五章开始就要开始重点学习VB的编程思想,开始自己尝试设计算法。
循环和分支结构以及第六章的数组知识将在第七章得到大量的应用。
所以第五章和第六章是学好第七章的基础。
而第五章之前的几章,尤其是第四章又是第五章和第六章的基础。
循环与分支结构
IfCJ<
60Then
Print"
成绩不及格“
Print"
请准备补考"
EndIf
条件语句:
如果~~~~~则
~~~~~~
If...Then
Else
成绩及格“
不然的话就
~~~~~~~
...
ElseIfCJ<
80Then
Else
Print“成绩优秀”
如果~~~~~~则
否则如果~~~则
ElseIf...Then
...
注意当程序运行到ElseIfCJ<
时,CJ是不满足CJ<
60的,即CJ<
80相当于CJ<
80AndCJ>
=60。
(注意不能写成60<
CJ<
80)
SelectCasescore
Case0To59
Label2.Caption="
不及格"
Case60To69
及格"
Case70To79
Label2.Caption="
中"
Case80To89
良"
Case90To100
优"
CaseElse
成绩出错"
EndSelect
多分支语句SelectCase
SelectCase表达式
Case表达式表1
语句块1
Case表达式表2
语句块2
...
CaseElse
语句块n
For...Next循环语句
格式:
For循环变量=初值To终值[Step步长值]
循环体
Next循环变量
步长值可以是正数(称为递增循环),也可以是负数(称为递减循环),但必须是整数。
若步长值为1,则Step1可以省略。
Forc=1To10Step2
S=S+c
Nextc
Printc
结果c应为11。
因为步长为2,c是先加2后,等于11才检验是不是在1~10之间。
11超出了这个范围,故不再执行循环体,退出循环。
Do...Loop循环
✧前测型
Do[{While|Until}条件]
循环体
Loop
DoWhile...Loop语句的功能:
当条件成立(为真)时,执行循环体;
当条件不成立(为假时),终止循环
DoUntil...Loop(直到型循环)语句的功能:
当条件不成立(为假)时,执行循环体,直到条件成立(为真)时,终止循环
✧后测型
Do
循环体
Loop[{While|Until}条件]
先执行循环体,然后判断条件,根据条件决定是否继续执行循环
注意:
本语句执行循环的最少次数为1,而前测型Do...Loop语句的最少次数为0(即一次都不执行循环)
数组:
1.当数组的下标为非整数时,会按CInt函数的方式将其转换为整数处理。
CInt是当程序中不说明转换方式(如Int())时系统默认的转换方式,这在很多题目中都会出现这种情况。
这种默认转换也不仅仅是在数组的下标中才出现。
如书上55页:
DimaAsInteger则a=3.7是等同于a=CInt(3.7)的。
2.数组元素的初始化:
在定义数组的同时,就已经将数组元素初始化。
如定义:
Dima(3)AsInteger.AsInteger语句说明将数组定义成数值型,数值型的初始值为零。
变长字符类型的数组元素初始值为空字符串,定长字符类型(如Asstring*4)的初始值为指定长度的空格,布尔型的数组元素初始值为False.
3.一维数组的结构:
按下标序号升序排列
二维数组的结构:
在内存中按列存放。
先列后行
三维数组的结构:
在内存中逐页逐列。
先页然后是列,最后才是行。
4.数组的赋值:
一般是通过For—next循环来进行赋值的。
5.建立动态数组的步骤:
第一步:
声明一个没有下标(或称空维数)的数组为动态数组
第二步:
在过程中用ReDim语句重新定义带下标的动态数组
若采用:
ReDimPreserveF(n),则能保留数组中原有的数据,但只能保持最后一维。
6.ForEach...Next语句专门作用于数组或对象集合中的每一成员。
与前面的循环语句For...Next类似,都是用来执行指定重复次数的循环。
语法格式:
ForEach成员In数组名
[ExitFor]
Next成员
“成员”是一个Variant变量,不需先定义。
本语句可以对数组元素进行读取、查询或显示,在不知道数组中元素的数目时非常有用。
7.数组这一章让人较难理解的首先是动态数组的使用,因其较灵活,但它在不确定数组元素数目的时候是很实用的。
来看一个例子,假如想知道1到23中间的偶数,若不确定个数:
OptionBase1
PrivateSubCommand1_Click()
DimiAsInteger,mAsInteger,a()AsInteger定义动态数组
Fori=1To23
IfiMod2=0Then
m=m+1通过改变m的值在下一步改变数组元素的数目
ReDimPreservea(m)只有用Preserve才能保留之前被赋值元素的值,否则将变零
a(m)=i
EndIf
Nexti
ForEachvIna
Printv;
用ForEach...Next语句来显示数组元素的值,分号能使其横向排列
Nextv
EndSub
然后应该是章后程序示例。
这一章的程序示例较多地引入了算法(求最大数,排序等)。
但要求掌握的,而且常用的只有几种:
求最大数最小数:
98页。
排序:
106页。
二分法查找:
110页。
删除重复数(出题可能很低):
114页。
其他章中:
筛选字母或(数字):
71页。
求最大公约数:
135页。
求最小公倍数:
153页。
寻找素数104页。
当然,在正式考试中,往往会对着这些题目的要求进行一定的变形,以加大难度,但其核心部分总离不开这些算法。
过程
⑴传值与传址(本章难点一):
传值(ByVal):
传递参数值而不是传递它的地址,因而在通用过程中对形参的任何操作都不会影响实参。
传址(ByRef或什么都不加):
把实参变量的内存地址传递给过程,即形参与实参使用相同的内存地址单元,这样通过过程就可以改变变量本身的值。
实参必须是变量,不能采用常量或表达式。
⑵返回值的获得:
Sub过程并不返回任何值,即不存在如:
y=sub(x,y)之类的代码。
sub(x,y)自身是没有任何值的,也就不能通过它为y进行赋值。
Function过程能返回一个值,即存在如:
y=Function(x,y)之类的代码。
Function(x,y)通过对Function过程的调用,自身获得一个值,因此能通过它为y赋值。
选择Function还是Sub过程:
当程序需要通过调用过程得到一个结果,并将这个结果传给一个变量时,选择Function过程比较直接。
当然,也可以选择Sub过程,当需要定义多一个变量作为参数,将需要的结果传给这个额外的参数,再通过这个参数传给变量。
当所需要的结果只是参数的值时(一般是传址过程),两种几乎没区别。
请看下面的例子,用两种过程实现求一个数的立方。
对比:
DimaAsInteger,bAsInteger
a=InputBox("
请输入一个数字"
)
b=sq(a)
Printb
PrivateFunctionsq(xAsInteger)AsInteger
sq=x^3
EndFunction
用Function过程实现。
注意Function过程的定义。
例子中通过它对b赋值。
注意此时的参数只有一个,即是a。
Callsq(a,b)
Printb
PrivateSubsq(xAsInteger,yAsInteger)
y=x^3
用Sub过程实现。
注意Sub过程的调用使用了Call语句。
而且使用了两个参数,其中b是用来储存所得的结果,即x的立方的。
仍是用Sub过程。
但只用了一个参数。
因为所得的结果在Sub过程中已经打印出来了。
(此时是通过定义变量y来存储结果的)。
不需再将结果传给主过程,然后再打印。
但这种方法并非所有的Sub过程都可行。
注意考虑程序的需要
Callsq(a)
PrivateSubsq(xAsInteger)
DimyAsInteger
Printy
在这个例子中用Sub过程实现的方法有好几种,请看下面,注意比较:
x=x^3
Printx
也只用了一个参数。
但与上种方法不同的是,Sub过程并不再定义额外的变量y,而是直接用原来的参数x来存储它自身的立方。
这样做前提是,程序后来并不再需要参数x原来的值。
这也算是一种特例,慎重使用。
Printa
仍是Sub过程。
也只是用了一个参数。
这种方法与上种方法类似。
区别在于,程序仍将结果传回主过程,只是通过原来的参数x来传递,并没再定义一个参数y。
前提也是程序后来不再需要x原来的值。
这也是一种特例,慎重使用。
但是如果程序的要求是如下的话,那么方法1,2,3均是不可行的。