1、过程教学PPT课件例例1 1、求、求sin5+sin8+sin13sin5+sin8+sin13的值的值例例2 2、求、求5 5!+8+8!+13+13!的和!的和Private Sub Command1_Click()print Sin(5)+Sin(8)+Sin(13)End Sub引例引例Private Sub Command1_Click()print Fact(5)+Fact(8)+Fact(13)End SubPrivate Sub Command1_Click()print Sin(5)+Sin(8)+Sin(13)End Sub系统没有求阶乘的函数,问题如何解决?系统没有求阶乘
2、的函数,问题如何解决?解决思路解决思路:设计一段独立计算阶乘的程序,然后调设计一段独立计算阶乘的程序,然后调用这段程序计算阶乘。用这段程序计算阶乘。引例引例Founction fact(n as integer)t=1for i=1 to nt=t*1next Ifact=tEnd Sub定义函数定义函数计算阶乘计算阶乘返回结果返回结果 将一个将一个“较大较大”的问题,划分为若干个的问题,划分为若干个独立独立的的“小小”问题问题求解,小问题解决相对容求解,小问题解决相对容易,只要解决了每一个易,只要解决了每一个“小小”问题,整个问问题,整个问题即可解决。题即可解决。每个每个“小小”问题的求解设
3、计一段独立问题的求解设计一段独立的程序,称为一个的程序,称为一个“过程过程”。整个问题求解通过多个整个问题求解通过多个“过程过程”实现,实现,这种解决问题的方法,体现模块化程序设计这种解决问题的方法,体现模块化程序设计思想。思想。第第8章章 过程过程使用过程编程有使用过程编程有两大好处两大好处:1.1.过程可使程序划分成离散的过程可使程序划分成离散的逻辑单元逻辑单元,每个单元都比无过程的整个程序容易调每个单元都比无过程的整个程序容易调试。试。2.2.一个程序中的过程,往往不必修改或只一个程序中的过程,往往不必修改或只需稍作改动,便可以成为另一个程序的需稍作改动,便可以成为另一个程序的构件构件。
4、第第8章章 过程过程nVBVB过程的分类过程的分类:1 1、内部过程内部过程:包括系统内部的函数过程(包括系统内部的函数过程(abs,sqr)和事件过程和事件过程(command1_click()())。2 2、用户自定义过程用户自定义过程:用户根据自己的需要定义的用户根据自己的需要定义的,可供可供应用程序多次调用的过程。应用程序多次调用的过程。nVBVB中的自定义过程又分为:中的自定义过程又分为:(1)(1)以以SubSub开始的子过程;开始的子过程;(2)(2)以以FunctionFunction开始的函数过程;开始的函数过程;(3)(3)以以PropertyProperty开始的属性过程
5、;开始的属性过程;(4)(4)以以EventEvent开始的事件过程。开始的事件过程。第第8章章 过程过程1.1.函数过程的建立函数过程的建立 1 1)用)用 “工具工具”“添加函数添加函数”菜单命令来添加函数过菜单命令来添加函数过程。程。2 2)在代码窗口中直接编写过程的代码)在代码窗口中直接编写过程的代码 代码的基本代码的基本格式格式如下:如下:Function Function 过程名过程名 (形式参数列表形式参数列表)As)As 数据类型数据类型 语句组语句组 过程名过程名=表达式表达式End FunctionEnd Function8.1 Function(函数函数)过程过程其中:其
6、中:(1)(1)过程名 过程名的命名规则与变量命名相同。它有两方面的作用,一方面标识一个过程,另一方面可将过程运算的结果传回到调用处。(2)(2)As As 数据类型数据类型 是Function过程返回值的类型,默认为变体类型。(3)(3)(形式参数列表形式参数列表)代表调用时要传递给Function过程的参数变量列表。多个参数间用逗号隔开。形式参数(简称形参)本身没有值,只代表了参数的个数、位置和类型,系统并不为其分配实际内存空间。8.1 Function(函数函数)过程过程其中:(4)(4)语句组语句组 又称为函数体,函数体中的执行语句,用来完成函数值的运算。在程序流程返回调用程序之前,必
7、须将函数值赋给函数名。(5)(5)将函数值赋给函数将函数值赋给函数 格式:过程名过程名=表达式表达式8.1 Function(函数函数)过程过程例例8-1 8-1 编写计算编写计算n n的阶乘的的阶乘的FunctionFunction过程。过程。定义下面函数对应的定义下面函数对应的FunctionFunction过程。过程。例例8-2 8-2 已知直角三角形两直角边的值,编写计算第三已知直角三角形两直角边的值,编写计算第三边(斜边)的边(斜边)的FunctionFunction过程。过程。编写求两个数中最大数的函数过程。编写求两个数中最大数的函数过程。(x0)(x=0)(x0)10122xxy
8、8.1 Function(函数函数)过程过程2.2.函数过程的调用函数过程的调用 1)1)直接调用直接调用,即有返回值的调用,最简单的情况就是,即有返回值的调用,最简单的情况就是在赋值语句中调用函数过程,其形式为:在赋值语句中调用函数过程,其形式为:变量名变量名=函数过程名(实参表)函数过程名(实参表)2)2)用用callcall语句调用语句调用,即没有返回值的调用,即没有返回值的调用,格式格式为:为:call call 过程名(实际参数表)过程名(实际参数表)或或 过程名过程名 实际参数表实际参数表3)3)无参函数调用,无参函数调用,调用无参函数,只须写出函数名调用无参函数,只须写出函数名
9、如:Now Time Date等函数8.1 Function(函数函数)过程过程说明:n定义函数时,在函数名后指定的参数称为定义函数时,在函数名后指定的参数称为形式参数形式参数;在调用函数时,函数名后指定的参数称为在调用函数时,函数名后指定的参数称为实际参数实际参数。在函数调用时,实参通过形参将数据传递给被调用在函数调用时,实参通过形参将数据传递给被调用函数。函数。l函数被调用后可以返回一个函数被调用后可以返回一个运算结果运算结果,即,即函数值函数值。函数值是通过给函数名赋值的方法获得的。函数值是通过给函数名赋值的方法获得的。l函数也可以没有返回值,调用无返回值的函数,或函数也可以没有返回值,
10、调用无返回值的函数,或不需要函数的返回值时,可以采用第二种调用格式不需要函数的返回值时,可以采用第二种调用格式.8.1 Function(函数函数)过程过程 两类两类SubSub过程,即过程,即事件过程事件过程和用户和用户自定义自定义SubSub过程过程。事件过程:事件过程:是系统对事件响应时执行的一段程序代码,它是系统对事件响应时执行的一段程序代码,它不能被其它过程调用。不能被其它过程调用。用户自定义用户自定义SubSub过程:过程:是用户自己建立的一种过程,它可以是用户自己建立的一种过程,它可以被其它过程随意调用被其它过程随意调用。1.Sub1.Sub过程的建立过程的建立 1)1)通过菜单
11、通过菜单 2)2)通过代码窗体直接输入代码,格式如下:通过代码窗体直接输入代码,格式如下:过程名过程名(形式参数列表形式参数列表)语句组语句组 End Sub 8.2 Sub过程过程其中:其中:(1)(1)过程名过程名 过程名的命名规则与变量命名规则相同,过程名的命名规则与变量命名规则相同,它起到标识一个过程的作用。它起到标识一个过程的作用。(2)(2)(形式参数列表形式参数列表)说明在调用过程时要传递给说明在调用过程时要传递给SubSub过程的参数列表,是过程与调用程序之间过程的参数列表,是过程与调用程序之间数据数据传送传送的主要渠道。当有一个以上参数时,参数之间的主要渠道。当有一个以上参数
12、时,参数之间用逗号隔开。用逗号隔开。当无参数当无参数 形式参数列表形式参数列表 时,这种过程叫无参过程,时,这种过程叫无参过程,其形式如下:其形式如下:过程名过程名()()8.2 Sub过程过程(3)(3)语句组语句组 是一组用于完成特定功能的程序是一组用于完成特定功能的程序段(过程体),其中可包含段(过程体),其中可包含Exit SubExit Sub语句用语句用于强行退出过程。于强行退出过程。注意注意:通用过程与函数不同,不能通过过程名:通用过程与函数不同,不能通过过程名返回运算结果,而需要通过特定的形式参数返回运算结果,而需要通过特定的形式参数将计算结果返回。将计算结果返回。8.2 Su
13、b过程过程例例8-3 8-3 写出输出如下图形的写出输出如下图形的SubSub过程过程*例例8-4 8-4 计算任意整数计算任意整数n n的阶乘的的阶乘的SubSub过程。过程。编写求两个数中最大数的编写求两个数中最大数的SubSub过程。过程。例例8-5 8-5 编写一个判断素数的通用过程。编写一个判断素数的通用过程。8.2 Sub过程过程2 2、SubSub过程的调用过程的调用 格式:格式:call call 过程名(实参表)过程名(实参表)或或 过程名过程名 实参列表实参列表8.2 Sub过程过程n在主程序调用过程和过程处理的结果返回主程序的在主程序调用过程和过程处理的结果返回主程序的运
14、行过程中,运行过程中,形参与实参形参与实参之间的之间的数据传递数据传递是关键。是关键。n在在FunctionFunction过程和过程和SubSub过程被调用之前,所有形参过程被调用之前,所有形参都无定义,也就是说所有的形参既没有都无定义,也就是说所有的形参既没有具体的存储具体的存储单元单元也也无具体的值无具体的值,只是,只是起到形式起到形式上的作用。上的作用。n当程序执行转向过程时,实参和形参当程序执行转向过程时,实参和形参按一定方式结按一定方式结合合,形参获取了相应的值后执行过程体,过程的运,形参获取了相应的值后执行过程体,过程的运算结果通过形参(算结果通过形参(FunctionFunct
15、ion过程也可通过函数名)过程也可通过函数名)返回到主程序。返回到主程序。8.3 参数传递参数传递 1.1.形式参数与实际参数形式参数与实际参数 1)1)形式参数形式参数 在定义过程时,过程名后圆括号中列出的就是形式参数在定义过程时,过程名后圆括号中列出的就是形式参数(简称简称形参形参)。在过程被调用时,它接收实参传来的数据。在过程被调用时,它接收实参传来的数据。形参只能是变量或数组,不能是常量、表达式或函数。形参只能是变量或数组,不能是常量、表达式或函数。2)2)实际参数实际参数 在过程调用时,过程名后的圆括号中列出的数据称为实际参数在过程调用时,过程名后的圆括号中列出的数据称为实际参数(简
16、称实参简称实参),它用于向形参传送数据。,它用于向形参传送数据。在过程调用时,实参可以是常量、变量,数组或函数。在过程调用时,实参可以是常量、变量,数组或函数。8.3 参数传递参数传递 2 2 参数的传递方式参数的传递方式1)1)按值传递按值传递 在过程调用执行时,实参只将其在过程调用执行时,实参只将其本身的值本身的值传递(复制)传递(复制)给形参,使形参得到实参的值。给形参,使形参得到实参的值。采用传值方式,在过程执行时,采用传值方式,在过程执行时,形参的变化不会影响实形参的变化不会影响实参的值,即不会将形参的值再回送给实参参的值,即不会将形参的值再回送给实参,这种参数传递,这种参数传递方式
17、称为方式称为“单向单向”数据传递。数据传递。采用按值传递方式调用过程时,实参只能是采用按值传递方式调用过程时,实参只能是常量常量、表达表达式式或或括在一对园括号中的变量名括在一对园括号中的变量名。例如,。例如,Call jch(9,3)Call sjx(x+3,y+2)Call jch(9,3)Call sjx(x+3,y+2)定义过程时在形参前加定义过程时在形参前加ByValByVal关键字,调用时,无论实关键字,调用时,无论实参是什么形式,参数传递均按值传递方式进行。参是什么形式,参数传递均按值传递方式进行。8.3 参数传递参数传递 2)2)按地址传递按地址传递 这是这是VBVB中传递参数
18、默认的方式。它与传值方式不同,中传递参数默认的方式。它与传值方式不同,实参在过程调用执行时,将其在实参在过程调用执行时,将其在内存中所分配的存储内存中所分配的存储单元地址单元地址传递给形参,使形参与实参具有传递给形参,使形参与实参具有相同相同的内存的内存地址,即使用地址,即使用同一存储单元同一存储单元。在过程执行中,形参的任何变化都直接影响实参的在过程执行中,形参的任何变化都直接影响实参的值,即相当于形参将其值又回送给实参,这种参数传值,即相当于形参将其值又回送给实参,这种参数传递方式称为递方式称为“双向双向”数据传递。数据传递。采用地址传递方式调用过程(或函数)时,实参只采用地址传递方式调用
19、过程(或函数)时,实参只能是能是变量或数组变量或数组,不能是,不能是常量或表达式常量或表达式。8.3 参数传递参数传递 例例8-10 8-10 编写一个降序排序的过程,调用编编写一个降序排序的过程,调用编写的过程对任意输入的一组数排序。写的过程对任意输入的一组数排序。过程过程应用举例应用举例 VBVB的应用程序由若干个过程组成,这些过程一般保存在窗体的应用程序由若干个过程组成,这些过程一般保存在窗体文件(文件(.frm.frm)或标准模块文件)或标准模块文件(.bas)(.bas)中。变量在过程代码中是中。变量在过程代码中是必不可少的。一个变量、过程所处的位置不同,可被访问的范必不可少的。一个
20、变量、过程所处的位置不同,可被访问的范围也不同。把变量、过程围也不同。把变量、过程可被访问的范围可被访问的范围称为变量、过程的称为变量、过程的作作用域。用域。应用程序(应用程序(.vbp.vbp)若干个窗体模块若干个窗体模块(*.frm.frm)文件)文件若干个标准模块若干个标准模块(.bas.bas)文件)文件事件过程(事件过程(SubSub)自定义通用过程(自定义通用过程(SubSub)自定义函数过程自定义函数过程(FunctionFunction)自定义通用过程(自定义通用过程(SubSub)自定义函数过程自定义函数过程(FunctionFunction)Vb应用程序组成应用程序组成8.
21、4 变量、过程的作用域变量、过程的作用域1.1.过程的作用域过程的作用域 在定义过程时,可以指定关键字在定义过程时,可以指定关键字PrivatePrivate或或PublicPublic,不同的关键字使定义的过程作用范围有所,不同的关键字使定义的过程作用范围有所不同。不同。1)1)窗体(模块)级过程窗体(模块)级过程 窗体级窗体级过程是指在窗体通用声明段定义的、用过程是指在窗体通用声明段定义的、用PrivatePrivate关键字限制的过程;关键字限制的过程;模块级模块级过程是指在标过程是指在标准模块内定义的、用准模块内定义的、用PrivatePrivate关键字限制的过程,关键字限制的过程,
22、该类过程只能在所属的窗体或标准模块中被其它过该类过程只能在所属的窗体或标准模块中被其它过程调用。程调用。8.4 变量、过程的作用域变量、过程的作用域2)2)全局级过程全局级过程 指在窗体或标准模块中定义的过程,其默认是指在窗体或标准模块中定义的过程,其默认是全局的,可加全局的,可加Pub1icPub1ic说明。全局级过程可供该应用说明。全局级过程可供该应用程序的所有窗体和所有标准模块中的过程调用,但程序的所有窗体和所有标准模块中的过程调用,但根据过程所处的位置不同,其调用方式有所区别:根据过程所处的位置不同,其调用方式有所区别:(1)(1)在窗体中定义的全局级过程,外部过程要调用,在窗体中定义
23、的全局级过程,外部过程要调用,必须在过程名前加该过程所处的窗体名。必须在过程名前加该过程所处的窗体名。(2)(2)在标准模块中定义的过程,外部过程均可调用,在标准模块中定义的过程,外部过程均可调用,但过程名必须惟一,否则要加标准模块名。但过程名必须惟一,否则要加标准模块名。8.4 变量、过程的作用域变量、过程的作用域2 2、变量的作用域、变量的作用域 变量的作用域是指变量能被访问的变量的作用域是指变量能被访问的范围范围。根据变量声明。根据变量声明的位置,把变量的作用域分为过程级和模块级。对于模块级的位置,把变量的作用域分为过程级和模块级。对于模块级变量,根据限制范围的关键字(变量,根据限制范围
24、的关键字(PrivatePrivate或或PublicPublic)又可分为)又可分为私有级变量和公有级变量。为了便于理解,下面按照过程级、私有级变量和公有级变量。为了便于理解,下面按照过程级、窗体级(私有级变量)和全局级(公有级变量)三种分别介窗体级(私有级变量)和全局级(公有级变量)三种分别介绍。绍。1)1)过程级变量过程级变量 过程级变量的作用范围限制在该过程内部,也就是说在一过程级变量的作用范围限制在该过程内部,也就是说在一个过程内部声明的变量,只有该过程内部的代码才能访问或个过程内部声明的变量,只有该过程内部的代码才能访问或改变变量的值。改变变量的值。在过程内部,局部变量可通过以下两
25、种形式在过程内部,局部变量可通过以下两种形式声明声明 。8.4 变量、过程的作用域变量、过程的作用域n用用DimDim声明局部变量声明局部变量 用用DimDim声明的变量采用声明的变量采用动态存储分配方式动态存储分配方式。即每次过程调。即每次过程调用时,系统都会为变量分配所需的存储单元并进行初始化,用时,系统都会为变量分配所需的存储单元并进行初始化,并在并在过程调用结束时过程调用结束时自动将其释放。自动将其释放。n用用StaticStatic声明局部变量声明局部变量 用用StaticStatic声明的局部变量采用声明的局部变量采用静态存储分配方式静态存储分配方式,系统在,系统在程序运行开始时为
26、其分配存储单元并初始化,此后该存储单程序运行开始时为其分配存储单元并初始化,此后该存储单元始终由它占用,直至元始终由它占用,直至程序结束程序结束。静态变量仅初始化一次,以后再次调用时就不初始化了。静态变量仅初始化一次,以后再次调用时就不初始化了。如果在某个过程中未说明而直接使用了某个变量,则该变量被默认为过程级变量8.4 变量、过程的作用域变量、过程的作用域注意下面的程序,其中用注意下面的程序,其中用StaticStatic声明局部变量声明局部变量 Private Sub Command1_Click()Static x%,s%x=x+4 s=s+1 Print x,s End Sub 例中的
27、静态变量例中的静态变量s s和和x x,除了在过程第一次调用时自,除了在过程第一次调用时自动赋初始值动赋初始值0 0外,以后每次调用时其初始值均为前一外,以后每次调用时其初始值均为前一次调用结束时的值。次调用结束时的值。8.4 变量、过程的作用域变量、过程的作用域2)2)窗体窗体(模块模块)级变量级变量 窗体窗体(模块模块)级变量的作用域限制在声明它的窗体级变量的作用域限制在声明它的窗体(模块模块)中中的所有过程均可访问该变量,其他窗体不能访问该变量。在的所有过程均可访问该变量,其他窗体不能访问该变量。在窗体的通用声明段中用窗体的通用声明段中用PrivatePrivate或或DimDim关键字
28、声明。关键字声明。3 3)全局级变量)全局级变量 全局级变量在所有模块的所有过程都能使用,它的作用范全局级变量在所有模块的所有过程都能使用,它的作用范围是整个应用程序,在模块的通用段中使用围是整个应用程序,在模块的通用段中使用PublicPublic关键字声关键字声明。明。8.4 变量、过程的作用域变量、过程的作用域n递归的思想:递归的思想:n递归概念:一个过程调用自己本身。递归概念:一个过程调用自己本身。n递归实现递归实现:(如:(如:N!)n分析:根据阶乘的定义,求分析:根据阶乘的定义,求n的阶乘可以转的阶乘可以转换为求换为求n*(n-1)!,利用过程递归来完成。,利用过程递归来完成。8.5 递递归归递归级别递归级别 执行操作执行操作1 fact(5)2 fact(4)3 fact(3)4 fact(2)5 fact(1)6 返回返回1 fact(1)7 返回返回2 fact(2)8 返回返回6 fact(3)9 返回返回24 fact(4)10 返回返回120 fact(5)8.5 递归递归递推过程递推过程 回归规程回归规程5!5*!fact(5)4!4*3!fact(4)3!3*2!fact(3)2!2*1!fact(2)1!1 fact(1)8.5 递归递归
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。