VB复习资料.docx

上传人:b****4 文档编号:11912329 上传时间:2023-04-16 格式:DOCX 页数:32 大小:48.03KB
下载 相关 举报
VB复习资料.docx_第1页
第1页 / 共32页
VB复习资料.docx_第2页
第2页 / 共32页
VB复习资料.docx_第3页
第3页 / 共32页
VB复习资料.docx_第4页
第4页 / 共32页
VB复习资料.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

VB复习资料.docx

《VB复习资料.docx》由会员分享,可在线阅读,更多相关《VB复习资料.docx(32页珍藏版)》请在冰豆网上搜索。

VB复习资料.docx

VB复习资料

复习

一、Windows的基本操作

1、新建文件夹和子文件夹

2、复制、剪切、粘贴文件(按大小,后缀,名称,修改日期)

3、删除文件

4、修改文件的属性

5、创建快捷方式

二、VB的语言基础

1、VB程序的书写规则

1)VB代码不区分字母大小写

2)同一行上可以书写多句语句,语句间用冒号“:

”分隔

3)单行语句也可以分在多行书写,在本行后加入续行符(空格和下划线”_”)

4)注释是以Rem开头或用撇号”’”引导,是对程序的解释,不会运行该程序。

2、VB提供的数据类型

1)字符串(String,$):

字符序列,由放在一对双引号中的Ascii字符(除双引号和回车符外),汉字和可打印字符。

如:

“abc”,“2+3”,“中国”,“200”,“$2000”

注意:

在字符串中是区分字母的大小写的。

2)数值型:

整型(Integer%),长整型(Long,&),单精度(Single,!

),双精度(Double,#),货币型(Currency,@)

3)逻辑型,布尔型(Boolean):

TrueFalse

4)日期型(Date):

Date、Time、Now

5)变体型(Variant)

6)自定义类型

形式如下:

Type自定义类型名

元素名[(下标)]As类型名

……

[元素名[(下标)]As类型名]

EndType

Eg:

TypeStu

XuehAsString

XingmAsString

AgeAsInteger

EndType

DimaAsStu

a.Xueh=”20001001”

a.Xingm=”小李”

a.Age=19

3、变量和常量

计算机在处理数据时,必须将其装入内存,则需要将存放数据的内存单元命名,通过内存单元名来访问其中数据。

命名了的内存单元就是变量或常量。

常量是在运行中数值一直保持不变,变量是在运行中数值可以不断变化的。

1)变量或常量的命名规则:

①必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度小于等于255个字符

②不能使用VB中的关键字

③VB中不区分变量名的大小写

④变量名最后一个字母可以是类型说明符

Eg:

下列变量名哪些是正确的:

n,print_65名称ab#3xAbs85∏A%Bmyname

2)变量声明

形式如下:

Dim变量名[As类型]为了方便定义,可在变量名后加类型符来代替As类型。

Eg:

DimaASInteger等同于Dima%

3)常量

形式如下:

Const常量名[As类型]=表达式

Eg:

ConstPI=3.1415926

4、运算符及优先级

1)算术运算符:

^(n次方)、-(取负)、*(乘以)、/(除以)、\(整除,取整数部分)、Mod(取余数)、+(相加)、-(减)·····由高到低

2)字符运算符+或&同级

3)关系运算符:

=(等于)、>()大于、>=(大于等于)、<(小于)、<=(小于等于)、<>(不等于)、Is、Like同级

4)逻辑运算符:

Not(非)And(与)Or(或)Xor(异或)EqvImp由高到低

5、表达式书写及值类型:

1)书写规则:

1从左到右同一行书写

例:

→(a+b)/(c*d)

2表达式中的运算符可以用圆括号括起,以改变运算的优先级;圆括号可以多个,但一定要配对,同时不能使用花括号和方括号

注意:

①乘号“*”一定不能省略,也不能用“.”代替例:

2y要写成2*y,不能为2•y

