07秋理科VB考前辅导4.docx
- 文档编号:9390338
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:11
- 大小:17.29KB
07秋理科VB考前辅导4.docx
《07秋理科VB考前辅导4.docx》由会员分享,可在线阅读,更多相关《07秋理科VB考前辅导4.docx(11页珍藏版)》请在冰豆网上搜索。
07秋理科VB考前辅导4
自定义过程的定义
//无参数过程
Privatesubprintstr()
DimIasbyte
ForI=1to5
Print“helloworld”
next
Endsub
//有参数过程
Privatesubprintstr(nasineger)
DimIasbyte
ForI=1ton
Print“helloworld”
next
Endsub
参数的作用:
实现主调过程与被调过程的数据传递
过程的调用(以调用第二个过程为例)
Privatesubform_Click()
Printstr5
Callprintstr(5)
Endsub
过程调用的执行流程讲解
试题讲解:
调试34
另外:
事件过程也可以被调用,举例说明
自定义过程的编写练习
练习1:
编写一个打印n层*金字塔的自定义过程
自定义函数的定义
定义格式:
privatefunction<函数名>(参数表)as<函数返回值类型>
<函数体>
<函数名>=<表达式>
endfunction
定义举例:
privateFunctionnFact(nasbyte)aslong
forkasbyte,tempasLong
temp=1
fork=1ton
temp=temp*k
nextk
nFact=temp
endfunction
函数调用格式
s=nfact(5)*3
printnfact(5)
试题讲解:
调试35、调试36、调试37、调试38
函数定义举例
十进制到二进制
参数的传递规则:
分按值传递(byVal)和按地址传递(byRef)两种。
Privatesubchg1(byvalnasbyte)
n=n+2
Endsub
privatesubchg2(byRefnasbyte)
n=n+2
endsub
privatesubform_Click()
dimkasbyte
k=2:
chg1(k):
printk
callchg2(k):
printk
endsub
参数的传递规则考点训练
练习1:
PrivateSubForm_Click()
DimaAsByte,bAsByte
a=1:
b=2
CallProc1(a,b)
Printa,b
EndSub
PrivateSubProc1(cAsByte,dAsByte)
DimaAsByte,bAsByte
c=a+b:
d=a-b
Printc,d
EndSub
练习二:
PrivateFunctionchg(aAsByte,byvalbasbyte)AsByte
Dimnasbyte
b=b+1
Forn=0to2
a=a+b
Nextn
Chg=a
EndFunction
PrivateSubform_click()
Dimaasbyte,basbyte,zasbyte,nasbyte
a=1:
b=1
forn=1to3
z=chg(a,b)+b
print“a=”;a,”z=”;z
nextn
EndSub
练习三:
PrivateSubCommand1_Click()
DimxAsbyte,yAsbyte
DimnAsbyte,zAsbyte
x=1:
y=1
Forn=1To6
z=f(x,y)
Printn,z
Nextn
EndSub
PrivateFunctionf(xAsbyte,yAsbyte)Asbyte‘
(1)
DimnAsbyte
DoWhilen<4
x=x+y
n=n+1
Loop
f=x
EndFunction
请写出单击按钮command1后,在窗体上显示的内容。
若将
(1)改为:
PrivateFunctionf(byvalxAsbyte,yAsbyte)Asbyte
数组作为函数或过程的参数
数组作为参数的定义形式
编制通用函数过程fsum,计算single类型一维数组所有元素的和。
(2005年春)
functionfsum(a()assingle,nasbyte)assingle
dimkasbyte,sassingle
fork=1ton
s=s+a(k)
nextk
fsum=s
endfunction
数组作为参数的调用形式
privatesubform_click()
dima(1to10)assingle,kasbyte,avgassingle
fork=1to10
a(k)=rnd*90+10
nextk
avg=fsum(a,10)
endsub
数组作为参数的自定义过程(函数)练习
练习:
编写一个自定义过程,该过程对一维单精度数组进行反序操作,例如:
原数组数据为1、2、3、4、5,反序后变为5、4、3、2、1。
试题讲解:
调试34
注意:
1、当实参是表达式或常量时,实际按传值方式传递;2、数组作为参数都是按地址传递的。
privatesubchg2(byRefnasbyte)
n=n+2
endsub
privatesubform_Click()
dimkasbyte
k=2
callchg2(k+2)
printk
endsub
变量的作用域:
变量按作用域分为:
局部变量、模块级变量、全局变量
举例:
’form1中的代码
publicxasinteger‘全局变量
dimyasinteger‘模块级变量
privatezasinteger‘模块级变量
privatesubform_click()
dimkasinteger‘局部变量
k=k+1:
y=y+k
printk,y
endsub
privatesubform_Load()
y=y+1
endsub
‘form2中的代码
privatesubform_click()
dimyasinteger
y=form1.x’定义在其它窗体中全局变量的引用格式
endsub
变量级别
全局变量
模块级变量
局部变量
定义位置
通用声明
通用声明
过程(函数)内部
定义关键字
public
dim或private
dim
作用域
整个工程
整个模块
过程(函数)内部
生存周期
工程运行期
模块运行期
过程(函数)执行瞬间
静态局部变量和动态局部变量
privatesubform_Click()
staticaasinteger
dimbasinteger
b=b+1:
a=b+a
printa,b
endsub
变量作用域考点练习
练习1:
FunctionF(aAsInteger)asinteger
dimbasinteger
Staticcasinteger
b=b+1:
c=c+1:
F=a+b+c
EndFunction
PrivateSubCommand1_Click()
DimaAsInteger,bAsInteger
a=2
Fori=1To3
b=F(a):
Printb
Nexti
EndSub
练习2:
控件HScroll1的属性设置如下:
HScroll1.Min=1,HScroll1.Max=9,HScroll1.Value=1
HScroll1.Smallchange=2,HScroll1.Largechange=4
下面程序运行时,4次单击滚动条右端箭头,写出各次单击时Text1上的显示结果。
DimyAsSingle
PrivateFunctionf1(x2AsInteger)AsSingle
Staticx1AsInteger
f1=0
Fori%=x1Tox2
f1=f1+i%
Nexti%
x1=i%
EndFunction
PrivateSubHScroll1_Change()
y=y+f1(HScroll1.Value):
Text1.Text=y
EndSub
练习3:
写出单击窗体四次,第一次输入1,第二次输入2,第三次输入3,第四次输入4,窗体上显示的结果。
PrivateSubForm_Click()
DimxAsInteger
StaticsAsInteger
x=Val(InputBox("请输入一个正整数="))
IfxMod2=0Then
s=s*x
Else
s=s+x
EndIf
Me.Print"s="+Str(s)
EndSub
同名变量的问题
dimyasinteger
subform_load()
y=20
endsub
subform_click()
dimyasinteger
y=y+2:
printy
endsub
参数传递和变量作用域综合练习
练习1(2005春)
PrivateFunctionf1(nAsInteger)AsInteger
StaticiAsInteger
Whilei<=n
f1=f1+i:
i=i+1
Wend
EndFunction
PrivateFunctionf2(ByValn1AsInteger,n2AsInteger)AsInteger
DimiAsInteger
DoWhilen2>n1
f2=f2+n2:
n2=n2-1
Loop
EndFunction
PrivateSubcommand1_click()
DimaAsInteger,bAsInteger
Printf1(3):
Printf1(5)
a=5:
b=8
Printf2(a,b)
Printf2(b,a)
EndSub
练习2
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
DimxAsInteger
PrivateSubForm_click()
x=x+2
Callproc1(x)'
(1)
Printx;
EndSub
Subproc1(aAsInteger)'
(2)
DimxAsInteger'(3)
a=x+2
EndSub
【供选择的答案】
(1)单击窗体两次后,窗体上显示的内容是什么?
A、00B、22C、24D、48
(2)其它代码不变,仅将程序中的语句
(2)改成subproc1(byvalaasinteger),单击窗体两次后,窗体上显示的内容是什么?
A、00B、22C、24D、48
(3)其它代码不变,仅将程序中的语句(3)删除,单击窗体两次后,窗体上显示的内容是什么?
A、00B、22C、24D、48
(4)其它代码不变,仅将程序中的语句
(1)改为callproc1(x+2),单击窗体两次后,窗体上显示的内容是什么?
A、00B、22C、24D、48
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 07 理科 VB 考前 辅导