第5讲-过程(4学时)_第1页
第5讲-过程(4学时)_第2页
第5讲-过程(4学时)_第3页
第5讲-过程(4学时)_第4页
第5讲-过程(4学时)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2013年3月等级考试辅导

二级VisualBasic授课教师:岳静Tel-Mail:qiuqiuyj@163.com第六讲过程Sub过程2变量作用域1Function过程3数组参数4对象参数5P120局部变量和全局变量名称作用域声明位置使用语句局部变量过程过程中Dim或Static模块变量窗体模块或标准模块模块的通用声明段Dim或Private全局变量整个应用程序标准模块的声明部分Public或Global定义在过程中的静态变量(static)在每次执行该过程时会保留上次执行的结果2006年9月33题以下叙述中错误的是A)语句“Dima,bAsInteger”声明了两个整型变量B)不能在标准模块中定义Static型变量C)窗体层变量必须先声明,后使用D)在事件过程或通用过程内定义的变量是局部变量√2004年9月第8题

在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:

PrivateSubCommand1_Click()

StaticxAsInteger

Cls

Fori=1To2

y=y+x

x=x+2

Next

Printx,y

EndSub

程序运行后,连续三次单击Command1按钮后,窗体上显示的是

A)42C)1230D)46B)12182002年9月26题在窗体上画一个名称为Commandl的命令按钮,然后编写如下程序:

PrivateSubCommand1_Click()

StaticXAsInteger

StaticYAsInteger

Cls

Y=1

Y=Y+5

X=5+X

PrintX,Y

EndSub

程序运行时,三次单击命令按钮Commandl后,窗体上显示的结果为

A)1516C)1515D)56B)156考点3Function过程[Static][Private|Public]Function

过程名([参数])[As数据类型]

语句块

[过程名=表达式][ExitFunction][语句块]EndFunction编写1个函数实现素数求解第一步:确定形式参数。Functionfun(xAsInteger)AsBoolean第二步:编写素数算法Functionfun(xAsInteger)AsBooleanFori=2Tox-1IfxModi=0ThenExitForEndIfNextiIfi>x-1Then'是素数

Else'不是素数

EndIfEndFunction第三步:编写代码“过程名=表达式”,确定返回值函数过程fun=True'是素数fun=False'不是素数考点3Function过程说明:(1)调用Sub过程相当于执行一个语句,不直接返回值;调用Function过程要返回一个值,因此可以像内部函数一样在表达式中使用。(2)过程定义不可嵌套,因而不能在事件过程中定义通用过程,但可在事件过程内调用通用过程。在按钮单击事件中调用前例中编写的Fun过程。PrivateSubCommand1_Click()DimxAsIntegerx=Val(InputBox("请输入要判断的数"))

Iffun(x)=True

ThenPrintx;"是素数"ElsePrintx;"不是素数"EndIfEndSub过程不可嵌套定义、但可嵌套调用

真题P137-21P138-49上机真题【例】捷成36-4P121考点1Sub过程一、建立Sub过程[Static][Private|Public]Sub过程名([参数表])

语句块

[ExitSub]

[语句块]EndSubPrivateSubabc(xAsInteger)IfSgn(x)=1ThenMsgBox"输入的是正数"ElseIfSgn(x)=-1ThenMsgBox"输入的是负数"ElseMsgBox"输入的0"EndIfEndSub子程序过程调用Sub过程1.用Call语句调用Sub过程

Call过程名[(实际参数)]

2.把过程名作为一个语句来使用

过程名实际参数与第一种方式相比,它有两点不同:(1)去掉关键字Call;(2)去掉"实际参数"的括号。PrivateSubCommand1_Click()DimaAsIntegera=InputBox("entera")

Callabc(a)EndSubPrivateSubabc(xAsInteger)IfSgn(x)=1ThenMsgBox"输入的是正数"ElseIfSgn(x)=-1ThenMsgBox"输入的是负数"ElseMsgBox"输入的0"EndIfEndSubPrivateSubCommand1_Click()DimaAsIntegera=InputBox("entera")

