




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 过 程8.1 过程概述过程概述 8.2 自定义函数过程自定义函数过程 8.3 SUB过程过程 8.4 过程参数传递过程参数传递 8.5 变量、过程的作用域变量、过程的作用域8.1 过程概述n引例1:s=sin(5)+sin(10)+sin(14),编程求s的值。n引例2:s=5!+10!+14!,编程求s的值。能否自己定义一个函能否自己定义一个函数求一个数的阶乘呢?数求一个数的阶乘呢?VB内部函数内部函数引例:引例:求出求出5!+10!+14!5!+10!+14!主程序主程序用户自定义用户自定义子过程子过程5!10!14!8.1 过程概述一、过程的概念将程序按功能分割成若干模块和子模块
2、,这些模块和子模块是可重复调用的程序段,我们把这些模块和子模块称为用户自定义过程(简称过程)。 二、使用过程的优点消除了重复语句行。一次定义,多次调用使程序更易阅读。简化了程序开发。8.1 过程概述8.1 过程概述Function过程Sub过程内部函数过程自定义函数过程事件过程用户自定义Sub过程三三 、 过程的分类:过程的分类:8.1 过程概述Function过程Sub过程内部函数过程自定义函数过程事件过程用户自定义Sub过程二二 、 过程的分类:过程的分类:Abs(x)、sqr(x)等等8.1 过程概述Function过程Sub过程内部函数过程自定义函数过程事件过程用户自定义Sub过程二二
3、 、 过程的分类:过程的分类:Private sub command1_click()8.1 过程概述Function过程Sub过程内部函数过程自定义函数过程事件过程自定义Sub过程二二 、 过程的分类:过程的分类:8.2 自定义函数过程一、Function(函数)过程的定义 staticpublic|privatestaticpublic|privateFunctionFunction 过程名(过程名( 形形参列表参列表 )As As 数据类型数据类型 语句组语句组 过程名过程名= =结果结果End FunctionEnd Functionn说明:1)1)函数过程名:函数过程名:命名规则同变
4、量命名。它有两方面的作用,命名规则同变量命名。它有两方面的作用,一方面标识一个函数过程,另一方面把函数运算的一方面标识一个函数过程,另一方面把函数运算的结果传结果传回到主程序回到主程序。2)As 2)As 数据类型数据类型 :是函数返回值的类型,默认为变体类型。是函数返回值的类型,默认为变体类型。3)(3)(形参列表形参列表):代表代表FunctionFunction过程所需要的参数,可以是过程所需要的参数,可以是变量变量(除除定长字符型变量)或定长字符型变量)或数组数组。多个参数间应用逗号。多个参数间应用逗号隔开。隔开。形式参数本身没有值,只代表了参数的个数、位置形式参数本身没有值,只代表了
5、参数的个数、位置和类型,只有被调用时才有确定的值。和类型,只有被调用时才有确定的值。(形参列表形参列表)可以可以省略,但一对括号不能省略,这种过程叫省略,但一对括号不能省略,这种过程叫无参函数过程无参函数过程. .比如:比如:function parray() as integer function parray() as integer 4)Private|Public用于确定过程的作用域,Static用于确定过程变量的特点5)语句组:语句组中一般应有一条语句将过程的运算结果赋给过程名,格式如下: 过程名=结果6)如果在过程体中含有exit Function语句时,表示强制退出过程,该语句通
6、常置于选择结构中。二 调用函数过程 与调用内部函数的方法一样与调用内部函数的方法一样 举例:举例:求出求出5!+10!+14!5!+10!+14!按值传递按值传递常数常数、变量变量、数组元素数组元素或或表表达式达式等等练习:求组合数)!(!mnmnCmn的值,设m=6,n=10。分析:(1)编写function过程计算n!(2)编写主程序调用子程序计算组合数参数的传递方式除了参数的传递方式除了按值传递按值传递外,还有什外,还有什么传递方式呢?么传递方式呢?n按值传递调用时,系统将实参的值复制一份给形参。被调用过程中的操作在形参自己的存储单元中进行。实参的值不会受到形参的影响。n按地址传递调用时
7、,将实参的地址传递给形参,实参与形参公用同一个内存单元,对形参操作实质上是对实参的操作。8.3 参数传递方式参数传递方式一、形式参数和实际参数:1、形参:只能是变量(除定长字符型变量外)和数组,不能为常量或表达式。2、实参:可以是常量、变量、数组元素、数组名或表达式等。使用时,与形参个数相等,位置对应,类型相符。二、如何实现两种方式的传递?(1)在对子程序调用时,默认情况下,实参为常量、表达式或带括号的变量,按值传递;实参为变量或数组,按地址传递。(2)在定义过程时,在形参前加:ByVal(按值传递); ByRef(按地址传递)。注意:数组只能按地址传递。8.3 SUB8.3 SUB过程过程一
8、、分类n事件过程比如:Private Sub Command1_Click()n用户自定义Sub过程二、自定义Sub过程的建立定义格式为:StaticPrivate|Public Sub 过程名(参数列表)语句组End sub(1) 过程名:不能用来返回值。(2)(参数列表):当有一个以上形参时,它们之间用逗号隔开。形参只能是变量或数组。 参数列表可以省略,括号不能省略,这种过程叫无参过程,其形式如下:Private|PublicStaticSub 过程名()(3)语句组:exit sub (4)Private|Public用于确定过程的作用域,Static用于确定过程中变量。三、自定义Sub
9、过程的调用两种形式:(1) call 过程名(参数列表)(2) 过程名 参数列表参数列表:参数列表:代表要传递给代表要传递给sub过程的实际值,称为实过程的实际值,称为实际参数(简称际参数(简称实参实参),可以为),可以为常量、变量、数组元常量、变量、数组元素、数组名或表达式素、数组名或表达式等。与形参类似,参数之间用等。与形参类似,参数之间用逗号分隔逗号分隔练习:求组合数)!(!mnmnCmn的值,设m=6,n=10。分析:(1)编写sub过程计算n!(2)编写主程序调用子程序计算组合数总结总结 Function过程和过程和Sub过程的区别过程的区别:1、格式上不同2、调用方式不同Funct
10、ion过程的调用形式:与内部函数调用类似Sub过程的调用方式为:call 过程名(参数列表)过程名 参数列表3、应用上Function过程:通过函数名返回一个处理结果;Sub过程:(1)没有返回值只是实现一个功能;(2)通过参数传递返回多个处理结果。PrivateSubForm_Click()dimaasdoublecallfact(5,a)PrintaEndsuba0PrivateSubfact(nasinteger,fasdouble)EndSubf=1for i=1 to nf=f*iNext iPrivateSubForm_Click()dimaasdoublecallfact(5,a
11、)printaEndsubn5a0fa把地址传递给f5的值传递给nPrivateSubfact(nasinteger,fasdouble)EndSubf=1for i=1 to nf=f*iNext iPrivateSubForm_Click()dimaasdoublecallfact(5,a)printaEndsubn5a 5! fPrivateSubfact(nasinteger,fasdouble)EndSubf=1for i=1 to nf=f*iNext iPrivateSubForm_Click()dimaasdoublecallfact(5,a)PrintaEndsuba5!Pr
12、ivateSubfact(nasinteger,fasdouble)EndSubf=1for i=1 to nf=f*iNext i举例:subfact(nasinteger,fasdouble)EndsubPrivateSubForm_Click()dimaasdouble,xasintegerx=5callfact(x,a)callfact(x+1,a)callfact(x),a)PrintaEndsub按值按值传递传递举例:编写求两个整数最大公约数的过程,并在主程序中调用该过程求两个数的最大公约数,并根据最大公约数求最小公倍数。n在选择参数传递方式时,遵照如下原则:(1)过程中处理的对象
13、是数组时,只能采用传地址方式传递参数;(2)过程的运算结果需要通过参数返回时,必须采用传地址方式传递参数。注意:在传值方式下,实参与形参数据类型只要相容即可;在传地址方式时,实参的类型必须与形参一致,否则会出现编译错误。n举例:分别用传地址方式和传值方式编写交换两个整数的过程并调用。n举例:编写求一组整数平均值的过程,并在主程序中调用。n练习:编写能获得一组整数的最大值和最小值的过程并调用。8.5 过程、变量的作用域一、过程的作用域Project1.vbpForm1.frmForm2.frmPrivate sub f1()Public function f2()Private sub f1()
14、Public function f3()一、过程的作用域n窗体(模块)级过程定义:在窗体或标准模块通用声明段定义的、用Private关键字限制的过程。作用范围:只能在所属的窗体或标准模块中被其他过程调用。n全局级过程定义:在窗体或标准模块中定义的过程默认是全局的,也可用Public关键字声明。作用范围:可供该应用程序的所有窗体和所有标准模块中的过程调用。(1)在窗体中定义的全局级过程,该窗体之外的其他过程要调用,必须在过程名前加该过程所在的窗体名。(2)在标准模块中定义的全局过程,外部过程均可调用,若一个工程包含多个标准模块,其中过程名重复,要在过程名前加标准模块名。工程工程1Form1For
15、m2Moudle1Moudle2Form2.fact(3)Moudle1.parray(4)二、变量的作用域 过程级 窗体(模块)级 全局级1、过程级变量作用范围:限制在该过程内部。声明变量:在过程内部使用Dim或Static关键字。注意:若过程中使用了未声明的变量,则该变量默认为过程级变量。静态变量:用Static声明的变量,该类变量在过程执行结束后一直存在,直到窗体关闭后,释放变量所占用内存单元。动态变量:用Dim声明的变量,只在过程执行时存在,退出过程后释放该变量所占用内存单元。2、窗体(模块)级变量作用范围:限制在声明它的窗体(模块)中。声明变量:在窗体(模块)的通用段中用Private或Dim关键字声明。注意:当窗体关闭后,释放窗体级变量所占用的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 未来农作物繁育员职业技能测试试题及答案
- 突破模具设计师考试的思维定势与试题答案
- 建立良好习惯2024年体育经纪人职业试题及答案
- 2024年农业植保员考试细节解读与准备试题及答案
- 种子繁育员职业资格考试解题策略试题
- 无人机应用案例试题及答案讨论
- 提升裁判能力试题及答案详解
- 成功通过2024年篮球裁判员等级考试的秘诀 试题及答案
- 裁判员如何应对场上突发情况的应急措施试题及答案
- 2024农业植保员新政策试题及答案
- 2024年新疆中考地理真题卷及答案
- 部编版二年级下册语文课文3我是一只小虫子同步练习C卷
- 小升初奥数不同题型100道及答案(完整版)
- 第16课 经济危机与资本主义国家的应对(课件)-【中职专用】《世界历史》(同课异构)(高教版2023基础模块)
- GB/T 4008-2024锰硅合金
- 中国肺血栓栓塞诊治与预防指南解读专家讲座
- 《鸿门宴》公开课一等奖创新教学设计 统编版高中语文必修下册
- DZ∕T 0202-2020 矿产地质勘查规范 铝土矿(正式版)
- 二年级三位数加减法竖式计算
- 安全生产投入台账(模板)
- 清华大学领军计划语文试题强基计划
评论
0/150
提交评论