《sub过程的建立》ppt课件

上传人:tia****nde 文档编号:69394732 上传时间:2019-01-13 格式:PPT 页数:41 大小:299.32KB
返回 下载 相关 举报
《sub过程的建立》ppt课件_第1页
第1页 / 共41页
《sub过程的建立》ppt课件_第2页
第2页 / 共41页
《sub过程的建立》ppt课件_第3页
第3页 / 共41页
《sub过程的建立》ppt课件_第4页
第4页 / 共41页
《sub过程的建立》ppt课件_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《《sub过程的建立》ppt课件》由会员分享,可在线阅读,更多相关《《sub过程的建立》ppt课件(41页珍藏版)》请在金锄头文库上搜索。

1、2019/1/13,1,第九章 过 程,2019/1/13,2,9.1 Sub过程,一、 Sub过程的建立 1.定义Sub过程 格式:StaticPravitePublic Sub过程名(参数表列) 语句块 Exit Sub 语句块 End Sub 说明: Sub过程以Sub开头,以End Sub结束,之间是“过程体”或“子程序体”。格式中的参量的含义如下: Static:指定了过程中的局部变量在内存中的默认存储方式。如果使用了Static,则在每次调用过程时,过程中的所有局部变量的值保持不变;否则就会被初始化为零。对过程之外定义的变量没有作用。,2019/1/13,3,Private:表示S

2、ub过程是私有的过程,只能被本模块中的其它过程所访问,其它模块中的过程不能访问。 Public:表示Sub过程是公有过程,可以在程序中的任何地方调用它。 过程名:一个标准的变量名,同一模块中,不能和一般变量、数组变量或Functio过程名重名。 参数表列:调用时传送给该过程的简单变量名或数组名,各名字之间用逗号分隔开。“参数表列”指明了调用时传送给过程的参数的类型和数量,每个参数的格式为:ByVal变量名()As 数据类型 其中“变量名”是一个合法的VB中的变量名或数组名。如果是数组名,则要在数组名后加上一对括号。“数据类型”指的是变量的类型。 ByVal参数是可选的,如选择了,则说明该参数是

3、传值的,没有的话就是“引用”,2019/1/13,4,(2)End Sub语句标志着Sub过程的结束,每个Sub过程中必须有一个End Sub子句,当程序执行到End Sub时,就会退出该过程,并且返回到调用该过程的语句的下一条语句。在Sub过程中还可以有一个或多个Exit Sub语句可以从过程中退出。 (3) Sub过程不允许嵌套。即Sub过程中不能再定义Sub过程或Function过程,不能用GoTo、GoSub或Return语句进入或退出一个Sub过程,只能通过正常调用来执行Sub过程,而且可以嵌套嵌套调用。 举例9.1,2019/1/13,5,2.建立Sub过程 通用过程不属性任何一个

4、在事件过程,只能建立在标准模块或窗体模块中。标准模块的建立有二种方法: 第一种方法的操作步骤是: (1)执行“工程”中的“添加模块”命令,打开“添加模块”对话框选择“新建”选项卡,双击“模块”图标,打开代码窗口。 (2)执行“工具”中的“添加过程”命令,打开“添加过程”对话框。 (3)在“名称”框中输入过程名。 (4)在“类型”栏中选择过程的类型。 (5)在“范围”栏中选择过程的适用范围,公有的或私有的。 第二种方法的操作步骤是:执行“工程”中的“添加模块”命令,打开模块代码窗口,然后在窗口中键入过程的第一行开始。,2019/1/13,6,二、调用Sub过程 调用一个Sub过程,就是要执行该过

5、程。调用执行有二种方式,一种是将过程的名字放在一个Call语句中,另一种是直接将过程名字作为一个语句来使用。 1.用Call语句来调用Sub过程 格式:Call 过程名(实际参数) 在调用时,实际参数的数量、类型都要和Sub过程定义中的参数的数量和类型都要一样。“实际参数”是传送给Sub过程的变量或常数。 例:call Tryout(a,b) 2.把过程名作为一个语句来使用 和前一种相比,没有了关键字Call,在实际参数中也没有了括号。 Try a,b 举例说明:求素数例9.1 延迟指定时间 例9.2,2019/1/13,7,三、通用过程与事件过程 控件事件过程的一般格式: Private|P

6、ublic Sub 控件名_事件名(参数表) 语句组 End sub 窗体事件的一般格式: Private|Public sub Form_事件名(参数表) 语句组 End Sub 调用的一般格式: 模块名.过程名(参数表),2019/1/13,8,9.2 Function过程,一、 Function过程的定义 Function过程定义的格式如下: StaticPrivatePublic Function过程名(参数表列)As 类型 语句块 过程名=表达式 Exit Function 语句块 End Function 说明: (1) Function过程以Function开头,以End Fun

