[医学]第四章函数和过程ppt课件_第1页
[医学]第四章函数和过程ppt课件_第2页
[医学]第四章函数和过程ppt课件_第3页
[医学]第四章函数和过程ppt课件_第4页
[医学]第四章函数和过程ppt课件_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 函数与过程n 掌握自定义函数n掌握过程n掌握作用域例在处理详细问题的程序设计时,常常会遇到需要多次执行可以完成一个或几个功能的程序段或屡次按某一规律计算某一类数值的问题。 Visual Basic系统提供了过程。系统提供了过程。 过程是用来执行一个特定任务的一段程序代码。过程是用来执行一个特定任务的一段程序代码。VB应用程序又称工程或工程由假设干过程组成。过程分两类:n事件过程:当发生某个事件click时,对该事件做出响应的程序段。n通用过程:当多个 不同的事件过程可能需要使用一段一样的程序代码,可以把这一段代码独立出,作为一个过程。通用过程以以“Function”保留字开始的函数过程

2、保留字开始的函数过程以以“sub”保留字开始的子程序过程保留字开始的子程序过程一Function函数过程VB提供了许多内部函数,如SinN,SqrN等,在编写程序时,只需写出函数名和相应的参数,就可得到函数值。同内部函数一样,函数过程也有一个返回值。1、函数Function的定义函数过程的定义方法也有以下两种。1利用“工具菜单下的“添加过程命令定义 Public|PrivateStaticFunction 函数名函数名As函数名=表达式Exit FunctionEnd Function函数体函数体2用代码窗口直接定义1 Public声明该自定义函数可以在所有模块所有模块的任何子程序中使用。Pr

3、ivate 声明该函数可以在定义它的模块定义它的模块的任何子程序中使用。假设无public 和private,那么系统默认为public;Static 表示在该函数内所定义的变量在函数完毕时使用的变量值将保存到下次该函数被访问时变量值将保存到下次该函数被访问时。假如省略,那么每次执行该自定义时该区域的变量都重新置初值。说明:说明:2函数名:命名规那么与变量名规那么一样。但不能与系统的内部函数或其它通用子过程同不能与系统的内部函数或其它通用子过程同名,名,也不能与已定义的全局变量和本模块中模块级变量同名。3在函数体内,函数名可以当变量使用,函数的返回值就是通过对函数名的赋值语句赋值语句来实现的,

4、在函数中至少要对函数名赋值一次。在函数中至少要对函数名赋值一次。4AS类型:是指函数返回值的类型,假设省略,那么函数返回变体类型值Variant。 Exit Function:表示退出函数过程,常常是与选择构造If或Select Case语句联用,即当满足一定条件时,退出函数过程。参数列表:形式参数通常简称“形参,仅表示形参的类型、个数、位置,定义时是无值的,只有在被调用时,与实参结合后才获得相应的值。 参数的定义形式: ByValByRef变量名 As 类型,,nByVal表示当该过程被调用时,参数是按值传递的;在过程中的变化不会返回到主程序。n缺省或ByRef表示当该过程被调用时,参数是按

5、地址传递的,即参数值在过程中的任何变化都返回主程序。例:下面的全局函数MyAbs计算给定数的绝对值Public function MyAbsdbl1 as Double as DoubleIf dbl1=0 Then MyAbs =dbl1Else MyAbs=-dbl1=-dbl1End ifEnd function函数值表达式函数值表达式Private Function Fac(ByVal n As Long) As Long Dim F&, i% F = 1 For i = 1 To n F = F * i Next i End FunctionFac = F函数=返回值例:用函

6、数求阶层,填空。2、函数的调用调用形式如下:变量名函数名实参列表其功能是求得函数的返回值。说明:说明:u 在调用时实参和形参的数据类型、顺序、个数必须匹配。u 函数过程不能作为单独的语句加以调用,必须作为表达式或表达式的一部分。 变量名 = 函数名参数列表下面的语句调用上例中的下面的语句调用上例中的MyAbs函数函数。int1 =MyAbs-5Sng1=sin2*MyAbs3-MyAbs-2Function jch&(n%) Dim i% jch = 1 For i = 1 To n jch = jch * i Next i End FunctionPrivate Sub Form_C

