版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
子程序与函数过程第一页,共三十五页,2022年,8月28日过程概述在VB5.0/6.0中,除了系统提供的内部函数过程和事件过程外,用户可自定义过程下列四种过程:▲“Sub”保留字开始的为子过程▲“Function”保留字开始的为函数过程“Property”保留字开始的为属性过程“Event”保留字开始的事件过程第二页,共三十五页,2022年,8月28日9.1子函数过程(sub过程)在VB中,的Sub子过程分为:事件过程和通用过程
9.1.1事件过程
(1)窗体事件的语法PrivateSubForm_事件名(参数列表)
<语句组>EndSub
(2)控件事件的语法PrivateSub控件名_事件名(参数列表)
<语句组>
EndSub第三页,共三十五页,2022年,8月28日9.1子函数过程(sub过程)9.1.2通用过程(Sub过程)的定义子过程的定义形式如下:[Public|Private][Static]Sub子过程名([形参表])<局部变量或常数定义>
<语句组>
[ExitSub]
<语句组>EndSub
说明:(1)子过程名:命名规则与变量名规则相同。子过程名不返回值,而是通过形参与实参的传递得到结果,调用时可返回多个值。第四页,共三十五页,2022年,8月28日(2)形式参数列表:形式参数通常简称“形参”,仅表示形参的类型、个数、位置,定义时是无值的,只有在过程被调用时,虚实参结合后才获得相应的值。(3)过程可以无形式参数,但括号不能省。(4)参数的定义形式:[ByVal|ByRef]变量名[()][As类型][,…],ByVal表示当该过程被调用时,参数是按值传递的;缺省或ByRef表示当该过程被调用时,参数是按地址传递的。9.1子函数过程(sub过程)第五页,共三十五页,2022年,8月28日9.1子函数过程(sub过程)例编一个交换两个整型变量值的子过程。PrivateSubSwap(XAsInteger,YAsInteger)
DimtempAsInteger
Temp=X:X=Y:Y=TempEndSubPrivateSubcommand1_click()
Dima%,b%a=val(inputbox(“a=“))b=val(inputbox(“b=“))
print“a=“;a,”b=“,bcallswap(a,b)
print“a=“;a,”b=“,bEndSub第六页,共三十五页,2022年,8月28日9.1子函数过程(sub过程)9.1.3子过程的建立
通过“工具”菜单中的“添加过程”命令,出现“添加过程”对话框(见图6.1),选择过程类型(子过程、函数、属性、事件)及作用范围(公有的Public、私有的Private),单击确定后得到一个过程或函数定义的结构框架(模板),如:PublicSubSort()
……EndSub第七页,共三十五页,2022年,8月28日9.1子函数过程(sub过程)9.1.4过程的调用
1子过程的调用
子过程名[参数列表]或 Call子过程名(参数列表)说明:(1)参数列表称为实参或实元,它必须与形参保持个数相同,位置与类型一一对应。(2)调用时把实参值传递给对应的形参。其中值传递(形参前有ByVal说明)时实参的值不随形参的值变化而改变。而地址传递时实参的值随形参值的改变而改变。第八页,共三十五页,2022年,8月28日(3)当参数是数组时,形参与实参在参数声明时应省略其维数,但括号不能省。(4)调用子过程的形式有两种,用Call关键字时,实参必须加圆括号括起。例:调用上面定义的Swap子过程的形式:
Swapa,b(省略关键字call和括号)
CallSwap(a,b)9.1子函数过程(sub过程)第九页,共三十五页,2022年,8月28日过程调用的执行过程:PrivateSubCmdOK()……CallSwap(a,b)……Swapa,bEndSubPrivateSubSwap(x%,y%)
Dimtemp%Temp=XX=YY=TempEndSub第十页,共三十五页,2022年,8月28日实例9.3
窗体中有1个图片框和3个命令按钮(控件数组),如图。程序运行时,单击命令按钮,在图片框中画出指定数目的同心圆。第十一页,共三十五页,2022年,8月28日9.2函数过程(Function过程)
VisualBasic函数分为内部函数(sin(),sqr()等)和外部函数,外部函数是用户根据需要用Function关键字定义的函数过程,与子过程不同的是函数过程将返回一个值。
9.2.1函数过程(Function过程)的定义[Public|Private][Static]Function函数名([<参数列表>])[As<类型>]
<局部变量或常数定义><语句块>
[函数名=返回值][ExitFunction]<语句块>
函数名=返回值
EndFunction函数体第十二页,共三十五页,2022年,8月28日9.2函数过程(Function过程)说明:(1)函数名:命名规则与变量名规则相同。(2)在函数体内,函数名可以当变量使用,函数的返回值就是通过对函数名的赋值语句来实现的,在函数过程中至少要对函数名赋值一次。(3)AS类型:是指函数返回值的类型,若省略,则函数返回变体类型值(Variant)。
(4)ExitFunction:表示退出函数过程,常常是与选择结构(If或SelectCase语句)联用,即当满足一定条件时,退出函数过程。(5)形参数列表:形参的定义与子过程完全相同。第十三页,共三十五页,2022年,8月28日实例9.5
定义一个函数过程,用来计算1~n的和。
PrivateFunctionsum(nAsInteger)AsLongfori=1tons=s+inextisum=sEndFunction第十四页,共三十五页,2022年,8月28日
调用函数过程可以由函数名带回一个值给调用程序,被调用的函数必须作为表达式或表达式中的一部分,再与其它的语法成分一起配合使用。因此,与子过程的调用方式不同,函数不能作为单独的语句加以调用。 最简单的情况就是在赋值语句中调用函数过程,其形式为: 变量名=函数过程名(实参列表)9.2函数过程(Function过程)9.2.2函数的调用第十五页,共三十五页,2022年,8月28日实例9.6
通过函数过程实现实例9.4的功能。第十六页,共三十五页,2022年,8月28日9.3参数传递 在调用过程时,一般主调过程与被调过程之间有数据传递,即将主调过程的实参传递给被调过程的形参,完成实参与形参的结合,然后执行被调过程体。在VB中,实参与形参的结合有两种方法:传址和传值。传址是默认的方法。两种结合方法的区分标志是“ByVal”,形参前加“ByVal”关键字时是传值,否则为传址。第十七页,共三十五页,2022年,8月28日9.3.1传值 传值的参数传递过程是:当调用一个过程时,系统将实参的值复制给形参,之后实参与形参便断开了联系。被调过程对形参的操作是在形参自己的存储单元中进行,当过程调用结束时,这些形参所占用的存储单元也同时被释放。因此在过程中对形参的任何操作都不会影响到实参。第十八页,共三十五页,2022年,8月28日9.3.2传址传址的参数传递过程是:当调用一个过程时,它将实参的地址传递给形参。因此在被调过程体中对形参的任何操作都变成了对相应实参的操作,因此实参的值就会随形参的改变而改变。当参数是字符串或数组时,使用传址传递直接将实参的地址传递给过程,会使程序的效率提高。第十九页,共三十五页,2022年,8月28日9.3.3数组参数的传递数组可以作为过程的参数。过程定义时,形参列表中的数组用数组名后的一对空的圆括号表示。在过程调用时,实际参数表中的数组可以只用数组名表示,省略圆括号。当用数组作为过程的参数时,进行的不是“值”的传递,而是“址”的传递。第二十页,共三十五页,2022年,8月28日9.4过程与变量的作用域前面我们介绍了VB应用程序(通常称为工程)的组织结构,它由窗体模块、标准模块和类模块组成。VB程序代码就保存在窗体模块文件(*.Frm)、标准模块文件(*.Bas)或类模块文件(*.Cls)中。它们形成了工程的一种模块层次结构,如下图所示。第二十一页,共三十五页,2022年,8月28日9.4过程与变量的作用域9.4.1窗体模块(文件扩展名为
.FRM)
窗体模块。窗体模块可以包含处理事件的过程、通用过程以及变量、常数、类型和外部过程的窗体级声明。如果要在文本编辑器中观察窗体模块,则还会看到窗体及其控件的描述,包括它们的属性设置值。写入窗体模块的代码是该窗体所属的具体应用程序专用的;它也可以引用该应用程序内的其它窗体或对象。第二十二页,共三十五页,2022年,8月28日9.4.2标准模块
(文件扩展名为.BAS)它们可以包含变量、常数、类型、外部过程和全局过程的全局(在整个应用程序范围内有效的)声明或模块级声明。写入标准模块的代码不必绑在特定的应用程序上,则在许多不同的应用程序中可以重用标准模块。9.4过程与变量的作用域第二十三页,共三十五页,2022年,8月28日9.4过程与变量的作用域9.4.3类模块(文件扩展名为
.CLS)在
VisualBasic中类模块是面向对象编程的基础。可在类模块中编写代码建立新对象。这些新对象可以包含自定义的属性和方法。实际上,窗体正是这样一种类模块,在其上可安放控件,可显示窗体窗口。第二十四页,共三十五页,2022年,8月28日9.4过程与变量的作用域概念[Public|Private]Sub子过程名([形式参数列表])…..EndSub通用子过程和函数过程既可写在窗体模块中也可写在标准模块中,在定义时可选用关键字Private(局部)和Public(全局),来决定它们能被调用的范围。第二十五页,共三十五页,2022年,8月28日9.4过程与变量的作用域按过程的作用范围来划分,过程可分为:
模块级过程
全局级过程1、窗体/模块级过程:
加Private关键字的过程,只能被定义的窗体或模块中的过程调用。2、全局级过程:
加Public关键字(或缺省)的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用。第二十六页,共三十五页,2022年,8月28日9.4过程与变量的作用域总结归纳过程的定义及作用域如下表第二十七页,共三十五页,2022年,8月28日9.4过程与变量的作用域概述:在VB中,由于可以在过程中和模块中声明变量,根据定义变量的位置和定义变量的语句不同,变量可以分为:局部变量(过程级变量)窗体/模块级变量(私有的模块级变量,能被本模块的所有过程和函数使用)全局级变量(公有的模块级变量)。第二十八页,共三十五页,2022年,8月28日9.4过程与变量的作用域9.4.4过程级变量——局部变量局部变量:在过程内用声明的变量,只能在本过程中使用。在过程内部使用Dim或者Static关键字来声明的变量,只在声明它们的过程中才能被访问或改变该变量的值,别的过程不可访问。所以可以在不同的过程中声明相同名字的局部变量而互不影响。第二十九页,共三十五页,2022年,8月28日9.4过程与变量的作用域例:PrivateSubForm_Load()Dimn%n=10EndSubPrivateSubFrom_Click()Dimn%Print“n=“;nEndSub程序运行后单击窗体,其输出结果是什么?第三十页,共三十五页,2022年,8月28日9.4过程与变量的作用域9.4.5窗体/模块级变量
窗体/模块级变量:在“通用声明”段中用Dim语句或用Private语句声明的变量,可被本窗体/模块的任何过程访问。但其他模块却不能访问该变量。例如:在“通用声明”段声明如下变量:PrivatesAsStringDimaAsInteger例:Dimn%PrivateSubForm_Load()n=10EndSubPrivateSubFrom_Click()Print“n=“;nEndSub第三十一页,共三十五页,2022年,8月28日9.4过程与变量的作用域9.4.6全局变量
全局变量也称公有的模块级变量,在窗体模块或标准模块的顶部的“通用”声明段用Public关键字声明,它的作用范围是整个应用程序,即可被本应用程序的任何过程或函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年教师资格考试教学设计
- 2026年前程无忧人才评测试题及答案
- 2025年高二数学建模步骤分拿满专项训练及完整版答案
- 3 理想气体的状态方程教学设计高中物理苏教版选修3-3-苏教版2014
- 2026年中国园林机械设备市场的投资回报分析
- 2026招聘咖啡师面试题及答案
- 2026长龙航空招飞笔试题及答案
- 2025-2026学年名师教案音乐
- 2026年随机振动下机械系统的动态响应仿真
- 2026年机械设计中的教育与培训解决方案
- 2026年长沙电力职业技术学院单招职业适应性测试题库及完整答案详解1套
- 2026年大庆医学高等专科学校单招职业技能考试题库及参考答案详解1套
- 青岛版小学科学四年级下册2课小球的运动
- 2025CSCO肿瘤治疗所致血小板减少症诊疗指南
- 高三化学必考知识点梳理
- 2025年新教材人教版二年级上册数学 第1课时 象形图的分类与整课件
- 2026年苏州信息职业技术学院单招职业适应性考试题库新版
- 2025浙江金华市东阳市部分机关事业单位招聘编外人74人员(二)笔试考试参考试题及答案解析
- 学堂在线 雨课堂 学堂云 人工智能 章节测试答案
- 国际经济与贸易专升本2025年真题解析试卷(含答案)
- 2025年国税系统副处级领导后备干部选拔笔试真题及答案解析
评论
0/150
提交评论