[医学]第四章函数和过程

上传人:tia****nde 文档编号:70633758 上传时间:2019-01-17 格式:PPT 页数:47 大小:441.31KB
返回 下载 相关 举报
[医学]第四章函数和过程_第1页
第1页 / 共47页
[医学]第四章函数和过程_第2页
第2页 / 共47页
[医学]第四章函数和过程_第3页
第3页 / 共47页
[医学]第四章函数和过程_第4页
第4页 / 共47页
[医学]第四章函数和过程_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《[医学]第四章函数和过程》由会员分享,可在线阅读,更多相关《[医学]第四章函数和过程(47页珍藏版)》请在金锄头文库上搜索。

1、第四章 函数与过程,掌握自定义函数 掌握过程 掌握作用域,例,在处理具体问题的程序设计时,常常会遇到需要多 次执行能够完成一个或几个功能的程序段或多次按 某一规律计算某一类数值的问题。,过程是用来执行一个特定任务的一段程序代码。 VB应用程序(又称工程或项目)由若干过程组成。,过程分两类:,事件过程:当发生某个事件(click)时,对该事件做 出响应的程序段。,通用过程:当多个 不同的事件过程可能需要使用 一段相同的程序代码,可以把这一段代码独立出, 作为一个过程。,通用过程,(一)Function函数过程,VB提供了许多内部函数,如Sin(N),Sqr(N)等, 在编写程序时,只需写出函数名

2、和相应的参数,就 可得到函数值。同内部函数一样,函数过程也有一 个返回值。,1、函数(Function)的定义 函数过程的定义方法也有以下两种。 (1)利用“工具”菜单下的“添加过程”命令定义,Public|PrivateStaticFunction 函数名()As 函数名=表达式 Exit Function End Function,(2)用代码窗口直接定义,(1) Public声明该自定义函数可以在所有模块的任何 子程序中使用。 Private 声明该函数可以在定义它的模块的任何子 程序中使用。 若无public 和private,则系统默认为public;,Static 表示在该函数内所

3、定义的变量在函数结束时使 用的变量值将保留到下次该函数被访问时。如果省略, 则每次执行该自定义时该区域的变量都重新置初值。,说明:,(2)函数名:命名规则与变量名规则相同。但不能与系统的内部函数或其它通用子过程同名,也不能与已定义的全局变量和本模块中模块级变量同名。 (3)在函数体内,函数名可以当变量使用,函数的返回值就是通过对函数名的赋值语句来实现的,在函数中至少要对函数名赋值一次。 (4)AS类型:是指函数返回值的类型,若省略,则函数返回变体类型值(Variant)。,()Exit Function:表示退出函数过程,常常是与选择结构(If或Select Case语句)联用,即当满足一定条

4、件时,退出函数过程。 ()参数列表:形式参数通常简称“形参”,仅表示形参的类型、个数、位置,定义时是无值的,只有在被调用时,与实参结合后才获得相应的值。,参数的定义形式: ByValByRef变量名( )As 类型,, ByVal表示当该过程被调用时,参数是按值传递的;在过程中的变化不会返回到主程序。 缺省或ByRef表示当该过程被调用时,参数是按地址传递的,即参数值在过程中的任何变化都返回主程序。,例:下面的全局函数MyAbs计算给定数的绝对值,Public function MyAbs(dbl1 as Double) as Double,If dbl1=0 Then MyAbs =dbl1

5、 Else MyAbs=-dbl1 End if,End function,函数值表达式,Fac = F,函数=返回值,例:用函数求阶层,填空。,2、函数的调用,调用形式如下: 变量名函数名(实参列表) 其功能是求得函数的返回值。 说明: 在调用时实参和形参的数据类型、顺序、个数必须匹配。 函数过程不能作为单独的语句加以调用,必须作为表达式或表达式的一部分。,变量名 = 函数名(参数列表),下面的语句调用上例中的MyAbs函数。,int1 =MyAbs(-5) Sng1=sin(2*MyAbs(3)-MyAbs(-2),【例】编一个求n!的函数过程,然后调用它计算 7!+11!-10!。,调用

6、过程的语句为:,jch(7),jch(11),jch(10),例43 显示11000之间的素数。要求编制函数 过程,用于判断1个整数是否是素数,例44 计算a数组中的最大值与b数组中最大值之差,(二)sub过程(子过程),1、子过程的定义形式如下: Public|PrivateStatic Sub 子过程名(形参表) 语句组 Exit Sub 语句组 End Sub,说明: 1)定义的关键字是sub 和end sub 2)无返回值,亦即无s类型 3) 中可以有多个形参,它们之间用逗号“,”隔开。也可以无形式参数,同时括号也应无.,Public Sub Swap( X As Integer, Y

7、 As Integer) Dim Temp As Integer Temp=X X=Y Y=Temp End Sub,例:编一个交换两个整型变量值的子过程。,2、子过程的调用,(1) 用Call语句调用Sub过程 格式:Call 过程名(参数列表) 例如: Call swap(a,b),(2) 把过程名作为一个语句来使用 格式: 过程名参数列表 与第一种调用方法相比,这种调用方式省略了关键字Call,去掉了“参数列表”的括号。 例如: swap a,b,子过程调用的执行过程:,Private Sub CmdOK() Call Swap(a,b) Swap a,b End Sub,Private