7、ction结束,之间是“过程体”或“函数体”。格式中参数的含义与子过程Sub中的完全一样。,2019/1/13,9,(2)调用Sub过程相当于执行一个语句,它不会返回任何值;而执行一个Function过程,一定会返回一个函数值,所以它可以相内部函数一样在表达式中使用它。在Function过程中至少有一条语句是“过程名=表达式”这样的,即将要返回的值传送给过程名。 (3)过程不能嵌套,即不能在事件过程中再来定义过程(包括过程和Function过程),只能在事件过程中调用相应的过程。 建立Function过程的方法和建立Sub过程的方法一样。 Function BinarySearch(lower

8、 as integer,upper as integer) as boolean If lower=upper then binarysearch=true exit function else binarysearch=false end if end function,2019/1/13,10,二、调用Function过程 Function过程可以像内部函数一样来使用。 Function过程本身就要返回一个值,所以实际上就是一个函数,通常称为子函数。 举例:最大公约数、随机数,2019/1/13,11,声 明 文 件,窗体模块 (.frm)文件,类模块 (.cls文件),标准模块 (.ba

9、s文件),子程 序过 程 (sub),函数 过程 (func _tion),事件 过程 (sub),声 明 部 分,应用程序 工程文件(.vbp),子程 序过 程 (sub),函数 过程 (func _tion),事件 过程 (sub),2019/1/13,12,9.3 参数传递,在调用一个过程时,必须要将实际参数传送到过程中去完成实际参数和形式参数的结合,然后用实际参数执行执行过程。 一、形参和实参 形参是在过程定义中出现的变量名 实参是在调用过程时传送给过程的常数、变量、表达式或数组。在VB中有二种方式来传送参数,即按位置传送和指名传送。 1.按位置传送 实际参数的次序必须和形式参数的次序

10、完全一样,参数的位置、数量和类型都必须保持一致。 在形参中,只能是变长的字符串(如x$、x As String),而不能用定长字符串来作为形参的定义(如x As String*8)。,2019/1/13,13,Sub testsub(a as integer,array() as single,recvar as rectype,c as string) Type rectype Rand as string *12 SerialNum as long End type Dim recv as rectype Call testsub(x,a(),recv,dephone),2019/1/13

11、,14,2.指名传送 指名参数传送即将要传送的实际参数的值用“:=”的形式赋给对应的形参。这样的传送方式只认形参的名,而不认形参的传送位置。 例:sub add_num(x as integer, y as integer, z as integer) r=(x+y)*z print r end sub 下面的四条调用语句都是执行相同的功能 add_num 4,6,8 add_num x:=4,y:=6,z:=8 add_num y:=6, x:=4, z:=8 add_num z:=8, y:=6, x:=4,2019/1/13,15,二、引用 在VB中有二种方式来传送参数,即传地址和传值。

12、其中传地址习惯上称为“引用”。 在默认的情况下,变量都是通过“引用”的方式来传送给过程的。如在过程中改变了参数的值,则就会改变传送给过程的实参的值。因为实际参数是存放在内存中的某个地址中,通过引用来调用一个过程时,只是将实参的地址传送给相应的形参,所以,实参和形参的地址是同一个,当形参中的内容改变时,实参的内容也相应的改变了。如果在调用过程中不希望改变实参的值,则不能使用这种引用的方式,只能用传值的方式。 传送地址比传值能够节省内存和提高工作效率。过程中的形参只是一个地址,系统不要为它的值分配内存空间,只需要记住它是一个地址就可。(对字符串的引用比较明显)例9.6 例9.7,2019/1/13

13、,16,三、传值 传值就是通过传送实参的实际的值到过程中的形参,而不传送相应的地址。这种情况下,则需要将实参的值先保存在内存中的一个临时单元中,再将该单元的地址传送给形参。因为被调用的过程没有真真地访问实参变量的原始地址,也就不会改变原来实参变量的值。 传值是通过加上关键字ByVal来实现的。即在形参前面加上ByVal,则该形参的传送就是传送的值。 传送地址的效率比传值的要高,但在传送地址方式中,形参并不是一个真真的局部变量,则有可能会对程序的正常执行带来意想不到的结果。所以在有些情况下,只能用传值的方式才能得到正确的结果。例9.3.3 例9.3.3.1,2019/1/13,17,四、数组参数

14、的传送 在VB中允许将数组作为实参传送到过程中。 例:Sub s(a(),b() End Sub 在这个过程中有二个数组形参。在用数组作形参时,应在数组名的后面加上一对括号,不要和普通变量混淆。调用此过程时可用命令 Call S(p(),q() 这样,数组p,q就作为实参传送给过程中的数组a,b,这种传送方式是传送地址,而不是传值。在传送地址的方式中,形参的值改变也会使实参中相应的值改变。 在传送数组时,除基本的规则外,还应注意: (1)传送数组全部元素时,数组名在形参、实参表中出现,并且省略相应的上下界,但是括号不能省略。 例9.8 (2)如果不是整个数组传送,而只是传送单个元素时,这时就要

15、在实参中加上指定数组元素的下标。例9.3.4 (3)lboundhe ubound函数控制整个循环。例9.3.4.1例9.9,2019/1/13,18,(4)传送记录类型变量 type stockitem partnumber as string*8 description as string*8 unitprice as single quantity as intrger End type Dim stockrecord as stockitem Call findrecord(stockrecord) Sub finfrecord(recordvar as stockitem) Ends

16、ub,2019/1/13,19,(5)单个记录元素的传送: 实参表中:记录名.元素名 type stockitem partnumber as string*8 description as string*8 unitprice as single quantity as intrger End type Sub PrintpriceTeg(desc as string,price as single) End sub Dim stickrecord as stockitem Call printpriceteg(stockrecord.description,stockrecord.unitprice) ,2019/1/13,20,例9.10 用梯形法求定积分,将积分区间a,bn等分,小区间的长度为, 第i块小矩形的近似面积为: 整个积分的结

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号