书签 分享 收藏 举报 版权申诉 / 33
上传文档赚钱

类型计算机基础与Visual-Basic程序设计(第三版)第九章-过程课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4927505
  • 上传时间:2023-01-26
  • 格式:PPT
  • 页数:33
  • 大小:547KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《计算机基础与Visual-Basic程序设计(第三版)第九章-过程课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    计算机 基础 Visual Basic 程序设计 第三 第九 过程 课件
    资源描述:

    1、第9章 在设计一个规模较大、复杂程度较高的程序时,往往根据需要按功能在设计一个规模较大、复杂程度较高的程序时,往往根据需要按功能将程序分解成若干个相对独立的部分将程序分解成若干个相对独立的部分,然后对每个部分分别编写一段程,然后对每个部分分别编写一段程序,这些程序段称为序,这些程序段称为 VB子程序分类图子程序分类图是对是对进行处理的程序段进行处理的程序段是指是指以规定语法结构组织的以规定语法结构组织的、可以被重复调用的可以被重复调用的、具有特定功能的具有特定功能的、相对独相对独立的立的程序段。程序段。不与任何特定的事件过程相关联,只能由别的过程调用不与任何特定的事件过程相关联,只能由别的过程

    2、调用 声明声明 Sub 过程过程就是在就是在的代码窗口编写一个能实现预期功能的语句的代码窗口编写一个能实现预期功能的语句块。块。()Exit Sub 过程体过程体 每个通用过程都有一个每个通用过程都有一个同一模块中过程名不得同一模块中过程名不得重复。重复。过程前加上过程前加上Public关键字关键字或缺省,则该过程为或缺省,则该过程为,过程前加上过程前加上Private关键字关键字,则该过程为,则该过程为,只有在声明它的模块中才可以调用此过,只有在声明它的模块中才可以调用此过程。程。在过程名前加上在过程名前加上Static关键字关键字,表明该过程的变量都是静态变量。,表明该过程的变量都是静态变

    3、量。形参列表形参列表是传递到过程中的变量名是传递到过程中的变量名(多个时用多个时用“,”分隔分隔),它指明了调用时传递给过程的参数的它指明了调用时传递给过程的参数的类型和个数类型和个数.过程可以有参数,也可以不带任何参数。根据需要而定过程可以有参数,也可以不带任何参数。根据需要而定 格式为:格式为:ByVal|ByRef变量名变量名()AS 数据类型数据类型,ByVal 表示按值传递;表示按值传递;ByRef 表示按地址传递表示按地址传递6、过程内不能再定义过程,过程定义也不能写在事件过程内、过程内不能再定义过程,过程定义也不能写在事件过程内Sub Tryout(x as integer,y

    4、as integer)x=x+100 y=y*6 Print x,y End Sub 建立通用过程可以使用以下两种方法:建立通用过程可以使用以下两种方法:要执行一个过程,必须调用该过程要执行一个过程,必须调用该过程。调用的方法为:。调用的方法为:Call 过程名过程名(实参列表实参列表)过程名过程名 Sub 过程的调用过程的调用例:要调用前面的例:要调用前面的Tryout过程,可以使用下面两种方式:过程,可以使用下面两种方式:Tryout(a,b)或或 Tryout a ,b主过程主过程Call 过程过程1End Sub过程过程1Call 过程过程2End Sub过程过程2End Sub调用的

    5、本质:转入被调用过程去执行调用的本质:转入被调用过程去执行,完成后返回完成后返回可以直接调用本模块中声明的过程或可以直接调用本模块中声明的过程或当定义的过程重名时,调用过程时,过程名前应加模块名修饰;当定义的过程重名时,调用过程时,过程名前应加模块名修饰;如果要调用如果要调用中声明的中声明的调用时过程名前调用时过程名前与与Sub 过程过程 的主要区别是:的主要区别是:Public|Private Static Function 函数过程名函数过程名()As End Function在函数体内,函数名可以当变量名使用,函数的返回值就是通过对函数名的赋值语句来实现的。在函数体内,函数名可以当变量名

    6、使用,函数的返回值就是通过对函数名的赋值语句来实现的。即函数值通过函数名返回。即函数值通过函数名返回。函数体中的函数体中的Exit Function语句的功能是强制退出函数并返回语句的功能是强制退出函数并返回函数过程需要返回的值的类型由函数过程需要返回的值的类型由 As 设置。设置。函数名函数名()不能独立成为语句,必须参加表达式的运算。不能独立成为语句,必须参加表达式的运算。下面是已知直角三角形两直角边的值,计算斜边的函数。下面是已知直角三角形两直角边的值,计算斜边的函数。function myfun(A as integer,B as integer)as string myfun=sqr

    7、(A*A+B*B)End function 将前面的两个将前面的两个Sub过程改为过程改为Function过程。过程。Private Function triarea(As Double,As Double,As Double)Dim s As Double s=(x+y+z)/2 triarea=Sqr(s-x)*(s-y)*(s-z)*s)End FunctionPrivate Sub Command1_Click()Dim a#,b#,c#,s#,intYesorNo%a=Val(Text1.Text):b=Val(Text2.Text)c=Val(Text3.Text)If a+b c

    8、 And b+c a And c+a b Then Print 面积面积=;triarea(a,b,c)Else intYesorNo=suberr()无参数时,括号不能省略无参数时,括号不能省略 End IfEnd Sub通过全局变量实现各过程中共享数据通过全局变量实现各过程中共享数据(即在即在“通用通用”部份部份定义的变量,由该模块所有过程定义的变量,由该模块所有过程共享共享)通过过程调用实参与形参的结合实现通过过程调用实参与形参的结合实现Sub过程和过程和Function函数过程中的函数过程中的中的参数称为中的参数称为,在程序中调用,在程序中调用Sub过程和过程和Function函数过程

    9、时函数过程时中称为中称为实际参数实际参数。在调用过程时,在调用过程时,就是就是把把“实参实参”依次依次按位置按位置传递给被调用过程的传递给被调用过程的“形形参参”,然后执行被调用过程中的语句。,然后执行被调用过程中的语句。Print greatcd(x,y)Public Function greatcd(m As Integer,n As Integer)与与 按值传递按值传递就是将就是将传送给被调用过程中的传送给被调用过程中的。即:系统把实参即:系统把实参复制一份传送给形参。复制一份传送给形参。这样,这样,被调用的过程如果改变了形参的值,也不被调用的过程如果改变了形参的值,也不会改变实参的值

    10、。会改变实参的值。在在VB中,传值方式的标志为:中,传值方式的标志为:。这种传递方式这种传递方式,写出下列程序的运行结果写出下列程序的运行结果Sub tryout(ByVal x as integer,ByVal y as integer)x=x+100 y=y*6 print “x=“;x.”y=“;yEnd SubSub Form_click()Dim a%,b%a=10:b=20 tryout a,b Print “a=“;a,”b=“;bEnd Sub传值:传值:X=110 y=120a=10 b=20 传址方式是将实参在内存的地址传递给形参,也就是实参、传址方式是将实参在内存的地址传

    11、递给形参,也就是实参、形参公用内存的形参公用内存的“地址地址”。在在VB中,按址传递数据是在形参前加上中,按址传递数据是在形参前加上ByRef(默认方式)。(默认方式)。这种传递方式这种传递方式,即调用时实参将值传,即调用时实参将值传递给形参;调用结束由形参将操作结果返回给实参。当用传递给形参;调用结束由形参将操作结果返回给实参。当用传址方式时,址方式时,ByVal ByRef Sub tryout(ByRef x as integer,ByRef y as integer)x=x+100 y=y*6 print “x=“;x.”y=“;yEnd SubSub Form_click()Dim

    12、a%,b%a=10:b=20 tryout a,b Print “a=“;a,”b=“;bEnd Sub传址:传址:X=110 y=120a=110 b=120 Visual Basic允许把数组作为实参传送到过程中。数组作参数是通过传允许把数组作为实参传送到过程中。数组作参数是通过传地址方式传送。在传送数组时,除遵守参数传送的一般规则外,还应注意地址方式传送。在传送数组时,除遵守参数传送的一般规则外,还应注意以下几点:以下几点:1为了把一个数组的全部元素传送给一个过程,应将数组名分别写为了把一个数组的全部元素传送给一个过程,应将数组名分别写入形参表中,并略去数组的上下界,但括号不能省略。入形

    13、参表中,并略去数组的上下界,但括号不能省略。Private Sub Sort(a()As single)End Sub其中形参其中形参“a()”即为数组。即为数组。2被调过程可通过被调过程可通过Lbound和和Ubound函数确定实参数组的上、下界。函数确定实参数组的上、下界。3当用数组作形参时,对应的实参必须也是数组,且类型一致。当用数组作形参时,对应的实参必须也是数组,且类型一致。4实参和形参结合是按地址传递,即形参数组和实参数组共用一段实参和形参结合是按地址传递,即形参数组和实参数组共用一段内存单元。内存单元。例如:定义了实参数组例如:定义了实参数组b(1 to 8),给它们赋了值,调用

    14、,给它们赋了值,调用Sort()函数过程函数过程的形式如下:的形式如下:Sort b()或或 Call Sort(b()实参数组后面的括号可以省略,但为便于阅读,建议一般不要省略实参数组后面的括号可以省略,但为便于阅读,建议一般不要省略为好。为好。调用时形参数组调用时形参数组a和实参数组和实参数组b虚实结合,共用一段内存单虚实结合,共用一段内存单元,如图元,如图6-7所示。因此在所示。因此在Sort()过程中改变数组过程中改变数组a的各元素值,的各元素值,也就相当于改变了实参数组也就相当于改变了实参数组b中对应的元素的值,当调用结束中对应的元素的值,当调用结束时,形参数组时,形参数组a成为无定

    15、义。成为无定义。b(1)b(2)b(3)b(4)b(5)b(6)b(7)b(8)a(1)a(2)a(3)a(4)a(5)a(6)a(7)a(8)参数为数组时虚实结合示意图参数为数组时虚实结合示意图 在过程的形参列表中加入在过程的形参列表中加入Optional关键字关键字,就可以指定过程,就可以指定过程的参数为可选的。如果指定了可选参数,则的参数为可选的。如果指定了可选参数,则参数表中此参数后面参数表中此参数后面的其它参数也必是可选的的其它参数也必是可选的,并且要用,并且要用Optional关键字来声明。关键字来声明。求两个数的和的函数过程。求两个数的和的函数过程。函数过程:函数过程:Publi

    16、c Function mysum(first As Integer,second As Long,Optional third)mysum=first+second If Not IsMissing(third)Then mysum=mysum+thirdEnd Function事件过程:事件过程:Private Sub Command1_Click()Dim a As Integer,b As Long,c As Double Dim sum As Integer a=10:b=20 Sum=mysum(a,b)Print sum=;Sum a=10:b=20:c=30 Sum=mysum(

    17、a,b,c)Print sum=;SumEnd SubIsMissing()一般说来,过程调用中的参数个数应等于过程说明的参数个数。一般说来,过程调用中的参数个数应等于过程说明的参数个数。在传递参在传递参数时,数时,如果要求参数的数目可以变化如果要求参数的数目可以变化,则在函数过程或,则在函数过程或Sub过程的过程的ParamArray关键字关键字(不能与(不能与ByVal ByDef连用)连用)指明。指明。格式如下:格式如下:Sub 过程名过程名(其他参数其他参数,ParamArray ()Private Sub Command1_Click()Dim s(),a%,b As Long,c

    18、As Variant,d As Double s=Array(1,2,3,4,5)Print sum=;multisum(s(0),s(2),s(4)a=1000:b=10000:c=100:d=10 Print sum=;multisum(a,b,c,d)End Sub Public Function multisum(ParamArray p()Dim int1%,sum as variant For int1=LBound(p)To UBound(p)sum=sum+p(int1)Next multisum=sum End Sub 窗体参数 形参定义格式:形参名 As form 调用时实

    19、参:必须为某个窗体名称 控件参数:形参定义格式:形参名 As Control 调用时实参:可为任意一个控件对象变量的作用域根据变量的作用域,变量分为()变量、变量和变量变量 在过程中用Dim/static语句定义,只存在于过程中 用Dim 定义的变量称为动态变量,生存期为过程的一次调用.用Static定义的变量称为静态变量,生存期为整个应用程序的执行期间(重点掌握,举例)变量 Dim语句或Private语句定义,模块中的所有过程都可使用变量 Public语句定义,可以在所有模块中使用Private Sub Form_Click()Dim acc As Integer,i As Integer

    20、acc=0 For i=1 To 3 acc=acc+funa(i)Next i Print accEnd SubPrivate Function funa(x As Integer)As Integer Static s As Integer s=s+x funa=sEnd Function运行时单击窗体运行时单击窗体,程序输出结果为程序输出结果为:能能变量名前加窗体名不能不能被其他模块存取能能不能被本模块的其他过程存取通用声明通用声明过程中声明位置PublicDimPrivateDimStatic声明方式标准模块窗体全局变量窗体/模块级变量局部变量作用范围不同作用范围的三种变量声明及使用规

    21、则不同作用范围的二种过程定义及调用规则能但过程名必须唯一,否则要加标准模块名能但必须在过程名前加窗体名不能不能能否被本应用程序其他模块调用能能能能能否被本模块其他过程调用Public缺省Private定义方式 标准模块窗体标准模块窗体全局级模块级作用范围根据过程的作用域,过程分为级和级。1、过程的嵌套过程的嵌套 在程序中调用一子过程,而在子过程中又调用另外的子过程,这种程在程序中调用一子过程,而在子过程中又调用另外的子过程,这种程序结构称为序结构称为过程的嵌套。过程的嵌套。过程的嵌套调用执行过程如过程的嵌套调用执行过程如下图:下图:2、过程的递归调用过程的递归调用 用自身的结构来描述自身,称递

    22、归。例如,对阶乘的定义:用自身的结构来描述自身,称递归。例如,对阶乘的定义:)!2()1()!1()!1(!nnnnnn Visual Basic允许在一个允许在一个Sub子过程和子过程和Function过程的定义内部调用自过程的定义内部调用自己,即递归己,即递归Sub子过程和递归子过程和递归Function函数。函数。直接调用自己称为直接递归调用直接调用自己称为直接递归调用 间接调用自己称为间接递归调用间接调用自己称为间接递归调用Private Function fac(n As Integer)As Integer If n=1 Then fac=1 Else fac=n*fac(n-1)

    23、End IfEnd FunctionPrivate Sub Form_Click()Print“fac(4)=”;fac(4)End Sub程序的递归过程:说明:说明:递归处理分递推和回归两个过程,如上图所示。递归处理分递推和回归两个过程,如上图所示。当一个大问题能够分解成同类型的小问题当一个大问题能够分解成同类型的小问题,且问题且问题 规模在逐渐减小规模在逐渐减小,才适合用递归解决才适合用递归解决.使用递归算法必须要满足以下的递归条件:使用递归算法必须要满足以下的递归条件:(1)存在递归结束条件及结束时的值;)存在递归结束条件及结束时的值;(2)能用递归形式表示,且递归向终止条件发展。)能用递归形式表示,且递归向终止条件发展。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:计算机基础与Visual-Basic程序设计(第三版)第九章-过程课件.ppt
    链接地址:https://www.163wenku.com/p-4927505.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库