(精品)第6章过程.ppt
《(精品)第6章过程.ppt》由会员分享,可在线阅读,更多相关《(精品)第6章过程.ppt(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、人生在勤、不索何获 20128.1本章主要内容本章主要内容过程、函数的定义和使用过程、函数的定义和使用过程、函数的定义和使用过程、函数的定义和使用 函数和过程参数的传递函数和过程参数的传递函数和过程参数的传递函数和过程参数的传递 变量、过程的作用域变量、过程的作用域变量、过程的作用域变量、过程的作用域第第6章章过程过程人生在勤、不索何获 20128.2主模块主模块模块模块1模块模块2模块模块3子模块子模块1子模块子模块2学生成绩管理学生成绩管理成绩录入成绩录入成绩统计成绩统计成绩输出成绩输出统计补考统计补考统计奖学金统计奖学金单科统计单科统计四科以上四科以上 过程是一个具有某种功能的独立过程是
2、一个具有某种功能的独立程序单位,供程序单位,供多次调用。多次调用。第第6章章过程过程人生在勤、不索何获 20128.3使程序变得更简短而清晰使程序变得更简短而清晰有利于程序维护有利于程序维护可以提高程序开发的效率可以提高程序开发的效率提高了代码的重用性提高了代码的重用性 为什么设计过程为什么设计过程人生在勤、不索何获 20128.4过程的分类过程的分类VBVBVBVB中过程按中过程按中过程按中过程按是否由系统提供是否由系统提供是否由系统提供是否由系统提供分为两种过程:分为两种过程:分为两种过程:分为两种过程:vv 系统提供的:系统提供的:系统提供的:系统提供的:内部函数:内部函数:内部函数:内
3、部函数:例:例:例:例:printprintabsabs(-90)(-90)事件过程:事件过程:事件过程:事件过程:例:例:例:例:privatesubprivatesubform_clickform_click()()printprintabsabs(-90)(-90)EndsubEndsubvv用户自定义的:用户自定义的:用户自定义的:用户自定义的:通用过程通用过程通用过程通用过程人生在勤、不索何获 20128.5通用过程:通用过程:通用过程:通用过程:有时多个不同的事件过程可能需要使用有时多个不同的事件过程可能需要使用同一段程序同一段程序代码,这时可将这段代码独立出代码,这时可将这段代码
4、独立出来,编写为一个共用的过程,称为来,编写为一个共用的过程,称为通用过程。通用过程。通用过程常用的有两类:通用过程常用的有两类:SubSub过程过程 (无返回值)(无返回值)Function Function 过程过程 (有返回值)(有返回值)通用过程的分类通用过程的分类人生在勤、不索何获 20128.66.1函数过程的定义与调用函数过程的定义与调用1.引例:已知多边形的边和对角线的长 度,求多边形的面积fdS3cabS1gaeS2S2人生在勤、不索何获 20128.76.1函数过程的定义与调用函数过程的定义与调用 若三角形三个边的长度为若三角形三个边的长度为x,y,z,则则三角形的面积公式
5、三角形的面积公式:其中其中:人生在勤、不索何获 20128.86.1函数过程的定义与调用函数过程的定义与调用分析分析:首先首先定义定义一个求三角形面积的函数过程一个求三角形面积的函数过程,过程中有三个参数过程中有三个参数,分别代表三角形的三个边分别代表三角形的三个边,函数返回值为所求的面积函数返回值为所求的面积,然后然后三次调用三次调用该函数该函数人生在勤、不索何获 20128.96.1函数过程的定义与调用函数过程的定义与调用定义函数Public Function area(x!,y!,z!)As Single Dim C!C=1/2*(x+y+z)area=Sqr(C*(C-x)*(C-y)
6、*(C-z)End Function其中其中:Public可以省略可以省略,也可以用也可以用Private注意注意:函数返回值一定要通过函数名赋值实现函数返回值一定要通过函数名赋值实现形参形参x,y,z 函数过程名函数过程名 函数返回值的类型函数返回值的类型人生在勤、不索何获 20128.106.1函数过程的定义与调用函数过程的定义与调用Private Sub Form_Click()调用过程求面积 Dim a!,b!,c!,d!,e!,f!,g!,s1!,s2!,s3!a=InputBox(请输入a)b=InputBox(请输入b)c=InputBox(请输入c)d=InputBox(请输入
7、d)e=InputBox(请输入e)f=InputBox(请输入f)g=InputBox(请输入g)s1=area(a,b,c)第一次调用函数 s2=area(c,d,e)s3=area(e,f,g)Print s1+s2+s3End Sub实参a,b,c人生在勤、不索何获 20128.116.1函数过程的定义与调用函数过程的定义与调用2.2.函数过程的定义函数过程的定义函数过程的定义函数过程的定义:1)1)利用菜单命令利用菜单命令利用菜单命令利用菜单命令工具工具工具工具-添加过程添加过程添加过程添加过程,再单击再单击再单击再单击”函数函数函数函数”单选钮单选钮单选钮单选钮人生在勤、不索何获
8、20128.126.1函数过程的定义与调用函数过程的定义与调用2.2.函数过程的定义函数过程的定义函数过程的定义函数过程的定义:2)2)利用代码窗口直接定义利用代码窗口直接定义利用代码窗口直接定义利用代码窗口直接定义 Public|PrivatePublic|Private FunctionFunction 函数名函数名函数名函数名(形参声明形参声明形参声明形参声明)AsAs类型类型类型类型 局部变量或常数定义局部变量或常数定义局部变量或常数定义局部变量或常数定义语句块语句块语句块语句块ExitFunctionExitFunction 函数名函数名函数名函数名=返回值返回值返回值返回值 End
9、FunctionEndFunction说明说明说明说明:Public:Public:公有过程,被程序中的公有过程,被程序中的公有过程,被程序中的公有过程,被程序中的所有模块所有模块所有模块所有模块访问调用。访问调用。访问调用。访问调用。Private:Private:私有过程,只能被私有过程,只能被私有过程,只能被私有过程,只能被本模块的其它过程本模块的其它过程本模块的其它过程本模块的其它过程访问。访问。访问。访问。AsAs类型类型类型类型:函数返回值的类型函数返回值的类型 ExitFunction:ExitFunction:在函数过程中终止过程的运行。在函数过程中终止过程的运行。在函数过程中
10、终止过程的运行。在函数过程中终止过程的运行。形参声明形式形参声明形式形参声明形式形参声明形式:形参名形参名形参名形参名1As1As类型类型类型类型,形参名形参名形参名形参名2As2As类型类型类型类型,形参形参形参形参:只能是变量或数组只能是变量或数组只能是变量或数组只能是变量或数组函数过程体函数过程体例6.1人生在勤、不索何获 20128.136.1函数过程的定义与调用函数过程的定义与调用3.3.函数过程的调用函数过程的调用函数过程的调用函数过程的调用:函数过程名函数过程名函数过程名函数过程名(实参实参实参实参)如例如例如例如例6.16.1的三条调用函数的三条调用函数的三条调用函数的三条调用
11、函数areaarea求面积求面积求面积求面积:s1=area(a,b,c)s2=area(c,d,e)s3=area(e,f,g)第第1次调用过程次调用过程实参实参abc形参形参xyz例例6.2编一个程序求最大公约数的函数过程编一个程序求最大公约数的函数过程m n n0 r=m mod n m=n n=r124 24 T 体 4 24 4 4 T 体 0 4 0 0 F 结束循环,公约数为mFunction gcd(m%,n%)As Integer If m n Then t=m:m=n:n=t Do While n 0 求最大公约数 r=m Mod n m=n :n=r Loop gcd=m
12、End Function人生在勤、不索何获 20128.156.1函数过程的定义与调用函数过程的定义与调用例例6.2编一个程序求最大公约数的函数过程编一个程序求最大公约数的函数过程Function gcd(m%,n%)As Integer If m n Then t=m:m=n:n=t Do While n 0 求最大公约数 r=m Mod n m=n n=r Loop gcd=mEnd Function调用函数调用函数Private Sub Form_Click()Dim x%,y%,z%x=124:y=24 z=gcd(x,y)Print 最大公约数;zEnd Sub人生在勤、不索何获 2
13、0128.166.1函数过程的定义与调用函数过程的定义与调用例例6.3编一个函数过程编一个函数过程,统计字符串中汉字个数统计字符串中汉字个数人生在勤、不索何获 20128.176.1函数过程的定义与调用函数过程的定义与调用例例6.3编一个函数过程编一个函数过程,统计字符串中汉字个数统计字符串中汉字个数Function CountC%(s$)定义函数过程 Dim i%,k%,c$For i=1 To Len(s)c=Mid(s,i,1)If Asc(c)0.5Thenk=1Elsek=-1CallMyMove(k)调用过程,调用过程,k是实参是实参或或MyMovekEndSub人生在勤、不索何获
14、 20128.216.2子过程的定义与调用子过程的定义与调用2.Sub2.Sub子过程的定义子过程的定义子过程的定义子过程的定义Private|PublicSub过程名过程名(形参声明形参声明形参声明形参声明)局部变量或常数定义局部变量或常数定义局部变量或常数定义局部变量或常数定义ExitSubExitSub语句块语句块语句块语句块EndSubEndSub 3.Sub3.Sub子过程的调用子过程的调用子过程的调用子过程的调用方法一:方法一:方法一:方法一:CallCall过程名过程名过程名过程名(实参列表实参列表实参列表实参列表)方法二:方法二:方法二:方法二:过程名过程名过程名过程名 实参列
15、表实参列表实参列表实参列表 P151括号位括号位置写错位了置写错位了例例6.4人生在勤、不索何获 20128.228.1.1Sub子过程的定义与调用子过程的定义与调用注意:注意:定义一个过程中,不能在该过程中又定义了另一个过定义一个过程中,不能在该过程中又定义了另一个过程,即定义过程时不能嵌套,否则出错。程,即定义过程时不能嵌套,否则出错。Private Sub a()Print*Private Sub b()Print*End SubEnd SubPrivate Sub Command1_Click()Call aEnd Sub6.2子过程的定义与调用子过程的定义与调用人生在勤、不索何获 2
16、0128.238.1.1Sub子过程的定义与调用子过程的定义与调用注意:注意:定义过程时不能嵌套定义定义过程时不能嵌套定义,但可以调用另一个过程。但可以调用另一个过程。PrivateSuba()Print*Call bEndSubPrivateSubb()Print*EndSubPrivateSubCommand1_Click()CallaEndSub人生在勤、不索何获 20128.2406.9下列叙述中正确的是(下列叙述中正确的是()。)。A)一个)一个Sub过程至少要有一个过程至少要有一个ExitSub语句语句B)一个)一个Sub过程必须有一个过程必须有一个EndSub语句语句C)可以在)
17、可以在Sub过程中定义一个过程中定义一个Function过程,过程,但不能定义但不能定义Sub过程过程D)调用一个)调用一个Function过程可以获得多个返回值过程可以获得多个返回值b人生在勤、不索何获 20128.25Function和和Sub两种过程的区别两种过程的区别例例例例6.56.5分别编一个统计字符串分别编一个统计字符串分别编一个统计字符串分别编一个统计字符串S S中定冠词中定冠词中定冠词中定冠词”thethe“出现的个数的子过程和函数过程出现的个数的子过程和函数过程出现的个数的子过程和函数过程出现的个数的子过程和函数过程,并分别调用并分别调用并分别调用并分别调用,运行界面如图运
18、行界面如图运行界面如图运行界面如图如:输入”If you cant find the answers youneed in the product”,则显示结果如上人生在勤、不索何获 20128.266.2子过程的定义与调用子过程的定义与调用FunctionFuncThe(s$)方法一,定义函数过程方法一,定义函数过程DimCount%,i%,st$Count=0:st=Trim(s)i=InStr(st,the)DoWhilei0Count=Count+1st=Mid(st,i+1)i=InStr(st,the)LoopFuncThe=CountEndFunctionPrivateSubCo
19、mmand1_Click()调用函数过程调用函数过程Text2=FuncThe(Text1)EndSub两边要有空格Function和和Sub两种过程的区别两种过程的区别为找下一个准备人生在勤、不索何获 20128.276.2子过程的定义与调用子过程的定义与调用SubProcThe(s$,Count%)方法二,定义方法二,定义sub过程过程Dimi%,st$Count=0:st=Trim(s)i=InStr(st,the)DoWhilei0Count=Count+1st=Mid(st,i+1):i=InStr(st,the)LoopEndSubPrivateSubCommand2_Click(
20、)调用子程序过程调用子程序过程Dimn%:CallProcThe(Text1,n):Text3=nEndSub增加一个形参增加一个形参Count,保存个数保存个数Function和和Sub两种过程的区别两种过程的区别人生在勤、不索何获 20128.286.2子过程的定义与调用子过程的定义与调用1.1.若程序有若程序有一个返回值一个返回值,用函数过程用函数过程比较直观比较直观,当过程有当过程有多多 个返回值时个返回值时,习惯用子过程习惯用子过程2.2.函数过程有返回值函数过程有返回值,过程名就有类型过程名就有类型,同时在函数过程同时在函数过程 体内必须对体内必须对函数过程名赋值函数过程名赋值.3
21、.3.形参个数形参个数的确定的确定:不要将过程中使用过的变量均作为形不要将过程中使用过的变量均作为形 参参4.形参形参只能是简单变量、数组名、自定义类型只能是简单变量、数组名、自定义类型Function和和Sub两种过程的区别两种过程的区别如例6.1 求面积PublicFunctionarea(x!,y!,z!)AsSingleDimC!C=1/2*(x+y+z)area=Sqr(C*(C-x)*(C-y)*(C-z)EndFunction人生在勤、不索何获 20128.296.3参数传递参数传递参数传递参数传递参数传递参数传递:在调用过程时,就是参数传递,在调用过程时,就是参数传递,在调用过
22、程时,就是参数传递,在调用过程时,就是参数传递,是是是是虚(形参)实(实参)结合。虚(形参)实(实参)结合。虚(形参)实(实参)结合。虚(形参)实(实参)结合。虚实结合的两种方式虚实结合的两种方式虚实结合的两种方式虚实结合的两种方式:传值和传址传值和传址传值和传址传值和传址人生在勤、不索何获 20128.306.3.1传址与传值传址与传值传址与传值传址与传值传值传值传值传值:“单向单向单向单向”传递传递传递传递传址:传址:传址:传址:“双向双向双向双向”传递传递传递传递实参实参实参实参形参形参形参形参传值时:传值时:传值时:传值时:在形参前用在形参前用在形参前用在形参前用 ByValByVal
23、来界定来界定来界定来界定传址时,传址时,传址时,传址时,在形参前用在形参前用在形参前用在形参前用 ByRefByRef或或或或无无无无ByRefByRef和和和和ByvalByval关键字关键字关键字关键字。实参实参实参实参形参形参形参形参人生在勤、不索何获 20128.31例例6.7编写交换两个数的过程编写交换两个数的过程,Swap1用传值传用传值传递递,Swap2用传址传递用传址传递,请读者区别两个过程分请读者区别两个过程分别调用后的结果别调用后的结果6.3.1传址与传值传址与传值传址与传值传址与传值PublicSubSwap1(ByValx%,ByValy%)传值传值Dimt%:t=x:
24、x=y:y=tEndSubPublicSubSwap2(ByRefx%,y%)传址传址Dimt%:t=x:x=y:y=tEndSubPrivateSubCommand1_Click()Dima%,b%:a=10:b=20Swap1a,b调用调用sub过程过程Swap1,值单向,值单向PrintA1=;a;B1=;b;a=10:b=20Swap2a,b调用调用sub过程过程Swap2,址双向,址双向PrintA1=;a;B1=;b;EndSub人生在勤、不索何获 20128.331020 调用前实参调用前实参a:b:1020 调用调用Swap1x:y:2010交换后形参交换后形参x:y:调用后的
25、实参调用后的实参a:b:1020传址传址传址传址:形参的变化会对实参:形参的变化会对实参:形参的变化会对实参:形参的变化会对实参 产生影响。产生影响。产生影响。产生影响。(双向传递双向传递双向传递双向传递)传值传值传值传值:形参的变化不会对实:形参的变化不会对实:形参的变化不会对实:形参的变化不会对实参产生影响。参产生影响。参产生影响。参产生影响。(单向传递单向传递单向传递单向传递)1020 调用前实参调用前实参a:b:1020 调用调用Swap2x:y:2010交换后形参交换后形参x:y:调用后的实参调用后的实参a:b:20106.3.1传址与传值传址与传值传址与传值传址与传值人生在勤、不索
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 过程
限制150内