8、 Sub Swap(x%,y%) Dim temp% Temp=X X=Y Y=Temp End Sub,【例】编一个求n!的子过程,然后调用它计算7!+11!-10!。,sub过程与function函数过程的区别,区别: (1)子过程以关键字Sub开始,函数以关键字Function开始。 (2)子过程没有返回值,没有类型; 函数有返回值,有类型。 (3)调用时,子过程是一条独立的语句; 但函数不能作为独立的语句加以调用,必须参与表达式运算。,例47 将数组中各元素按值从大到小排序,要求 将数组排序编写为sub过程,参数传递,在调用过程时,一般主调过程与被调过程之间有 数据传递,即将主调过程的

9、实参传递给被调过程 的形参,完成实参与形参的结合,然后执行被调 过程体。,主调过程:调用函数语句所在的母体,被调过程:调用语句中的过程,如:Form_click()为主调过程,jch()为被调过程,形式参数(简称”形参“)是指在定义sub子过程或 Function函数中后面圆括号内的参数。它用来接收 传送给过程的数据。,Public Function psqr(a1 as Integer,b1 as Integer) as Integer psqr=Sqr(a12+b12)+a1*b1 End Function,形参,实际参数,实际参数(简称“实参”)是指在调用sub或Function 时,写

10、入子过程名或函数名后面圆括号内的参数。 它将它们的数据(数值或地址)传送给sub或Function 与其对应的形式参数。 实参可以是常量、表达式、有效的变量名、数 组名等。,Sub form_click() . . x=psqr(1,2) End sub,(1)传值 传值的参数传递过程是:当调用一个过程时,系统将实参的值复制给形参,之后实参与形参便断开了联系。被调过程对形参的操作是在形参自己的存储单元中进行,当过程调用结束时,这些形参所占用的存储单元也同时被释放。因此在过程中对形参的任何操作都不会影响到实参。,形参加ByVal.,两种方式:传值和传地址,(2)传址 传址的参数传递过程是:当调用

11、一个过程时,它将实参的地址传递给形参。因此在被调过程体中对形参的任何操作都变成了对相应实参的操作,因此实参的值就会随形参的改变而改变。当参数是字符串或数组时,使用传址传递直接将实参的地址传递给过程,会使程序的效率提高。,形参加ByRef。,若省略,则按地址传递。,Private Sub Command1_Click() a% = 10 b% = 20 Swap1 a, b print a,b End Sub,Sub Swap1(ByVal x%, ByVal y%) t% = x: x = y: y = t End Sub,传值(形参前有ByVal说明) 实参的值不随形参的值变化而改变,Pri

12、vate Sub Command2_Click() a% = 10 b% = 20 Swap2 a, b print a, b End Sub,Sub Swap2(x%, y%) t% = x: x = y: y = t End Sub,传址(形参前有ByRef说明) 实参的值随形参值的改变而改变,例:单击Command1后的运行结果,Sub SS(ByVal X%, ByRef Y%, Z%) X = X + 1 Y = Y + 1 Z = Z + 1 End Sub,Private Sub Command1_Click() Dim A%, B%, C% A = 1 B = 2 C = 3

13、Call SS(A, B, C) Print A; B; C End Sub,1 3 4,注意: 如果在调用时该形参对应的实参是常量或者表达式,则按值传递方式调用过程。,Private Sub Command1_Click() Dim A%, B%, C% A = 1 B = 2 C = 3 Call SS(A, 2, C+1) Print A; B; C End Sub,Sub SS(ByVal X%, ByRef Y%, Z%) X = X + 1 Y = Y + 1 Z = Z + 1 End Sub,1 2 3,数组参数的传递,VB允许把数组作为实参传送到过程中。例如:,Sub s(

14、a() ,b() End sub,该过程有两个参数,这两个参数都是数组。用数组 作为参数时,应在数组后面加上一对括号。可以用 下面的语句调用该过程:,Call s( p (),q(),把数组p和q传送给a b。当用数组传递时 ,使用传地址方式,p数组,实参数组与形参数组,p(0)=2,a(0)=2,如果在过程中改变了a数 组的值,例如a(4)=2,那么 在执行完过程后,数组p的 第4个元素的值变为20。,a数组,注意: 过程定义时,形参列表中的数组用数组名后的一对空的圆括号表示,维数省略。而在调用时不需要一定要加括号。 用数组作为过程的参数时,进行的不是“值”的传递,而是“址”的传递。,例:输

15、入一维数组,对数组中的值进行求积,用函数实现。,Private Sub form_Click() Dim a(3) As Integer Dim k As Integer, j As Integer End Sub,For j = LBound(a) To UBound(a) a (j) = j1 Next j,k = tim(a( ) Print k,Private Function tim(n( ) As Integer) Dim t%, i% t = 1 For i = LBound(n) To UBound(n) t = t * n(i) Next i tim = t End Func

16、tion,例49 编制sub过程,用于在数组中找出最大值、 最小值。,习题:设function pd()是自定义函数;函数被调用多次, 请仔细分析每次调用后有关变量的变化。,Function pd(ByVal x as Integer,y as Integer) As integer Dim m as Integer Dim n as Integer m=x+y : x=x+1 y=y+1: n=x-y print “m=“;m;”x=”;x ;”y=”;y _ ;”n=”;n pd=n End Function,Sub Form_click() Dim a as integer,b as integer Dim c as integer,d as integer a=2:b=3:c=0 d=pd(a,b) print “a=”;a,”b=“;b

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

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

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