第6讲 过程.docx
- 文档编号:28867950
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:15
- 大小:19.50KB
第6讲 过程.docx
《第6讲 过程.docx》由会员分享,可在线阅读,更多相关《第6讲 过程.docx(15页珍藏版)》请在冰豆网上搜索。
第6讲过程
第6讲过程
6.1函数过程的定义和调用
函数过程的定义:
在窗体、模块等的代码窗口把插入点放在所有现有过程之外,直接输入函数过程。
定义函数过程的形式如下:
[Public|Private]Function函数过程名(形式参数)[As类型]
变量声明
语句块
函数名=表达式或Return表达式
EndFunction
vPublic全局函数过程,可被任何模块调用
vPrivate仅供本模块中的其它过程调用
v形式参数(或称哑元)只能是变量或数组名(),仅表示参数的个数、类型,无具体值。
函数过程的调用:
调用形式函数过程名([参数列表])
参数列表(称为实参或实元):
必须与形参个数相同,位置与类型一一对应。
可以是同类型的常量、变量、表达式。
当无形参时省略括号。
6.2子过程的定义和调用
子过程的定义:
子过程定义形式如下:
Sub子过程名[(参数列表)]
局部变量或常数定义
语句
[ExitSub]
语句
EndSub
子过程调用:
子过程的调用是一句独立的调用语句,有两种形式:
Call子过程名[(实参列表)]
子过程名[实参列表]
用Call关键字时,若有实参,则实参必须用圆括号括起,无实参圆括号省略。
注意:
若实参要获得子过程的返回值,则实参只能是变量(简单变量、数组名、结构类型)。
不能是常量、表达式,也不能是控件名。
子过程与函数过程的区别、参数问题
⏹使用函数过程还是子过程,没有严格的规定。
一般只有一个返回值时,函数过程直观;当有多个返回值时,习惯用子过程。
⏹函数过程必须有返回值,函数名有类型。
子过程名没有值,过程名没有类型,不能在子过程体内对子过程名赋值。
⏹形参是过程与主调程序交互的接口,从主调用程序中获得初值,或将计算结果返回给主调用程序。
⏹形参没有具体的值,只代表了参数的个数、位置、类型;只能允许是简单变量、数组名。
6.3参数传递
6.3.1形参与实参
在参数传递中,是按位置传送,按实参的位置次序与形参的位置次序对应传送,与参数名没有关系。
6.3.2传址与传值
实参与形参的结合有传址和传值两种方法。
传值(ByVal)方式参数结合过程;传值是将实参的值复制给形参,实参与形参断开了联系。
对形参的任何操作不会影响到实参(形参变实参不会发生变化)。
在过程调用中不希望过程修改实参的值,则选用传值方式。
传值是在要传值的形参前加ByVal或用一对圆括号把实参括起来。
SubFact(ByValx,y)在形参前加ByVal
CallFact(m,(n))实参被圆括号括起
传址(ByRef)方式参数结合过程;传址(系统默认方式)是将实参的地址传递给形参。
因此在被调过程体中对形参的任何操作都变成了对相应实参的操作,实参的值会随形参的改变而改变(形参变实参也随之发生变化)。
要将被调过程中的结果返回给主调程序,则形参必须是传址方式。
此时,实参必须是变量名(包括简单变量、数组名、结构类型等),不能是常量、表达式。
6.3.3数组参数的传递
数组一般都为地址传递(也可使用值传递方式)。
v形参是数组,只需要以数组名和圆括号(可省略)表示,不要给出维数的上界。
v当实参是数组时,要给出数组名和圆括号(圆括号可省略)。
v在过程中通过LBound和UBound函数确定数组的下界和上界。
v当形参是数组且加了圆括号,则形参的类型必须与实参一致。
例如:
Dima(100)AsString
CallQwe(a,n)数组a声明为字符型
SubQwe(b()Asstring,m)
6.5过程的作用域
模块级(窗体级):
过程名前加Private,能被本模块其他过程调用,但不能被其它模块调用。
全局级(工程级):
●在代码窗口中的过程名前加Pubilc或默认,能被应用程序的其它模块调用。
但必须在过程名前加窗体名。
例:
Call窗体名.过程名(实参表)
●在模块中的过程名前加Pubilc能被应用程序的其它模块调用。
与过程相关的上机试题:
Gc372.frm、gc562.frm、tk315.frm、tk335.frm、tk372.frm、tk640.frm、tk692.frm
过程选择题
1.如果在定义SUB过程时没有使用Private、Public和Static关键字,则所定义的过程是(B)。
A.公有的B.私有的
C.静态的D.可能是公有的,也可能是私有的
2.以下对VB的SUB过程的有关描述中,正确的是(C)。
A.调用子过程时,只能把实参的值传送给形参,形参的值不能传送给实参
B.子过程既可以嵌套定义,又可以递归调用
C.子过程有返回值
D.具有调用关系的所有过程必须放在同一模块中
3.下列Sub1子过程的各个语句中,正确的是(D)。
①PrivateSubSub1(a()AsString)
②PrivateSubSub1(a(1To10)AsString*8)
③PrivateSubSub1(sAsString)
④PrivateSubSub1(sAsString*8)
S()asstring*8可以
A.①②③④B.①②③C.①③④D.①③
4.以下有关过程中形式参数的描述中,错误的是(B)。
A.函数过程可以没有形式参数
B.事件过程一定没有形式参数
C.形参数组只能按地址与实参数组结合
D.窗体与控件也可以作为过程的参数
5.在窗体上有一个名称为Text1的文本框和一个名称为Command1的命令按钮,执行如下事件过程。
根据题意,在()处选择正确答案。
PublicSubFun(a(),ByValxAsInteger)
Fori=1To5
x=x+a(i)
Nexti
EndSub
PrivateSubCommand1_Click()
Dimarr(5)AsVariant
Fori=1To5
arr(i)=i
Nexti
n=10
CallFun((1B),n)
Text1.Text=n
EndSub
程序运行后,单击命令按钮,在文本框中显示的是(2A)。
(1)A.a()B.arr()C.arr(5)D.arr(i)
(2)A.10B.15C.25D.24
6.在窗体上画一个命令按钮,其名为Command1,要求给X和Y赋值,如果X和Y均小于10,则求积,否则求和。
在()处选择正确的答案将程序补充完整。
FunctionSS(XAsInteger,YAsInteger,ZAsInteger)
IfX<10AndY<10Then
Z=(1A)
Else
Z=(2C)
EndIf
SS=Z
EndFunction
PrivateSubCommand1_Click()
DimXAsInteger,YAsInteger,ZAsInteger
X=3:
Y=4:
Z=0
R=SS(X,Y,Z)
Print(3B)
EndSub
(1)A.X*YB.X-YC.X+YD.XY
(2)A.X*YB.X-YC.X+YD.XY
(3)A.ZB.RC.SSD.XY
7.设窗体上命令按钮Command1,其Click事件过程调用一个通用过程,计算并输出区间[1250,3750]内所有素数和。
请在()处选择正确的答案将程序补充完整。
PrivateSubCommand1_Click()
Fora%=(1B)
(2D)
Iff=(3B)Thens=s+a
Nexta
Print"s=";s
EndSub
PrivateSubSuShu(xAsInteger,Flag)
Flag=0
Fori=2ToSqr(x)
IfxModi=0ThenFlag=(4C):
(5B)
Nexti
EndSub
(1)A.1249To3571B.1250To3570
C.1251To3569D.1251To3570
(2)A.sushux,fB.sushua,flag
C.sushux,flagD.sushua,f
(3)A.-1B.0C.1D.2
(4)A.-1B.0C.1D.2
(5)A.ExitB.ExitForC.ExitNextD.EndFor
9.下面程序的功能是,用自定义过程来计算N!
,并从窗体中依次显示出该阶乘的值。
请在()处选择正确答案将程序补充完整。
PrivateSubForm_Click()
Dimi%,n%,f!
Comb!
mstr$
mstr=”计算N!
”
n=inputbox(“请输入n”,mstr)
call(1A)
comb=(2D)
printn;”!
=”;comb
EndSub
Subfac(n,f)
f=1
Fori=1ton
F=(3C)
Nexti
EndSub
(1)A.fac(n,f)B.Facn,fC.facD.facnandfacf
(2)A.comb+fB.comb*fC.f+fD.f
(3)A.fB.f+fC.f*iD.f*f
10.有一个如下的Function过程,此过程的功能是(D)。
FunctionResult(n)
t=0
Fori=1Ton
t=t+i
Nexti
Result=t
EndFunction
A.计算n!
B.计算0*1+1*2+2*3+…+(n-1)*n
C.计算0*1*2*3…*nD.计算1+2+3+…+n
13.程序运行后,单击命令按钮,输出结果为(B)。
PrivateFunctionP(NAsInteger)
Fori=1ToN
SUM=SUM+1
Nexti
P=SUM
EndFunction
PrivateSubCommand1_Click()
S=P
(1)+P
(2)+P(3)+P(4)
PrintS;
EndSub
A.9B.10C.11D.12
14.程序运行后,单击命令按钮,在输入对话框中输入“234”,输出结果为(C)。
Functionfun(ByValnumAsLong)AsLong
DimkAsLong
k=1
num=Abs(num)
DoWhilenum
k=k*(numMod10)
num=num\10
Loop
fun=k
EndFunction
PrivateSubCommand1_Click()
DimnAsLong
DimrAsLong
n=InputBox("请输入一个数")
n=CLng(n)
r=fun(n)
Printr
EndSub
A.234B.23C.24D.25
15.程序运行后,单击命令按钮,输出结果为(B)。
Subinc(aAsInteger)
StaticxAsInteger
x=x+a
Printx;
EndSub
PrivateSubCommand1_Click()
inc2
inc3
inc4
EndSub
A.234B.259C.432D.952
16.程序运行后,单击命令按钮,输出结果为(C)。
SubSS(ByValX,ByRefY,Z)
X=X+1
Y=Y+1
Z=Z+1
EndSub
PrivateSubCommand1_Click()
A=1
B=2
C=3
CallSS(A,B,C)
PrintA;B;C
EndSub
A.123B.234C.134D.345
17.程序运行后,单击命令按钮,输出结果为(C)。
Functiongys(ByValxAsInteger,ByValyAsInteger)AsInteger
DoWhiley<>0
reminder=x/y
x=y
y=reminder
Loop
gys=x
EndFunction
PrivateSubCommand1_Click()
DimaAsInteger
DimbAsInteger
a=10:
b=2
x=gys(a,b)
Printx
EndSub
A.10B.2C.5D.2
18.单击命令按钮时,下列程序代码的执行结果为(B)。
PublicFunctionFunc(mAsInteger,nAsInteger)AsInteger
DoWhilem<>n
DoWhilem>n
m=m-n
Loop
DoWhilem n=n-m Loop Loop Func=m EndFunction PrivateSubCommand1_Click() PrintFunc(24,18) EndSub A.24B.6C.18D.-6 19.程序运行后,单击命令按钮,输出结果为(C)。 FunctionF(aAsInteger) b=0 Staticc b=b+1 c=c+1 f=a+b+c EndFunction PrivateSubCommandl_Click() DimaAsInteger a=2 Fori=1To3 PrintF(a), Nexti EndSub A.234B.345C.456D.567 20.程序运行后,单击命令按钮,输出结果为(C)。 SubsubP(b()AsInteger) Fori=1To4 b(i)=2*i Nexti EndSub PrivateSubCommandl_Click() Dima(1To4)AsInteger a (1)=5 a (2)=6 a(3)=7 a(4)=8 subPa() Fori=1To4 Printa(i); Nexti EndSub A.5678B.1357C.2468D.10121416 21.程序运行后,单击命令按钮,输出结果为(C)。 FunctionFunc(aAsInteger,bAsInteger)AsInteger StaticmAsInteger,IAsInteger m=0: I=2 I=I+m+1 m=I+a+b Func=m EndFunction PrivateSubCommand1_Click() DimkAsInteger,mAsInteger DimpAsInteger k=4: m=1 P=Func(k,m) Printp EndSub A.6B.7C.8D.9 22.程序运行后,单击命令按钮,若输入数据5,则输出结果为(D)。 functionfact(xasinteger)aslong dimpaslong,Iasinteger p=1 forI=1tox p=p*I nextI fact=p endfunction PrivateSubCommand1_Click() I=Val(InputBox("请输入数据")) a=fact((I)) Printa EndSub A.0B.1C.24D.120 23.程序运行后,单击命令按钮,输出结果为(B)。 SubS(xAsSingle,yAsSingle) t=x x=t*y y=t/y EndSub PrivateSubCommandl_Click() DimaAsSingle DimbAsSingle a=5 b=4 Sa,b Printa;b EndSub A.101.25B.201.25C.201D.202
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6讲 过程