abca

EndSubPrivateSubabc(xAsInteger)IfSgn(x)=1ThenMsgBox"输入的是正数"ElseIfSgn(x)=-1ThenMsgBox"输入的是负数"ElseMsgBox"输入的0"EndIfEndSub通用过程只有通过事件过程调用才能被执行(2007年9月选择题第30题)

下面程序的输出结果是________。

Private

Sub

Command1_Click()

ch$=”ABCDEF”

proc

ch

Print

ch

End

Sub

Private

Sub

proc(ch

As

String)

s=""

For

k=Len(ch)

To

1

Step-1

s=s&Mid(ch,k,1)

Next

k

ch=s

End

Sub

(A)ABCDEF

(C)A

(D)F(B)FEDCBA上机教程P103-真题8.1【例】捷成37-5程序运行后,如果单击“读入数据”按钮,则调用题目所提供的ReadData1和ReadData2的过程读入datain1.txt和datain2.txt文件中的各20个整数,分别放入Arr1和Arr2两个数组中;如果单击“计算”按钮,则把两个数组中对应下标的元素相减,其结果放入第三个数组中(即:第一个数组的第n个元素减去第二个数组的第n个元素,其结果作为第三个数组的第n个元素。这里的n为1、2、…、20),最后计算第三个数组各元素之和,把所求得的和在窗体上显示出来;并调用题目中给出的WriteData过程将所得的和存入考生文件夹下的dataout.txt文件中。P126考点4参数传送一、参数传递PrivateSubCommand1_Click()DimaAsSingleDimbAsSinglea=InputBox("entera")b=InputBox("enterb")s=xiebian(a,b)PrintsEndSubPrivateFunctionxiebian(b1AsSingle,b2AsSingle)AsSinglexiebian=(b1^2+b2^2)^(1/2)EndFunction形参实参传地址:实参为变量名或数组、形参ByRef声明传值:实参为常量或表达式、形参ByVal声明4de(传地址)6a=1:b=2:c=3:d=4Calltest1(a,b,c,d)Printa;b;c;d…PrivateSubtest1(b%,c%,d%,e%)e=b+c+dEndSub‘1236内存单元传地址ByRef传地址调用:形参改变,实参发生对应变化形参和实参类型必须一致2004年9月22题在窗体上画一个名称为Command1的命令按钮,并编写如下程序:

PrivateSubCommand1_Click()

DimxAsInteger

StaticyAsInteger

x=10

y=5

Callf1(x,y)

Printx,y

EndSub

PrivateSubf1(ByRefx1AsInteger,y1AsInteger)

x1=x1+2

y1=y1+2

EndSub

程序运行后,单击命令按钮,在窗体上显示的内容是

A)105B)125C)107D)127

(2006年4月选择题第25题)在窗体上画1个命令按钮,其名称为Commandl,然后编写如下程序:PrivateSubCommand1_Click()Dima(10)AsIntegerDimxAsIntegerFori=lTo10a(i)=8+iNextx=2Printa(f(x)+x)EndSubFunctionf(xAsInteger)x=x+3f=xEndFunction程序运行后,单击命令按钮,输出结果为________。(A)12(B)l5(C)17(D)18a=1:b=2:c=3:d=4Calltest2(a,b,c,d)Printa;b;c;d…PrivateSubtest2(b%,c%,d%,ByVale%)e=b+c+d EndSub‘1234e(传值)d446内存单元传值ByVal传值调用:形参改变,不影响实参(2005年4月选择题29题)

在窗体上画一个名称为Command1的命令按钮,然后编写如下通用过程和命令按钮的事件过程:

PrivateFunctionfun(ByValmAsInteger)

IfmMod2=0Then

fun=2

Else

fun=1

EndIfEndFunctionPrivateSubCommand1_Click()

DimiAsInteger,sAsInteger

s=0

Fori=1To5

s=s+fun(i)

Next

PrintsEndSub程序运行后,单击命令按钮,在窗体上显示的是_____。