7、lick() Dim d& d = jch(7)+ jch(11) jch(10) Print 7!+11!10!=;dEnd Sub调用过程的语句为:jch7,jch11,jch10 例例43 显示显示11000之间的素数。要求编制函数之间的素数。要求编制函数过程,用于判断过程,用于判断1个整数是否是素数个整数是否是素数例例4 44 4 计算计算a a数组中的最大值与数组中的最大值与b b数组中最大值之差数组中最大值之差二sub过程子过程1、子过程的定义形式如下:Public|PrivateStatic Sub 子过程名子过程名形参表形参表 语句组语句组 Exit Sub 语句组语句

8、组End Sub Public Sub sum(x%,y%,s%) s = x + y End Sub说明:说明: 1定义的关键字是sub 和end sub 2无返回值,亦即无s类型 3 中可以有多个形参,它们之间用逗号“,隔开。也可以无形式参数,同时括号也应无.Public Sub Swap X As Integer, Y As Integer Dim Temp As Integer Temp=X X=Y Y=TempEnd Sub例例: :编一个交换两个整型变量值的子过程。编一个交换两个整型变量值的子过程。2、子过程的调用参数必须在参数必须在括号内括号内1 用Call语句调用Sub过程 格

9、式:Call 过程名参数列表例如: Call swapa,b2 把过程名作为一个语句来使用 格式: 过程名过程名参数列表参数列表 与第一种调用方法相比,这种调用方式省略了关键字Call,去掉了“参数列表的括号。 例如: swap a,b 子过程调用的执行过程:Private Sub CmdOK Call Swapa,b Swap a,bEnd SubPrivate Sub Swapx%,y% Dim temp% Temp=X X=Y Y=TempEnd Sub程序如下:Sub jch(n%,p&) Dim i% p = 1 For i = 1 To n p = p * i Next I

10、End SubPrivate Sub Form_Click() Dim a&,b&,c&,d& Call jch(7,a) Call jch(11,b) Call jch(10,c) d = a + bc Print 7!+11!-10!=;dEnd Subsub过程与function函数过程的区别区别:1子过程以关键字Sub开场,函数以关键字Function开场。2子过程没有返回值,没有类型; 函数有返回值,有类型。3调用时,子过程是一条独立的语句; 但函数不能作为独立的语句加以调用,必须参与表达式运算。例47 将数组中各元素按值从大到小排序,要求将数组排序编

11、写为sub过程参数传递参数传递 在调用过程时,一般主调过程与被调过程之间有在调用过程时,一般主调过程与被调过程之间有数据传递,即将主调过程的数据传递,即将主调过程的实参传递给被调过程实参传递给被调过程的形参的形参,完成实参与形参的结合,然后执行被调,完成实参与形参的结合,然后执行被调过程体。过程体。主调过程:调用函数语句所在的母体主调过程:调用函数语句所在的母体被调过程:调用语句中的过程被调过程:调用语句中的过程如:如:Form_click为主调过程,为主调过程,jch为被调过程为被调过程n形式参数简称形参形式参数简称形参“是指在是指在定义定义sub子过程或子过程或Function函数中后面圆

12、括号内的参数。它用来接收函数中后面圆括号内的参数。它用来接收传送给过程的数据。传送给过程的数据。Public Function psqra1 as Integer,b1 as Integer as Integer psqr=Sqra12+b12+a1*b1End Function形参形参实际参数实际参数n实际参数简称实际参数简称“实参是指在实参是指在调用调用sub或或Function时,写入子过程名或函数名后面圆括号内的参数。时,写入子过程名或函数名后面圆括号内的参数。它将它们的数据它将它们的数据数值或地址数值或地址传送给传送给sub或或Function与其对应的形式参数。与其对应的形式参数。

13、实参可以是常量、表达式、有效的变量名、数实参可以是常量、表达式、有效的变量名、数组名等。组名等。Sub form_click . . x=psqr1,2 .End sub1 1传值传值传值的参数传递过程是:当调用一个传值的参数传递过程是:当调用一个过程时,系统过程时,系统将实参的值复制给形参将实参的值复制给形参,之,之后实参与形参便断开了联络。后实参与形参便断开了联络。被调过程对被调过程对形参的操作是在形参自己的存储单元中进形参的操作是在形参自己的存储单元中进展,展,当过程调用完毕时,这些形参所占用当过程调用完毕时,这些形参所占用的存储单元也同时被释放。因此的存储单元也同时被释放。因此在过程中

