07秋理科VB考前辅导4.docx

上传人:b****8 文档编号:9390338 上传时间:2023-02-04 格式:DOCX 页数:11 大小:17.29KB
下载 相关 举报
07秋理科VB考前辅导4.docx_第1页
第1页 / 共11页
07秋理科VB考前辅导4.docx_第2页
第2页 / 共11页
07秋理科VB考前辅导4.docx_第3页
第3页 / 共11页
07秋理科VB考前辅导4.docx_第4页
第4页 / 共11页
07秋理科VB考前辅导4.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

07秋理科VB考前辅导4.docx

《07秋理科VB考前辅导4.docx》由会员分享,可在线阅读,更多相关《07秋理科VB考前辅导4.docx(11页珍藏版)》请在冰豆网上搜索。

07秋理科VB考前辅导4.docx

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

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

当前位置:首页 > 解决方案 > 学习计划

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

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