②逻辑表达式书写问题a<=x

2)表达式值的类型

在表达式中其运算是按照运算的优先级别的先后顺序对表达式求值。

若出现不同的数据类型,则向精度高的数据类型转换。

Eg:

①16*7\3=37(16乘7整除3)

②25\3mod3.2*int(2.5)=8(不会做)

③“abcd”+“1234”=abcd1234

4a=5,b=-3,c=-2

求a>bora>candb>c的值《我》

6、常用函数

1)取整函数:

IntFixRound(四舍五入函数)

2)类型转换函数:

AscChrValStr

3)数学函数:

AbsSgnSqr

4)字符串函数

1删除空白字符函数:

LtrimRtrimTrim

2字符串截取函数:

Left(s,n)Right(s,n)Mid(s,I,n)

3字符串长度测试函数:

LenLenB

4字符串匹配函数:

Instr([f,],s1,s2[,n])

5字母大小写转换函数:

UcaseLcase

6StringSpace

7替代字符串语句:

Mid(s,p,n)=s1

5)随机函数:

Rnd产生在某一范围内如[a,b]的随机整数:

Int(Rnd*[a-b])+a

三、VB的三大结构

(一)顺序结构

1、赋值语句

语句形式如下:

变量名=表达式

作用是将右边表达式的值赋给左边的变量名。

一次只能给一个变量赋值。

2、与用户交互函数和过程

1)InputBox函数

函数形式:

InputBox(提示[,标题][,缺省][,x坐标位置][,y坐标位置])

其函数返回值是字符型数值

例:

弹出一个对话框要求输入一个字符串

a=InputBox(“请输入字符串:

”)

2)MsgBox函数和MsgBox语句

函数形式:

变量=MsgBox(提示[,按钮][,标题])返回一个所选按钮的整数值

语句形式:

MsgBox提示[,按钮][,标题]没有返回值

MsgBox”Hello!

TodayIs”&Date

(二)选择结构

1、单边IF语句的两种格式和使用

1)If<.表达式>Then

<语句块>2)If<表达式>Then<语句块>

EndIf

表达式可以是任何表达式,按表达式的值非0为True,0为False

多行的If必须与EndIf配对;单行格式没有EndIf关键字。

2、双边IF语句的两种格式和使用

1)If<.表达式>Then

<语句块1>

Else2)If<表达式>Then<.语句1>Else<语句2>

<语句块2>

EndIf

3、多边IF语句的格式和使用

If<.表达式1>Then

<语句块1>

ElseIf<表达式2>Then

<语句块2>

……

[Else

<语句块n+1>]

EndIf

ElseIf之间不能有空格。

4、IF语句的嵌套和使用

If<.表达式1>Then

If<表达式11>Then

EndIf

……

EndIf

区分嵌套的层次方法,每个EndIf与它上面最接近的If配对。

Eg:

1)下列程序段运行后显示的结果是______

DimX

IfxThenPrintxElsePrintx+1

2)语句Ifx=1Theny=1中的x=1和y=1分别代表__________

3)下列程序段,显示的结果是_______

DimX

X=Int(Rnd)+5

SelectCasex

Case6

Print“优秀”

Case5

Print“良好”

Case4

Print“及格”

CaseElse

Print“不及格”

EndSelect

5、情况语句SelectCase语句的格式和使用

格式:

SelectCase<变量或表达式>

Case<表达式列表1>

<语句块1>

Case<表达式列表2>

<语句块2>

[CaseElse

<语句块n+1>]

其中<变量或表达式>只能对单个变量进行多种情况的判断

<表达式列表i>中不能出现“变量或表达式”中出现的变量。

6、条件测试函数的形式和使用

IIf(<条件表达式>,当条件为True时的值,当条件为False时的值)

Choose(<数字类型变量>,值为1的返回值,值为2的返回值……)

Switch(<条件表达式1>,条件1为True时的值,[<条件表达式2>,条件2为True时的值。

])