(A)6(B)7(C)8(D)92003年9月23题

设有如下通用过程:

PublicFunctionf(xAsInteger)

DimyAsInteger

x=20

y=2

f=x*y

EndFunction

在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:

PrivateSubCommand1_Click()

StaticxAsInteger

x=10

y=5

y=f(x)

Printx;y

EndSub程序运行后,如果单击命令按钮,则在窗体上显示的内容是A)105B)205D)1040C)2040上机真题【例】捷成21-5P127数组参数用数组作为过程的参数时,应在数组名的后面加上一对括号。

1、要把整个数组作参数传递给过程,形参与实参都要使用数组名,但要省略数组的上下界,且保留括号;

2、整个数组作参数传递时,只能传地址;

3、单个数组元素作参数传递给过程时,实参要指明元素的下标;

4、在过程中可以使用LBound()和UBound()函数来确定数组的上下界。(2006年9月选择题第26题)SubsubP(b()AsInteger) Fori=1To4b(i)=2*i NextiEndSubPrivateSubCommand1_Click() Dima(1To4)AsInteger a(1)=5 a(2)=6 a(3)=7 a(4)=8 subPa() Fori=1To4Printa(i) NextiEndSub(A)2(B)5 (C)10(D)出错

4 6 126 7 148 8 16√(2003年9月选择题第24题)

设有如下通用过程:

PublicSubFun(a(),ByValxAsInteger)

Fori=1To5

x=x+a(i)

Next

EndSub

在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下的事件过程:

PrivateSubCommand1_Click()

Dimarr(5)AsVariantFori=1To5

arr(i)=i

Next

n=10

CallFun(arr(),n)

Text1.Text=n

EndSub

程序运行后,单击命令按钮,则在文本框中显示的内容是________。(A)10(B)15(C)25(D)24P63-上机真题6.2【例】捷成29-4

上机真题8.4【例】捷成26-4数组作为过程参数形参:数组名(),括号不可省,括号内不带下标;实参:可以是数组名或数组名(),若带括号,不带下标。上机真题【例】捷成33-3P129可选参数和可变参数可选参数

在过程的形参列表中加入Optional关键字,就可以指定过程的参数为可选的。如果指定了可选参数,则参数表中此参数后面的其它参数也必是可选的,并且要用Optional关键字来声明。

例:求两个或三个数的和的函数过程。PublicFunctionmysum(firstAsInteger,secondAsLong,Optionalthird)mysum=first+secondIfNotIsMissing(third)Thenmysum=mysum+thirdEndFunctionPrivateSubCommand1_Click()DimaAsInteger,bAsLong,cAsDoubleDimsumAsIntegera=10:b=20Sum=mysum(a,b)Print"sum=";Suma=10:b=20:c=30Sum=mysum(a,b,c)Print"sum=";SumEndSubIsMissing()——检测可选参数是否被省略P129可选参数和可变参数P130考点5对象参数

对象作为参数的格式为:

Sub过程名(形参表)语句块[ExitSub]

……

EndSub"形参表"中形参的类型通常为Control或Form。注意,在调用含有对象的过程时,对象只能通过传地址方式传送。因此在定义过程时,不能在其参数前加关键字ByVal。P130-考点6对象参数一、窗体参数当形参表中的形参的类型为Form时,是把窗体作为函数的参数,它通常用在对一批窗体进行相同的属性设置。二、控件参数当形参表中的形参的类型为Control时,是把控件作为函数的参数,它通常用在对一批控件进行相同的属性设置。(2004年9月选择题第21题)设一个工程由两个窗体组成,其名称分别为Form1和Form2,在Form1上有一个名称为Command1的命令按钮。窗体Form1的程序代码如下:PrivateSubCommand1_Click()

DimaAsInteger

a=10

Callg(Form2,a)EndSubPrivateSubg(fAsForm,xAsInteger)

y=IIf(x>10,100,-100)

f.Show

f.Caption=yEndSub

运行以上程序,正确的结果是_____

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论