14、在过程中对形参的任何操作都不会影响到实参。对形参的任何操作都不会影响到实参。形参加形参加ByVal.两种方式:传值和传地址两种方式:传值和传地址2 2传址传址 传址的参数传递过程是:当调用一个过程时传址的参数传递过程是:当调用一个过程时,它,它将实参的地址传递给形参将实参的地址传递给形参。因此在被调过程。因此在被调过程体中对形参的任何操作都变成了对相应实参的操体中对形参的任何操作都变成了对相应实参的操作,因此作,因此实参的值就会随形参的改变而改变。实参的值就会随形参的改变而改变。当当参数是字符串或数组时,使用传址传递直接将实参数是字符串或数组时,使用传址传递直接将实参的地址传递给过程,会使程序

15、的效率进步。参的地址传递给过程,会使程序的效率进步。形参加形参加ByRef。假设省略假设省略,那么按地址传递。那么按地址传递。Private Sub Command1_Click a% = 10 b% = 20 Swap1 a, b print a,bEnd SubSub Swap1ByVal x%, ByVal y% t% = x: x = y: y = tEnd Sub传值传值形参前有形参前有ByVal说明说明实参的值不随形参的值变化而改变Private Sub Command2_Click a% = 10 b% = 20 Swap2 a, b print a, bEnd SubSub S

16、wap2x%, y% t% = x: x = y: y = tEnd Sub传传址址形参前有形参前有ByRef说明说明实参的值随形参值的改变而改变例:单击Command1后的运行结果Sub SSByVal X%, ByRef Y%, Z%X = X + 1Y = Y + 1Z = Z + 1End SubPrivate Sub Command1_ClickDim A%, B%, C%A = 1B = 2C = 3Call SSA, B, CPrint A; B; CEnd Sub 1 3 4注意: 假如在调用时该形参对应的实参是常量或者表达式,那么按值传递方式调用过程。Private Sub

17、Command1_ClickDim A%, B%, C%A = 1B = 2C = 3Call SSA, 2, C+1Print A; B; CEnd Sub Sub SSByVal X%, ByRef Y%, Z%X = X + 1Y = Y + 1Z = Z + 1End Sub1 2 3数组参数的传递数组参数的传递VB允许把数组作为实参传送到过程中。例如:Sub s a ,b .End sub该过程有两个参数,这两个参数都是该过程有两个参数,这两个参数都是数组数组。用数组。用数组作为参数时,应在数组后面加上一对括号。可以用作为参数时,应在数组后面加上一对括号。可以用下面的语句调用该过程:

18、下面的语句调用该过程:Call s p ,q把数组p和q传送给ab。当用数组传递时,使用传地址传地址方式246810p数组实参数组与形参数组p0=2 a0=2假如在过程中改变了a数组的值,例如a4=2,那么在执行完过程后,数组p的第4个元素的值变为20。a数组注意:n过程定义时,形参列表中的数组用数组名后形参列表中的数组用数组名后的一对空的圆括号表示,维数省略。而在调用的一对空的圆括号表示,维数省略。而在调用时不需要一定要加括号。时不需要一定要加括号。n用数组作为过程的参数时,进展的不是“值的传递,而是“址的传递。例:输入一维数组,对数组中的值进展求积,用函数实现。Private Sub fo

19、rm_Click Dim a3 As Integer Dim k As Integer, j As IntegerEnd SubFor j = LBounda To UBounda a j = j1Next jk = tima Print k数组作实参省略维数函数返回一个值Private Function timn As Integer Dim t%, i% t = 1 For i = LBoundn To UBoundn t = t * ni Next i tim = tEnd Function数组作形参省略维数例49 编制sub过程,用于在数组中找出最大值、最小值。习题:设习题:设func

20、tion pd是自定义函数是自定义函数;函数被调用屡次,函数被调用屡次,请仔细分析每次调用后有关变量的变化。请仔细分析每次调用后有关变量的变化。Function pdByVal 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=nEnd FunctionSub Form_click Dim a as integer,b as integer Dim c as integer,d as integer a=2:b=3:c=0 d=pda,b print “a=;a,b=“;b d=pda,b print “a=“;a,b=“;b d=pda+b,c print “a=“;a,b=;bEnd sub 当第一次调用函数pd时,实在参数a 取代形式 参

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论