在多个条件表达式的表示时,应从最小或最大的条件依次表示,以避免条件的过滤。

在多分支结构中,尽管条件很多,但程序运行时,任何情况下最多只能执行到最先满足条件的那个分支,就完成此分支的执行,接下来执行EndIf或EndSelect语句的后继语句。

(三)循环语句

1、For…Next循环结构形式和使用

For<循环变量>=<初值>To<终值>[Step<步长>]

<循环体>

Next<循环变量>

说明:

1)该循环语句常用于已知循环次数的场合。

步长可正可负,可为整数,也可为实数。

2)循环次数:

n=int((终值–初值)/步长+1)

3)循环结束:

步长为正时,当循环控制变量>=终值;循环结束

步长为负时,当循环控制变量<=终值;循环结束

Eg:

1)要使下列循环执行20次,循环变量的初值应当是:

____

Fork=_______To–5Step–2

2)下列程序段打印出来图形:

ForI=1To5

ForJ=2ToI

Print“*”;

Nextj

Print

NextI

3)下列程序段双重循环共执行_______次,内循环执行_______次

Forj=1To12Step3

ForK=6To2Step–2

Printj,k

Nextk

Nextj

2、Do…Loop循环结构形式和使用

1)无条件循环2)当条件为真循环3)当条件为真不循环4)先循环再判断5)先循环再判断

DoDoWhie<.条件>DoUntil<.条件>DoDo

<循环体><循环体><循环体><循环体><循环体>

LoopLoopLoopLoopWhie<.条件>LoopUntil<.条件>

3、循环的嵌套及注意事项

循环体内又包含有循环结构,称为循环的嵌套或多重循环。

计算多重循环的循环次数由每一重循环次数的乘积。

外循环要包含有完整的内循环结构,不能交叉。

同样分支与循环混合嵌套时一定要注意分支结构要完整,或循环结构要完整。

Eg:

求水仙花数(所谓水仙花数是指一个3位数,其各自数字立方和等于该数字本身,例如,153就是一个水仙花数)

四、数组

1、数组的概念

1)数组的概念:

存放具有相同性质的一组数据,也就是数组中的数据必须是同一个类型和性质。

2)数组元素:

数组中的某一个数据项。

数组元素的使用同简单变量

2、静态数组的声明

Dim数组名([下界To]上界)As类型

此语句声明了数组名称,数组维数,数组大小,数组类型

注意:

下界和上界必须是常数,不能是变量或表达式;省略下界,默认为0,也可用OptionBase语句重新设置下界的值,下界《=上界

Eg:

1)下列数组定义中,哪个是正确的?

(实验讲义)

2)如下数组声明语句中,数组a包含元素的个数有_____

Dima(3,-2To2,5)

3)以下程序输出的结果是______

Dima()

A=Array(1,2,3,4,5,6,7)

ForI=Lbound(a)ToUbound(a)

A(i)=a(i)*a(I)

NextI

PrintA(I)

3、动态数组的声明

形式:

Dim数组名()

ReDim[Preserve]数组名([下界To]上界)

此时的上界和下界可以是赋了值的变量或表达式。

若有Preserve表示当改变原有数组最末尾的大小时,使用此关键字可以保持数组中原有的数据。

4、控件数组

相同类型的控件组成的数组(Name名称相同,共用同一段代码。

控件数组的建立:

在设计时的窗体上,通过对某控件的复制和粘贴操作,或者是使其Name名称相同;在程序运行时也可以通过Load方法实现。

控件数组元素由其Index属性值表示数组的下标。

5、数组的操作

1)数组元素的输入、输出

Array函数的使用:

Array函数可以方便地对数组整体赋值,此时只能声明Variant的变量或仅由括号括起来的动态数组。

赋值后的数组大小由赋值的个数决定。

在程序中可以使用UBounr和Lbound函数来决定数组的上界和下界。

