欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    (精品)第6章过程.ppt

    • 资源ID:85541392       资源大小:1.52MB        全文页数:74页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    (精品)第6章过程.ppt

    人生在勤、不索何获 20128.1本章主要内容本章主要内容过程、函数的定义和使用过程、函数的定义和使用过程、函数的定义和使用过程、函数的定义和使用 函数和过程参数的传递函数和过程参数的传递函数和过程参数的传递函数和过程参数的传递 变量、过程的作用域变量、过程的作用域变量、过程的作用域变量、过程的作用域第第6章章过程过程人生在勤、不索何获 20128.2主模块主模块模块模块1模块模块2模块模块3子模块子模块1子模块子模块2学生成绩管理学生成绩管理成绩录入成绩录入成绩统计成绩统计成绩输出成绩输出统计补考统计补考统计奖学金统计奖学金单科统计单科统计四科以上四科以上 过程是一个具有某种功能的独立过程是一个具有某种功能的独立程序单位,供程序单位,供多次调用。多次调用。第第6章章过程过程人生在勤、不索何获 20128.3使程序变得更简短而清晰使程序变得更简短而清晰有利于程序维护有利于程序维护可以提高程序开发的效率可以提高程序开发的效率提高了代码的重用性提高了代码的重用性 为什么设计过程为什么设计过程人生在勤、不索何获 20128.4过程的分类过程的分类VBVBVBVB中过程按中过程按中过程按中过程按是否由系统提供是否由系统提供是否由系统提供是否由系统提供分为两种过程:分为两种过程:分为两种过程:分为两种过程:vv 系统提供的:系统提供的:系统提供的:系统提供的:内部函数:内部函数:内部函数:内部函数:例:例:例:例:printprintabsabs(-90)(-90)事件过程:事件过程:事件过程:事件过程:例:例:例:例:privatesubprivatesubform_clickform_click()()printprintabsabs(-90)(-90)EndsubEndsubvv用户自定义的:用户自定义的:用户自定义的:用户自定义的:通用过程通用过程通用过程通用过程人生在勤、不索何获 20128.5通用过程:通用过程:通用过程:通用过程:有时多个不同的事件过程可能需要使用有时多个不同的事件过程可能需要使用同一段程序同一段程序代码,这时可将这段代码独立出代码,这时可将这段代码独立出来,编写为一个共用的过程,称为来,编写为一个共用的过程,称为通用过程。通用过程。通用过程常用的有两类:通用过程常用的有两类:SubSub过程过程 (无返回值)(无返回值)Function Function 过程过程 (有返回值)(有返回值)通用过程的分类通用过程的分类人生在勤、不索何获 20128.66.1函数过程的定义与调用函数过程的定义与调用1.引例:已知多边形的边和对角线的长 度,求多边形的面积fdS3cabS1gaeS2S2人生在勤、不索何获 20128.76.1函数过程的定义与调用函数过程的定义与调用 若三角形三个边的长度为若三角形三个边的长度为x,y,z,则则三角形的面积公式三角形的面积公式:其中其中:人生在勤、不索何获 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)*(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(请输入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)利用菜单命令利用菜单命令利用菜单命令利用菜单命令工具工具工具工具-添加过程添加过程添加过程添加过程,再单击再单击再单击再单击”函数函数函数函数”单选钮单选钮单选钮单选钮人生在勤、不索何获 20128.126.1函数过程的定义与调用函数过程的定义与调用2.2.函数过程的定义函数过程的定义函数过程的定义函数过程的定义:2)2)利用代码窗口直接定义利用代码窗口直接定义利用代码窗口直接定义利用代码窗口直接定义 Public|PrivatePublic|Private FunctionFunction 函数名函数名函数名函数名(形参声明形参声明形参声明形参声明)AsAs类型类型类型类型 局部变量或常数定义局部变量或常数定义局部变量或常数定义局部变量或常数定义语句块语句块语句块语句块ExitFunctionExitFunction 函数名函数名函数名函数名=返回值返回值返回值返回值 EndFunctionEndFunction说明说明说明说明:Public:Public:公有过程,被程序中的公有过程,被程序中的公有过程,被程序中的公有过程,被程序中的所有模块所有模块所有模块所有模块访问调用。访问调用。访问调用。访问调用。Private:Private:私有过程,只能被私有过程,只能被私有过程,只能被私有过程,只能被本模块的其它过程本模块的其它过程本模块的其它过程本模块的其它过程访问。访问。访问。访问。AsAs类型类型类型类型:函数返回值的类型函数返回值的类型 ExitFunction:ExitFunction:在函数过程中终止过程的运行。在函数过程中终止过程的运行。在函数过程中终止过程的运行。在函数过程中终止过程的运行。形参声明形式形参声明形式形参声明形式形参声明形式:形参名形参名形参名形参名1As1As类型类型类型类型,形参名形参名形参名形参名2As2As类型类型类型类型,形参形参形参形参:只能是变量或数组只能是变量或数组只能是变量或数组只能是变量或数组函数过程体函数过程体例6.1人生在勤、不索何获 20128.136.1函数过程的定义与调用函数过程的定义与调用3.3.函数过程的调用函数过程的调用函数过程的调用函数过程的调用:函数过程名函数过程名函数过程名函数过程名(实参实参实参实参)如例如例如例如例6.16.1的三条调用函数的三条调用函数的三条调用函数的三条调用函数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=mEnd 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人生在勤、不索何获 20128.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人生在勤、不索何获 20128.216.2子过程的定义与调用子过程的定义与调用2.Sub2.Sub子过程的定义子过程的定义子过程的定义子过程的定义Private|PublicSub过程名过程名(形参声明形参声明形参声明形参声明)局部变量或常数定义局部变量或常数定义局部变量或常数定义局部变量或常数定义ExitSubExitSub语句块语句块语句块语句块EndSubEndSub 3.Sub3.Sub子过程的调用子过程的调用子过程的调用子过程的调用方法一:方法一:方法一:方法一:CallCall过程名过程名过程名过程名(实参列表实参列表实参列表实参列表)方法二:方法二:方法二:方法二:过程名过程名过程名过程名 实参列表实参列表实参列表实参列表 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子过程的定义与调用子过程的定义与调用人生在勤、不索何获 20128.238.1.1Sub子过程的定义与调用子过程的定义与调用注意:注意:定义过程时不能嵌套定义定义过程时不能嵌套定义,但可以调用另一个过程。但可以调用另一个过程。PrivateSuba()Print*Call bEndSubPrivateSubb()Print*EndSubPrivateSubCommand1_Click()CallaEndSub人生在勤、不索何获 20128.2406.9下列叙述中正确的是(下列叙述中正确的是()。)。A)一个)一个Sub过程至少要有一个过程至少要有一个ExitSub语句语句B)一个)一个Sub过程必须有一个过程必须有一个EndSub语句语句C)可以在)可以在Sub过程中定义一个过程中定义一个Function过程,过程,但不能定义但不能定义Sub过程过程D)调用一个)调用一个Function过程可以获得多个返回值过程可以获得多个返回值b人生在勤、不索何获 20128.25Function和和Sub两种过程的区别两种过程的区别例例例例6.56.5分别编一个统计字符串分别编一个统计字符串分别编一个统计字符串分别编一个统计字符串S S中定冠词中定冠词中定冠词中定冠词”thethe“出现的个数的子过程和函数过程出现的个数的子过程和函数过程出现的个数的子过程和函数过程出现的个数的子过程和函数过程,并分别调用并分别调用并分别调用并分别调用,运行界面如图运行界面如图运行界面如图运行界面如图如:输入”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=CountEndFunctionPrivateSubCommand1_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()调用子程序过程调用子程序过程Dimn%:CallProcThe(Text1,n):Text3=nEndSub增加一个形参增加一个形参Count,保存个数保存个数Function和和Sub两种过程的区别两种过程的区别人生在勤、不索何获 20128.286.2子过程的定义与调用子过程的定义与调用1.1.若程序有若程序有一个返回值一个返回值,用函数过程用函数过程比较直观比较直观,当过程有当过程有多多 个返回值时个返回值时,习惯用子过程习惯用子过程2.2.函数过程有返回值函数过程有返回值,过程名就有类型过程名就有类型,同时在函数过程同时在函数过程 体内必须对体内必须对函数过程名赋值函数过程名赋值.3.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参数传递参数传递参数传递参数传递参数传递参数传递:在调用过程时,就是参数传递,在调用过程时,就是参数传递,在调用过程时,就是参数传递,在调用过程时,就是参数传递,是是是是虚(形参)实(实参)结合。虚(形参)实(实参)结合。虚(形参)实(实参)结合。虚(形参)实(实参)结合。虚实结合的两种方式虚实结合的两种方式虚实结合的两种方式虚实结合的两种方式:传值和传址传值和传址传值和传址传值和传址人生在勤、不索何获 20128.306.3.1传址与传值传址与传值传址与传值传址与传值传值传值传值传值:“单向单向单向单向”传递传递传递传递传址:传址:传址:传址:“双向双向双向双向”传递传递传递传递实参实参实参实参形参形参形参形参传值时:传值时:传值时:传值时:在形参前用在形参前用在形参前用在形参前用 ByValByVal来界定来界定来界定来界定传址时,传址时,传址时,传址时,在形参前用在形参前用在形参前用在形参前用 ByRefByRef或或或或无无无无ByRefByRef和和和和ByvalByval关键字关键字关键字关键字。实参实参实参实参形参形参形参形参人生在勤、不索何获 20128.31例例6.7编写交换两个数的过程编写交换两个数的过程,Swap1用传值传用传值传递递,Swap2用传址传递用传址传递,请读者区别两个过程分请读者区别两个过程分别调用后的结果别调用后的结果6.3.1传址与传值传址与传值传址与传值传址与传值PublicSubSwap1(ByValx%,ByValy%)传值传值Dimt%:t=x: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:调用后的实参调用后的实参a:b:1020传址传址传址传址:形参的变化会对实参:形参的变化会对实参:形参的变化会对实参:形参的变化会对实参 产生影响。产生影响。产生影响。产生影响。(双向传递双向传递双向传递双向传递)传值传值传值传值:形参的变化不会对实:形参的变化不会对实:形参的变化不会对实:形参的变化不会对实参产生影响。参产生影响。参产生影响。参产生影响。(单向传递单向传递单向传递单向传递)1020 调用前实参调用前实参a:b:1020 调用调用Swap2x:y:2010交换后形参交换后形参x:y:调用后的实参调用后的实参a:b:20106.3.1传址与传值传址与传值传址与传值传址与传值人生在勤、不索何获 20128.346.3参数传递参数传递实验书实验书P174-4Subm(xAsInteger,yAsInteger)x=x+yy=y+xEndSubPrivateSubForm_Click()DimxAsIntegerDimyAsIntegerx=4:y=5mx,y址传递址传递Printx;y;m(x),(y)值传递值传递Printx;y:EndSub单击命令按钮,则结果是单击命令按钮,则结果是_。mx,y,调用过程调用过程m,址传递址传递形形:X=4+5=9,Y=5+9=14实参等于形参实参等于形参m(x),(y),调用过程调用过程m,值传递值传递形形:x=9+14=23y=14+23=37实参实参:不变不变注意:注意:带括号的变量传递时按值传递带括号的变量传递时按值传递人生在勤、不索何获 20128.356.3.2数组参数的传递数组参数的传递用数组名作为形参或实参,按用数组名作为形参或实参,按用数组名作为形参或实参,按用数组名作为形参或实参,按址传址传址传址传递递递递,忽略维数的定义,但数组的圆括,忽略维数的定义,但数组的圆括,忽略维数的定义,但数组的圆括,忽略维数的定义,但数组的圆括号不能省号不能省号不能省号不能省如果被调用过程不知道实参数组的如果被调用过程不知道实参数组的如果被调用过程不知道实参数组的如果被调用过程不知道实参数组的上界和下界,可用上界和下界,可用上界和下界,可用上界和下界,可用LBoundLBound和和UBoundUBound函函数来确定传送给过程的数组的下界和数来确定传送给过程的数组的下界和上界上界用数组元素作为实参进行传递用数组元素作为实参进行传递用数组元素作为实参进行传递用数组元素作为实参进行传递人生在勤、不索何获 20128.366.3.2数组参数的传递数组参数的传递例例6.8编一个函数过程编一个函数过程,求任意一维数组求任意一维数组中各元素之积中各元素之积,主调该函数主调该函数,分别求分别求Functiontim(a()AsInteger)AsDouble定义定义t=1Fori=LBound(a)ToUBound(a)t=t*a(i)Nextitim=tEndFunctionPrivateSubCommand1_Click()Dima%(1To5),b%(2To10),i%,t1#,t2#Fori=1To5赋初值赋初值a(i)=iNextiFori=2To10赋初值赋初值b(i)=iNextit1=tim(a():t2=tim(b()调用调用Printt1=;t1,t2=;t2EndSub人生在勤、不索何获 20128.386.3.2数组参数的传递数组参数的传递例例6.9编两个子过程编两个子过程:子过程一求数组中最大值子过程一求数组中最大值和最小值和最小值;子过程二以每行子过程二以每行5列来显示数组结果列来显示数组结果.主调程序有主调程序有10个元素个元素,分别调用两个子过程分别调用两个子过程.Subfmaxmin(a(),maxa,mina)求最大值最小值的过程求最大值最小值的过程n1=LBound(a):n2=UBound(a)maxa=a(n1):mina=a(n1)Fori=n1+1Ton2Ifa(i)maxaThenmaxa=a(i)Ifa(i)10,100,-100)f.Showf.Caption=YEndSub运行程序后运行程序后,正确的结果是正确的结果是()orm1的的caption的属性值为的属性值为orm的的caption的属性值为的属性值为orm1的的caption的属性值为的属性值为orm的的caption的属性值为的属性值为B人生在勤、不索何获 20128.42作用域作用域是某些事物起作用或有效的区域。是某些事物起作用或有效的区域。限于陆地限于陆地限于海洋限于海洋限于空中限于空中6.4过程和变量的作用域过程和变量的作用域人生在勤、不索何获 20128.43在程序中我们定义的变量、过程、函数均在程序中我们定义的变量、过程、函数均在程序中我们定义的变量、过程、函数均在程序中我们定义的变量、过程、函数均有其作用范围即作用域。有其作用范围即作用域。有其作用范围即作用域。有其作用范围即作用域。过程作用域分为:过程作用域分为:过程作用域分为:过程作用域分为:1.1.窗体窗体窗体窗体/模块级:模块级:模块级:模块级:指在某个窗体或标准模块内定指在某个窗体或标准模块内定指在某个窗体或标准模块内定指在某个窗体或标准模块内定义的过程义的过程义的过程义的过程,定义的过程前加定义的过程前加定义的过程前加定义的过程前加PrivatePrivate关键字关键字关键字关键字,只能只能只能只能被被被被本窗体本窗体本窗体本窗体或或或或本标准模块本标准模块本标准模块本标准模块中的过程调用中的过程调用中的过程调用中的过程调用2.2.全局级:全局级:全局级:全局级:指在某个窗体或标准模块内定义的指在某个窗体或标准模块内定义的指在某个窗体或标准模块内定义的指在某个窗体或标准模块内定义的过程过程过程过程,其默认是全局的其默认是全局的其默认是全局的其默认是全局的,也可以加也可以加也可以加也可以加PublicPublic关键字关键字关键字关键字,作用域最大,作用在整个工程范围作用域最大,作用在整个工程范围作用域最大,作用在整个工程范围作用域最大,作用在整个工程范围所有窗体和所有窗体和所有窗体和所有窗体和所有标准模块内。所有标准模块内。所有标准模块内。所有标准模块内。6.4.16.4.1过程的作用域过程的作用域过程的作用域过程的作用域人生在勤、不索何获 20128.441.1.局部变量局部变量局部变量局部变量(过程级过程级过程级过程级):在在在在过程过程过程过程中用中用中用中用DimDim或不加声明直接使用的变量或不加声明直接使用的变量或不加声明直接使用的变量或不加声明直接使用的变量2.2.窗体窗体窗体窗体/模块级变量:模块级变量:模块级变量:模块级变量:在在在在窗体模块窗体模块窗体模块窗体模块中的中的中的中的“通用通用通用通用”过程过程过程过程中用中用中用中用Dim/PrivateDim/Private声明声明声明声明,可被本窗体可被本窗体可被本窗体可被本窗体/模块的任何过程访模块的任何过程访模块的任何过程访模块的任何过程访问问问问3.3.全局级变量(工程级)全局级变量(工程级)全局级变量(工程级)全局级变量(工程级):必须在必须在必须在必须在标准模块标准模块标准模块标准模块的通用过程中用的通用过程中用的通用过程中用的通用过程中用PublicPublic或或或或globalglobal定义定义定义定义,可以被应用程序的任何过程或函数访可以被应用程序的任何过程或函数访可以被应用程序的任何过程或函数访可以被应用程序的任何过程或函数访问问问问.全局变量的值在整个应用程序中始终不会消全局变量的值在整个应用程序中始终不会消全局变量的值在整个应用程序中始终不会消全局变量的值在整个应用程序中始终不会消失和重新初始化失和重新初始化失和重新初始化失和重新初始化,只有当整个应用程序执行结束只有当整个应用程序执行结束只有当整个应用程序执行结束只有当整个应用程序执行结束时时时时,才会消失。才会消失。才会消失。才会消失。6.4.2变量的作用域变量的作用域人生在勤、不索何获 20128.456.4.2变量的作用域变量的作用域例例:在一个标准模块中进行不同级的变量声明在一个标准模块中进行不同级的变量声明PublicpaAsInteger全局变量全局变量PrivatembAsString*10窗体模块级变量窗体模块级变量SubF1()DimFaAsInteger局部变量局部变量EndSubSubF2()DimFbAsSingle局部变量局部变量EndSub人生在勤、不索何获 20128.466.4.2变量的作用域变量的作用域说明说明:在一个过程中在一个过程中,变量不能同名变量不能同名,但可以与但可以与过程外的窗体过程外的窗体/模块级变量或全局变量同名模块级变量或全局变量同名.如果存在同名情况如果存在同名情况,则在过程内使用的变则在过程内使用的变量一般是指过程内定义的局部变量量一般是指过程内定义的局部变量,全局变量全局变量被被同名的局部变量同名的局部变量”屏蔽屏蔽”掉了掉了,若要访问若要访问,则则要在变量名前加窗体名或模块名要在变量名前加窗体名或模块名,使用形式如使用形式如下下:窗体名或模块名窗体名或模块名.变量名变量名人生在勤、不索何获 20128.476.4.2变量的作用域变量的作用域PublictempAsInteger全局变量全局变量PrivateSubForm_Click()DimtempAsInteger局部变量局部变量temp=10访问局部变量访问局部变量Form1.temp=20访问全局变量必须加窗体名访问全局变量必须加窗体名PrintForm1.temp,tempEndSub人生在勤、不索何获 20128.486.4.2变量的作用域变量的作用域实验实验P164-21在在窗窗体体上上画画一一个个名名称称为为CommandlCommandl的的命命令令按按钮钮,再再画画两两个个名名称称分分别别为为LabellLabell、Label2Label2的的标标签签,然然后后编编写写如如下下程程序序代码代码:PrivatexAsIntegerPrivateSubCommand1_Click()x=5:Y=3Callproc(x,Y)Label1.Caption=x:Label2.Caption=YEndSubPrivateSubproc(ByValaAsInteger,ByValbAsInteger)x=a*a:Y=b+bEndSub程序运行后,单击命令按钮,则两个标签中显示的内容程序运行后,单击命令按钮,则两个标签中显示的内容分别是分别是:A)5和和3B)25和和3C)25和和6D)5和和6人生在勤、不索何获 20128.496.4.36.4.3静态变量静态变量静态变量静态变量静态变量:静态变量:静态变量:静态变量:在程序运行过程中可以保留变量的值。在程序运行过程中可以保留变量的值。在程序运行过程中可以保留变量的值。在程序运行过程中可以保留变量的值。每次调用过程时每次调用过程时,静态变量的初值为上一次调静态变量的初值为上一次调用过程结束后的变量的值用过程结束后的变量的值,有如下三种定义形式有如下三种定义形式:StaticStatic 变量名变量名 As As 类型类型 StaticFunction函数名函数名(参数列表参数列表)As类型类型Staticsub过程名过程名(参数列表参数列表)若函数名、过程名前加若函数名、过程名前加Static,表示该函,表示该函数、过程内的数、过程内的局部变量为静态变量局部变量为静态变量例例6.10一个窗体单击事件过程(一个窗体单击事件过程(Form_Click())和一个求)和一个求和函数(和函数(sum()组成的应用程序,在组成的应用程序,在Form_Click()过程中过程中5次调用函数次调用函数sum()。注意:若将注意:若将Static j%修改为修改为dimj%,则结果如下面,则结果如下面的图所示的图所示.PrivateSubForm_Click()Dimi%,isum%Fori=1To5isum=sum(i)Printisum=;isumNextiEndSubPublicFunctionsum(nAsInteger)Staticj%:j=j+nsum=jEndFunction人生在勤、不索何获 20128.516.4.36.4.3静态变量静态变量静态变量静态变量补例补例(实验:实验:P215-20)P215-20)FunctionF(aAsInteger)b=0Staticcb=b+1c=c+2F=a+b+cEndFunctonPrivateSubCommand1_Click()DimaAsIntegera=2Fori=1to3PrintF(a);NextiEndSub运行上面的程序,单击命令按钮,输出结果为运行上面的程序,单击命令按钮,输出结果为_。A)A)4 45 56 6B)B)5 57 79 9C)C)4 46 68 8 D)D)4 47 79 9分析:分析:I=1,b=1,c=2,f=2+1+2=5I=2,b=1,c=4,f=2+1+4=7I=3,b=1,c=6,f=2+1+6=9人生在勤、不索何获 20128.526.5递归递归过程的嵌套调用过程的嵌套调用:在一个过程(在一个过程(Sub过程或过程或Function过程)过程)中调用另外一个过程,称为过程的嵌套调用。中调用另外一个过程,称为过程的嵌套调用。主程序主程序调用调用S1EndSub 子过程子过程S1调用调用S2EndSub子过程子过程S2EndSub 执行过程:执行过程:主程序或子过程遇到调用子过程语句就转主程序或子过程遇到调用子过程语句就转去执行子过程,而本程序的余下部分要等从子去执行子过程,而本程序的余下部分要等从子过程返回后才得以继续执行。过程返回后才得以继续执行。人生在勤、不索何获 20128.536.5递归递归 递归:递归:就是一个过程调用过程就是一个过程调用过程本身本身。在递归调。在递归调用中,一个过程执行的某一步要用到它用中,一个过程执行的某一步要用到它自身的上一自身的上一步(或上几步)的结果步(或上几步)的结果。例例:用递归方法求用递归方法求n n!(!(4 4!)。!)。用递归方法求用递归方法求4 4!,即!,即4 4!等于!等于4 4 3 3!,而!,而3 3!3 32 2!1 1!1 1。可用下面的递归公式表示:可用下面的递归公式表示:人生在勤、不索何获 20128.54例例6.11 6.11 求求facfac(n)=n!(n)=n!用递归方法求用递归方法求n n!(!(4 4!)。!)。递归编程特点:递归编程特点:二分支二分支1.一分支结束一分支结束2.二分支规则二分支规则PublicFunctionfac(nAsInteger)AsInteger定义定义Ifn=1Thenfac=1Elsefac=n*fac(n-1)EndIfEndFunctionPrivateSubCommand1_Click()调用调用Printfac(4)=;fac(4)EndSub6.5递归递归 人生在勤、不索何获 20128.558.4递归递归例例:用递归方法求用递归方法求n n!(!(4!)4!)的调用过程。的调用过程。fac(4)=4*fac(3)fac(3)=3*fac(2)fac(2)=2*fac(1)fac(1)=1fac(2)=2*1fac(3)=3*2fac(4)=4*66.5递归递归人生在勤、不索何获 20128.56例例6.12 6.12 用函数过程及递归实现求两个数的最大公约数用函数过程及递归实现求两个数的最大公约数6.5递归递归 人生在勤、不索何获 20128.57例例6.12 6.12 用函数过程及递归实现求两个数的最大公约数用函数过程及递归实现求两个数的最大公约数6.5递归递归 Functiongcd1(m%,n%)AsInteger方法一函数方法一函数Dor=mModnm=nn=rLoopWhiler0gcd1=mEndFunctionPrivateSubCommand1_Click()调用函数过程调用函数过程gcd1Dimx%,y%x=CInt(Text1)y=CInt(Text2)IfxyThent=x:x=y:y=tText3=gcd1(x%,y%)EndSub人生在勤、不索何获 20128.586.5递归递归 PublicFunctiongcd%(m%,n%)方法二,递归方法二,递归If(mModn)=0Thengcd=nElsegcd=gcd(n,mModn)EndIfEndFunctionPrivateSubCommand2_Click()调用递归函数调用递归函数gcdDimx%,y%x=CInt(Text1)y=CInt(Text2)Ifx=0ThenPrintnElsePrint找不到找不到EndSub6.6综合应用综合应用 人生在勤、不索何获 20128.62本章小结本章小结1.子程序子程序sub及函数及函数Function函数定义与调用函数定义与调用2.参数的址传递及值传递的定义及特点参数的址传递及值传递的定义及特点3.变量的作用域(局部、模块、全局)变量的作用域(局部、模块、全局)4.静态变量几种定义形式静态变量几种定义形式作业作业P167二、选择题二、选择题三、填空题三、填空题人生在勤、不索何获 20128.63本章等级考试大纲要求本章等级考试大纲要求八、过程八、过程1.Sub过程:过程:(1)Sub过程的建立。过程的建立。(2)调用)调用Sub过程。过程。(3)调用过程和事件过程。)调用过程和事件过程。2.Funtion过程:过程:(1)Funtion过程的定义。过程的定义。(2)调用)调用Funtion过程。过程。3.参数传送:参数传送:(1)形参与实参。()形参与实参。(2)引用。)引用。(3)传值。)传值。(4)数组参数的传送。)数组参数的传送。4.可选参数和可变参数。可选参数和可变参数。5.对象参数:对象参数:(1)窗体参数。)窗体参数。(2)控件参数。)控件参数。人生在勤、不索何获 20128.64教材P169-5:写结果Public Function f(ByVal n%,ByVal r%)If n 0 Then f=f(n r,r)Print n Mod r;End If End Function Private Sub Command1_Click()Print f(100,8)End Sub人生在勤、不索何获 20128.65教材P169-5:写结果分析:f(100,8)n r n0 f(nr,r)100 8 T f(12,8)12 8 T f(1,8)1 8 T f(0,8)0 8 F,人生在勤、不索何获 20128.66教材

    注意事项

    本文((精品)第6章过程.ppt)为本站会员(gsy****95)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开