第05章 过程Word下载.docx
- 文档编号:21142054
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:13
- 大小:31.48KB
第05章 过程Word下载.docx
《第05章 过程Word下载.docx》由会员分享,可在线阅读,更多相关《第05章 过程Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
2.建立子程序的方法
(1)直接输入代码
(2)在“工具”菜单中选择“添加过程”项
例5.1编写一个计算两个单精度数加减乘除的Sub子程序
PrivateSubsubexample3(aAsSingle,bAsSingle)
c1=a+b
c2=a-b
c3=a*b
c4=a/b
Print"
c1="
;
c1,"
c2="
c2,"
c3="
c3,"
c4="
c4
5.1.2调用Sub过程
1.用Call语句
一般格式:
Call过程名([实参表列])
过程没有参数,则“实参表列”和括号可以省略
过程有参数,实参的个数、数据类型都要与形参一一对应
2.直接使用子程序名
子程序名[实参表列]
与第一种方式相比,省略了关键字Call,去掉了“实参”的括号
3.调用方法
暂停当前过程,转而去执行被调用的子程序
子程序执行完毕,返回调用过程继续执行
例5.2调用subexample3子程序
PrivateSubform_Click()
DimsaAsSingle,sbAsSingle
s1="
输入对话框"
sa=Val(InputBox("
sa=?
"
s1))
sb=Val(InputBox("
sb=?
Callsubexample3(sa,sb)
可以将
Callsubexample3(sa,sb)
改为
subexample3sa,sb
例5.3使用两种方法调用有参数的Sub过程
PrivateSubChangeForm2(intLeftAsInteger,strCaptionAsString)
Me.Left=intLeft
Me.Caption=strCaption
PrivateSubcmd1_Click()
CallChangeForm2(0,"
VB"
)
PrivateSubcmd2_Click()
ChangeForm21000,"
VisualBasic"
5.1.3通用过程和事件过程
事件过程不能由用户定义,而是由系统指定。
事件过程的一般格式:
[Private|Public]Sub对象名_事件名(形参表列)
事件过程只能放在窗体模块中
通用过程可以放在标准模块、窗体模块中
多个标准模块中含有相同的过程名,调用时必须用模块名限定,格式为:
模块名.过程名(实参表列)
例5.4在工程中添加两个窗体(form1和form2)、两个模块(module1和module2)。
(1)在form1上画两个命令按钮,Command1和Command2。
在该窗体模块中编写如下代码:
PublicSubproc()
MsgBox"
这是form1中的通用过程"
PublicSubCommand1_Click()
Module1.proc
Module2.proc
PublicSubCommand2_Click()
Form2.proc
Form2.Show
(2)在form2上画两个命令按钮,Command1和Command2。
这是form2中的通用过程"
Form1.Command1_Click
Form1.proc
Form1.Command2_Click
(3)在module1模块中编写如下代码:
这是module1中的通用过程"
(4)在module21模块中编写如下代码:
这是module2中的通用过程"
5.2Function过程
Function过程又称函数过程
有返回值
5.2.1建立Function过程
1.定义Function过程的一般格式
[Public|Private][Static]Function函数名([形参表列])[As返回值数据类型]
[函数名=表达式]
[ExitFunction]
[语句块]
EndFunction
(1)返回值数据类型可以是Integer、Long、Single、Double、Currency或String(默认Variant)
(2)通过“函数名=表达式”把返回值赋给“函数名”
(3)ExitFunction强制跳出函数
2.建立Function过程的方法
与建立Sub过程的基本相同
例5.5编写一个求最大公约数的函数过程
Functiongcd(ByValxAsInteger,ByValyAsInteger)AsInteger
DoWhiley<
>
0
r=xMody
x=y
y=r
Loop
gcd=x
5.2.2调用Function过程
1.Call语句调用
Call函数名([实参表列])
2.函数名直接调用
函数名[实参表列]
3.在表达式中调用
像调用内部函数一样来调用
调用方法:
暂停当前过程,转而去执行被调用的函数
函数执行完毕,得到返回值,父过程继续进行
例5.6调用求两数最大公约数的Function过程
SubForm_Click()
a=49:
b=84
x=gcd(a,b)
gcd="
x
输出结果:
7
例5.7用自定义的求阶乘的函数factor计算10!
-9!
PrivateSubCommand1_Click()
Text1.Text=factor(10)-factor(9)
PrivateFunctionfactor(nAsInteger)AsLong
f=1
Fori=1Ton
f=f*i
Nexti
factor=f
例5.8输出2~100之间质数及其个数
PrivateFunctionisPrime(m)
b=True
Fori=2ToSqr(m)
IfmModi=0Then
b=False:
ExitFor
EndIf
Next
isPrime=b
Fori=2To100
IfisPrime(i)Then
Printi
n=n+1
100之内的质数共有:
&
n&
"
个"
5.3参数的传递
1.形参与实参
形参是在过程定义中出现的参数
实参是在调用过程时传递给过程的常量、变量、表达式
常用的是按位置传递,形参与实参的次序一一对应
2.传址
传址也称为引用,是默认的传递方式,关键字ByRef。
调用时,传递给形参的是实参的地址,形参与实参共用相同的内存单元。
子过程中改变形参的值,返回父过程后,实参变量的值也将发生变化,实参与形参的传递是双向的。
例5.9引用方式传递参数
Subtest1(m,n)
m=m*10
n=n+10
m="
m,"
n="
n
a=10:
b=20
test1a,b
a="
a,"
b="
b
m=100n=30
a=100b=30
3.传值
关键字ByVal,传递给形参的是实参的值
子过程中改变形参变量的值,不会影响父过程中实参的值
实参与形参的传递是单向的
形参前面有ByRef,但实参是以下情况,将按值传递:
(1)实参是常量;
(2)实参是表达式;
(3)实参是函数的调用;
(4)实参是以括号括起的单个变量。
例5.10传值方式传递参数
几
Subtest2(ByValmAsInteger,ByValnAsInteger)
Subform_Click()
DimaAsInteger,bAsInteger
test2a,b
a=10b=20
注:
Sub过程可以通过参数返回多个值(用传址方式)
例5.11两种传递方式对比
PrivateSubForm_Click()
DimjAsInteger,kAsInteger
j=1:
k=2
按值传递"
j="
j,"
k="
k
CallSwap1(j,k)
按地址传递"
CallSwap2(j,k)
PrivateSubSwap1(ByValmAsInteger,ByValnAsInteger)
DimtAsInteger
t=m
m=n
n=t
PrivateSubSwap2(ByRefmAsInteger,ByRefnAsInteger)
运行结果:
5.4变量的作用域
VB应用程序的构成
三种变量的作用域
名称
作用域
声明位置
使用语句
局部变量
过程
过程中
Dim或Static
模块变量
窗体模块或标准模块
模块的声明部分
Dim或Private
全局变量
整个应用程序
标准模块的声明部分
Public或Global
1.过程级变量定义方法
Dim变量名[As数据类型名][,变量名[As数据类型名]……
Static变量名[As数据类型名][,变量名[As数据类型名]……
用Dim定义变量,过程执行时被创建,过程结束后消失。
用Static定义变量,可以在这个过程的多次执行之间保持其值,直到整个程序结束才被清除。
例5.12比较Dim和Static定义的过程级变量
StaticxAsInteger
x=x+2
Printx
PrivateSubCommand2_Click()
DimxAsInteger
2.模块级变量定义方法
在模块顶部的通用声明段中定义
Dim变量名[As类型名][,变量名[As数据类型名]……
Private变量名[As类型名][,变量名[As数据类型名]……
(两种方法等价)
PrivateS1AsString(定义变长字符串变量)
PrivateS2AsString*4(定义定义长字符串变量)
例5.13使用同名的模块级变量和过程级变量
DimiAsInteger'
定义模块级变量
StaticiAsInteger'
定义过程级静态变量
i=i+1'
使用过程级静态变量
Command1.Caption=i
Command2.Caption=i
使用模块级变量
Form1.Caption=i
例5.14为模块级变量赋值
PrivateSubForm_Load()
i=10'
给模块级变量赋初值
3.程序级变量定义方法
程序级变量也称全局变量或公共变量
在标准模块顶部的通用声明段中使用Public关键字定义
Public变量名[As类型名]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第05章 过程 05
![提示](https://static.bdocx.com/images/bang_tan.gif)