2)求数组中的最大、最小元素及下标

3)求和、求平均值

4)排序(选择、冒泡)

5)查找

OptionBase1

Dima()AsInteger,n%,i%

'输入数组元素,并将其添加到列表框里

PrivateSubCommand1_Click()

List1.Clear'清空两列表框为输入作准备

List2.Clear

Command4.Enabled=False

n=InputBox("请输入数组元素的个数:

")

ReDima(n)'动态定义数组a

Fori=1Ton'用循环语句来输入数组的元素

a(i)=InputBox("请输入第"&i&"个元素:

")

List1.AddItema(i)

Next

Command2.Enabled=True

Command3.Enabled=True

Command1.Enabled=False

EndSub

 

'选择排序

PrivateSubCommand2_Click()

Fori=1Ton-1

Max=i

Forj=i+1Ton

Ifa(Max)

Nextj

t=a(i)

a(i)=a(Max)

a(Max)=t

Nexti

Fori=1Ton

List2.AddItema(i)

Next

Command1.Enabled=True

Command3.Enabled=False

Command4.Enabled=True

Command2.Enabled=False

EndSub

'冒泡排序

PrivateSubCommand3_Click()

'Fori=1Ton

Forj=1Ton-i

Ifa(j)

t=a(j+1)

a(j+1)=a(j)

a(j)=t

EndIf

Nextj

Nexti

Fori=1Ton

List2.AddItema(i)

Nexti

Command1.Enabled=True

Command3.Enabled=False

Command4.Enabled=True

Command2.Enabled=False

EndSub

 

PrivateSubCommand4_Click()'二分查找

DimMidAsInteger,Low%,High%,c%,m%

c=InputBox("请输入要查找的数字:

")

Low=LBound(a)

hight=UBound(a)

Do

Mid=(Low+hight)\2

Ifa(Mid)>cThen

Low=Mid+1

ElseIfa(Mid)=cThen

m=Mid

ExitDo

Else

hight=Mid-1

EndIf

LoopUntilLow>hight

Ifm=0Then

MsgBox"找不到"

Else

MsgBox"是第"+Str(m)+"个"

List2.Selected(m-1)=True

Command5.Enabled=True

EndIf

EndSub

PrivateSubCommand5_Click()'删除元素

Fori=mToUBound(a)-1

a(i)=a(i+1)

Nexti

List2.Clear

ReDimPreservea(UBound(a)-1)

Fori=LBound(a)ToUBound(a)

List2.AddItema(i)

Next

Command5.Enabled=False

EndSub

五、过程

1、过程的概念

VB的程序是由一个个过程构成的,除了VB系统提供了大量使用的内部函数过程和事件过程外,VB系统还允许用户根据各自的需要自定义过程。

使用过程的好处:

使程序简练、高效、便于程序的调试和维护。

2、两类过程定义与调用

1)子过程

定义形式:

Sub<子过程>[(形参表)]

………

EndSub

特点:

子过程名无值,无类型

调用形式:

Call<子过程名>[(实参表)]

<子过程名>[(实参表)]

特点:

独立的语句

在首句Sub前面还可加上表示过程作用域的标识符

Public:

表示该子过程可被应用程序(整个工程)的任意模块和过程调用

Private:

标识该子过程只能被本模块(文件)中的过程调用

2)函数过程

定义形式:

Function<函数过程>([形参表])

<函数过程名>=<表达式>

EndFunction

特点:

函数过程名有值、有类型、在过程体内至少赋值一次

调用形式:

<函数过程名>([实参表])

特点:

不能独立存在,必须参加表达式的运算。

Eg:

1)下面子过程说明合法的是:

A)Subf1(ByValn%())数组作为参数时,不能使用值传递

B)Subf1(n%)AsInteger子过程名无值也无类型

C)Functionf1%(f1%)函数名与形参名相同

D)Functionf1(Byvaln%)

3、参数传递

传值(ByVal):

将实参的具体值传递给形参(调用结束不能由形参将操作结果返回给实参)

传址(ByRef):

将实参在内存的地址传递给形参(即实参、形参共用内存内的“地址”)

Eg:

下面程序运行后显示的结果是

PublicSubF1(n%,Byvalm%)

n=nMod10

m=m\10

EndSub

PrivateSubCommand1_Click()

Dimx%,y%

X=12:

y=34

CallF1(x,y)

Printx,y

EndSub

注意:

若实参是数组、自定义类型、对象变量等,形参只能是地址传递。

4、变量的作用域

全局变量:

Public关键字开头的变量为全局变量,在整个工程中都有效。

窗体、模块级变量:

在通用声明段用Dim或Public关键字声明的变量,在该窗体或模块内有效(即窗体装入时分配该变量的存储空间,直到该窗体从内存卸掉,才回收该变量分配的存储空间)

局部变量:

在过程中声明的变量,在该过程调用时分配内存空间并初始化,过程调用结束,回收分配的空间。

(即调用一次,初始化一次,变量不保值)

Eg:

如下程序,运行的结果是

Dima%,b%,c%

PublicSubp1(x%,y%)

Dimc%

x=2*x:

y=y+2:

c=x+y

EndSub

PublicSubp2(x%,ByValy%)

Dimc%

x=2*x:

y=y+2:

c=x+y

EndSub

PrivateSubCommand1_Click()

a=2:

b=4:

c=6

Callp1(a,b)

Print"a=";a;"b=";b;"c=";c

Callp2(a,b)

Print"a=";a;"b=";b;"c=";c

EndSub

5、过程的递归调用

在调用一个子过程或函数过程中又调用自己,称为递归调用(递归过程)

Eg:

求阶乘n!

n!

=n*(n-1)!

阶乘n!

=n*(n-1)!

,写成如下形式:

fac(n)=0(n=1)

fac(n)=n*fac(n-1)(n>1)

PublicFunctionfac(nAsInteger)AsDouble

Ifn=1Then

fac=1

Else

fac=n*fac(n-1)

EndIf

EndFunction

PrivateSubCommand1_Click()

DimnAsInteger

n=Val(InputBox("输入n的值:

"))

Print"fac("+Str(n)+")=";fac(n)

EndSub

6、常用算法

1)穷举法:

把所有可能的值都验证一遍,若符合条件则有解

Eg:

已知某人的出生日乘以12和出生月份乘以31之和,求其出生日期

PrivateSubCommand1_Click()

Dimn%,ri%,yue%

n=InputBox("请把你的出生日乘以12,再把出生月份乘以31求出两数之和:

)")

Foryue=1To12

Forri=1To31

Ifri*12+yue*31=nThenMsgBox"我知道了!

你的生日是"+Str(yue)+"月"+Str(ri)+"日"

Nextri

Nextyue

EndSub

2)迭代(主要是用计算机解决数学中高次方程的近似求解问题):

迭代法是用一个初值x,通过迭代公式求得新值x1,若|x-x1|<€,则x1就是求得的根;否则用x1代替x重复迭代,直到达到精度。

所以迭代是通过循环来实现。

Eg:

实验讲义P26_6

PrivateSubCommand1_Click()

Consteps=0.000001

Dima!

a1!

a0!

a=InputBox("请输入a=")

a1=a

Do

a0=a1‘反复用新值代替旧值来迭代

a1=(a0+a/a0)/2

LoopUntilAbs(a1-a0)

Print"a^(1/2)=";a1

EndSub

3)求级数:

庄子:

一尺之锤,日取其半,万世不竭

1/2+1/2^2+...1/2^n+...=1

无穷级数。

它的项随n大而减小,但它的和为1。

另一个级数:

1/2+1/3+1/4+...+1/n+...

虽然项也是越来越小,但只要n取得适当,可大于任何预定的数m。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1