第八章过程优秀PPT.ppt

上传人:石*** 文档编号:79036398 上传时间:2023-03-19 格式:PPT 页数:45 大小:2.85MB
返回 下载 相关 举报
第八章过程优秀PPT.ppt_第1页
第1页 / 共45页
第八章过程优秀PPT.ppt_第2页
第2页 / 共45页
点击查看更多>>
资源描述

《第八章过程优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第八章过程优秀PPT.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第八章第八章 过程过程第一页,本课件共有45页第八章第八章 过过 程程 在程序的编写中,对于较复杂的问题,按照结构化程序设计的在程序的编写中,对于较复杂的问题,按照结构化程序设计的原则,可把问题逐步细化,分成若干个功能模块,通过原则,可把问题逐步细化,分成若干个功能模块,通过VB提供的提供的自定义过程将功能模块定义成一个个过程。自定义过程将功能模块定义成一个个过程。过程是用特定格式组织起来的一组代码,通常用来完成一个特过程是用特定格式组织起来的一组代码,通常用来完成一个特定的功能,可以被其它过程作为一个整体来调用。定的功能,可以被其它过程作为一个整体来调用。VB中自定义过中自定义过程主要有程主

2、要有2种:种:以SUB保留字开始的子程序(自定义过程和事件过程)以Function保留字开始的函数过程第二页,本课件共有45页 Sub子过程分为:事件过程和通用子过程分为:事件过程和通用Sub过程过程 8.1.1 事件过程事件过程 (1)窗体事件的语法窗体事件的语法Private Sub Form_事件名事件名(参数列表参数列表)语句组语句组End SubPrivate Sub Form_Click()End Sub8.1 Sub过程过程第三页,本课件共有45页 Sub子过程分为:事件过程和通用过程子过程分为:事件过程和通用过程 7.1.1 7.1.1 事件过程事件过程事件过程事件过程 (2)

3、控件事件过程的语法控件事件过程的语法 Private Sub 控件名控件名_事件名事件名(参数列表参数列表)语句组语句组 End SubPrivate Sub Command1_Click()Dim x As IntegerEnd Sub8.1 Sub过程过程第四页,本课件共有45页子过程的定义格式:子过程的定义格式:StaticPublic|Private Sub 子过程名子过程名(形参列表形参列表)语句组语句组 Exit Sub 语句组语句组End Sub 8.1.2 通用子过程(通用子过程(Sub过程)的定义过程)的定义 Sub add()dim sum as integer sum=1

4、+2 print sumEnd SubSub过程体过程体第五页,本课件共有45页2说明说明(1)Sub过程以过程以Sub开头,以开头,以End Sub结束,之间的程序代码是实现结束,之间的程序代码是实现Sub 过程功过程功能的程序语句序列。能的程序语句序列。(2)的命名规则与变量名相同,不允许与系统保留字同名。的命名规则与变量名相同,不允许与系统保留字同名。(3)Static、Private、Public的含义如下:的含义如下:Static:指定本:指定本Sub过程中的局部变量在内存中的默认存储方式。过程中的局部变量在内存中的默认存储方式。Private:指定本:指定本Sub过程是私有(函数)

5、过程,表明它只能被本模块过程是私有(函数)过程,表明它只能被本模块中的其它过程所访问,而不能被其它模块中的过程所访问。中的其它过程所访问,而不能被其它模块中的过程所访问。Public:指定本:指定本Sub过程是公有(过程是公有(Sub)过程,可以被本程序中的任何过程调用。)过程,可以被本程序中的任何过程调用。第六页,本课件共有45页(4)参数列表:包含了在调用时与主调过程之间需包含了在调用时与主调过程之间需要进行数据传递的变量名或数组名。参数列表的格要进行数据传递的变量名或数组名。参数列表的格式如下:式如下:ByVal|ByRef()As 类型,ByVal|ByRef()As 类型(5)过程的

6、定义不允许出现嵌套定义,即不能在一过程的定义不允许出现嵌套定义,即不能在一个过程体内再定义另一个过程。个过程体内再定义另一个过程。第七页,本课件共有45页Sub recarea(rlen As Single,rwid As Single)Dim area As Single area=rlen*rwid MsgBox Total area is&areaEnd Sub形参的定义形式:形参的定义形式:ByValByRef 变量名变量名 As 类型类型第八页,本课件共有45页8.1.3 过程的调用过程的调用 1用用Call语句调用语句调用Sub过程过程格式:格式:Call 过程名过程名(实际参数列

7、表实际参数列表)例如:例如:Call add()2把过程名作为一个语句来使用把过程名作为一个语句来使用 格式:格式:过程名过程名 实际参数列表实际参数列表例如:例如:例如:例如:add add第九页,本课件共有45页1格式:格式:Call 过程名过程名(实际参数列表实际参数列表)2 格式:格式:过程名过程名 实际参数列表实际参数列表Private Sub Form_Click()Call recarea(8,4)End SubSub recarea(rlen As Single,rwid As Single)Dim area As Single area=rlen*rwid MsgBox To

8、tal area is&areaEnd Subrecarea 8,4第十页,本课件共有45页8.2 Function过程过程 在在VB中,函数分为内部函数和外部函数。内部函中,函数分为内部函数和外部函数。内部函数是系统预先编制的、能完成常用的、特定功能数是系统预先编制的、能完成常用的、特定功能的程序代码,而外部函数是用户根据需要通过的程序代码,而外部函数是用户根据需要通过Function定义的过程,它的代码就是实现函数功定义的过程,它的代码就是实现函数功能的,并且将得到一个值(函数值)。能的,并且将得到一个值(函数值)。第十一页,本课件共有45页 8.2.1 函数过程(函数过程(Functio

9、n过程)的定义过程)的定义Static Public|Private Function 函函数数名名(形形参参列列表表)As 类型类型 Exit Function 函数名函数名=返回值返回值End Function函数体函数体Function fact(x As Integer)As Long Dim p As Long,i As Integer p=1 For i=1 To x p=p*i Next i fact=pEnd Function第十二页,本课件共有45页8.2.2 函数的调用函数的调用调用格式:调用格式:函数名(实参列表)函数名(实参列表)Private Sub Command2

10、_Click()fact(6)End SubFunction fact(x As Integer)As Long Dim p As Long,i As Integer p=1 For i=1 To x p=p*i Next i fact=pEnd FunctionDim s As Long s=Print s第十三页,本课件共有45页8.3 过程之间参数的传递过程之间参数的传递1、形式参数形式参数 指在定义过程时,出现过程名后面圆括号内的变量。指在定义过程时,出现过程名后面圆括号内的变量。2、实际参数实际参数 指指在在调调用用过过程程时时,写写入入子子过过程程名名或或函函数数名名后后括括号号内

11、内的的参数。参数。3 参数传递(虚实结合)参数传递(虚实结合)指实参数据传递给形参的过程。指实参数据传递给形参的过程。参数的传递有两种方式:按值传递、按地址传递。参数的传递有两种方式:按值传递、按地址传递。形参前加形参前加“ByVal”关键字的是按值传递,缺省或加关键字的是按值传递,缺省或加“ByRef”关键字的为按地址传递。关键字的为按地址传递。第十四页,本课件共有45页传值与传址传值与传址 传值:传值:形参得到的是实参的值,形参值的改变不形参得到的是实参的值,形参值的改变不会影响实参的值。会影响实参的值。传址:传址:形参得到的是实参的地址,当形参值的改形参得到的是实参的地址,当形参值的改变

12、同时也改变实参的值。变同时也改变实参的值。Sub test(ByVal x As Integer)x=x+10End SubPrivate Sub Command1_Click()Dim a As Integer a=2 Print 调用过程前:调用过程前:a=&a Call test(a)Print 调用过程后:调用过程后:a=&aEnd Sub第十五页,本课件共有45页Sub test(ByVal x As Integer)x=x+10End SubPrivate Sub Command1_Click()Dim a As Integer a=2 Print 调用过程前:调用过程前:a=&a

13、 Call test(a)Print 调用过程后:调用过程后:a=&aEnd Suba2x212传值传值:形参得到的是实参的值,形参值的改变不会影响形参得到的是实参的值,形参值的改变不会影响实参的值。实参的值。第十六页,本课件共有45页Sub test(x As Integer)x=x+10End SubPrivate Sub Command1_Click()Dim a As Integer a=2 Print 调用过程前:调用过程前:a=&a Call test(a)Print 调用过程后:调用过程后:a=&aEnd Suba2x12传址:传址:形参得到的是实参的地址,当形参值的改变同时形参

14、得到的是实参的地址,当形参值的改变同时也改变实参的值。也改变实参的值。(采用按址传递方式时,实参必须是变(采用按址传递方式时,实参必须是变量或数组量或数组)第十七页,本课件共有45页例:例:在窗体上放一个命令按钮在窗体上放一个命令按钮Command1,编写如下编写如下代码,程序运行后,单击命令按钮,输出的结果是代码,程序运行后,单击命令按钮,输出的结果是?Sub S1(x As Integer,y As Integer)Dim t As Integer t=x :x=y :y=tEnd SubPrivate Sub Command1_Click()Dim a As Integer,b As I

15、nteger a=10 :b=30 S1 a,b Print “a=”;a;“b=”;bEnd Suba=10 b=30ByValByVala=30 b=10第十八页,本课件共有45页4 4 数组作过程的参数数组作过程的参数 数组作为参数时,通过传地址方式传送。数组作为参数时,通过传地址方式传送。实参列表和形参列表中的数组只能出现数组名和括号。实参列表和形参列表中的数组只能出现数组名和括号。【例】用数组作参数,求一维数组中的所有负元素之和。【例】用数组作参数,求一维数组中的所有负元素之和。Function sum(b()as integer)as integer Dim i%For i=LBo

16、und(b)To UBound(b)If b(i)0 Then sum=sum+b(i)End If Next i End Function Private Sub Form_Click()()Dim a%(4),s%,i%For i=0 To 4 a(i)=Int(Rnd*100)-50 Next i s=sum(a())Print 负元素之和为:负元素之和为:;s End Sub第十九页,本课件共有45页 Private Sub Form_Click()()Dim a%(4),s%,i%For i=0 To 4 a(i)=Int(Rnd*100)-50 Next i s=sum(a())P

17、rint 负元素之和为:负元素之和为:;s End SubFunction sum(b()as integer)as integer Dim i%For i=LBound(b)To UBound(b)If b(i)0 Then sum=sum+b(i)End If Next i End Functiona(0)a(1)a(2)a(3)a(4)b(0)b(1)b(2)b(3)b(4)第二十页,本课件共有45页8.4 模模 块块 VB应用程序由应用程序由窗体模块窗体模块(.Frm)、标准模块、标准模块(.Bas)和类模块和类模块(.Cls)组成,组成,VB程序代码就保存在这程序代码就保存在这些模块

18、文件中。些模块文件中。第二十一页,本课件共有45页8.5 过程的作用域过程的作用域Public|Private Sub 子过程名子过程名(形参列表形参列表).End Sub过程的作用域分为:过程的作用域分为:窗体窗体/模块级和全局级。模块级和全局级。1、窗体窗体/模块级过程:模块级过程:加加Private关键字的过程,只能被过程所在的窗体关键字的过程,只能被过程所在的窗体或模或模 块中的过程调用。块中的过程调用。2、全局级过程:全局级过程:加加Public关键字关键字(或缺省)(或缺省)的过程,可供该应用的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用。程序的所有窗体和所有标准模块中

19、的过程调用。第二十二页,本课件共有45页第二十三页,本课件共有45页例:例:假设工程假设工程1有一个窗体模块和一个标准模块有一个窗体模块和一个标准模块第二十四页,本课件共有45页x=test()Print xx=Module1.test()第二十五页,本课件共有45页8.6 变量的作用域变量的作用域变量的作用域分为:变量的作用域分为:局部变量(过程级变量)局部变量(过程级变量)窗窗体体/模模块块级级变变量量(能能被被本本模模块块的的所所有有子子过过程程和函数使用)和函数使用)全全局局级级变变量量(能能被被应应用用程程序序的的任任何何子子过过程程和和函函数使用)。数使用)。第二十六页,本课件共有

20、45页8.6.1 过程级变量过程级变量局部变量局部变量I.在过程内用在过程内用Dim或或Static关键字声明的关键字声明的变量(或不声明直变量(或不声明直接使用的变量);接使用的变量);II.只能在本过程中使用。只能在本过程中使用。因此,可以在不同的因此,可以在不同的过程中声明相同名字过程中声明相同名字的局部变量而互不影的局部变量而互不影响。响。例:例:Private Sub t()Dim n%n=10End Sub Private Sub Form_Click()Dim n%Call t Print n=;nEnd Sub程序运行后单击窗体,其输出结果是什么?程序运行后单击窗体,其输出结果

21、是什么?第二十七页,本课件共有45页8.6.2 窗体窗体/模块级变量模块级变量 窗体窗体/模块级变量:模块级变量:I.在在“通通用用声声明明”段段中中用用Dim语语句句或或用用Private语语句句声声明明的的变量。变量。II.可可被被本本窗窗体体/模模块块的的任任何何过过程程访访问问。但但其其他他模模块块不不能能访访问问该该变变量。量。例:例:Dim n%Private Sub t()n=10End SubPrivate Sub Form_Click()Call t Print n=;nEnd Sub程序运行后单击窗体,其输出结果是什么?程序运行后单击窗体,其输出结果是什么?第二十八页,本课

22、件共有45页8.6.3 全局变量全局变量I.在在窗窗体体模模块块或或标标准准模模块块的的顶顶部部的的“通通用用”声声明明段段用用Public关键字声明,关键字声明,II.它它的的作作用用范范围围是是整整个个应应用用程程序序,即即可可被被本本应应用用程程序的任何过程或函数访问。序的任何过程或函数访问。例如:例如:Public a As Integer,b As single第二十九页,本课件共有45页3 3种变量声明及使用规则如下表:种变量声明及使用规则如下表:第三十页,本课件共有45页 同同名名的的局局部部变变量量:在在不不同同过过程程中中定定义义同同名名的的局局部部 变变量量,它们互不影响。

23、它们互不影响。同同名名的的全全局局变变量量:引引用用时时就就需需要要使使用用“模模块块名名.变变量量名名”的形式来区分它们。的形式来区分它们。例例如如,如如果果有有一一个个在在 Form1 和和 Module1 中中都都声声明明了了公公用用的的 变量变量 X,则用则用 Module1.X 和和Form1.X 来引用。来引用。不同级别的同名变量:不同级别的同名变量:系统优先访问作用域小的变量系统优先访问作用域小的变量。如果想优先访问全局变量,则应在全局变量前加上窗如果想优先访问全局变量,则应在全局变量前加上窗体体/模块名。模块名。8.6.4 8.6.4 关于多个变量同名关于多个变量同名 第三十一

24、页,本课件共有45页 Public Temp As Integer 定义全局变量定义全局变量Private Sub Form_Load()Temp=1 End SubPrivate Sub Command1_Click()Dim Temp As Integer 定义局部变量定义局部变量 Temp=2 Print temp=;Temp Print temp=;Form1.TempEnd SubPrivate Sub Command2_Click()Print temp=;Temp End Sub 将全局变量将全局变量Temp Temp 的值设置成的值设置成 1 1 将局部变量将局部变量Temp

25、的值设置成的值设置成 2单击单击Command1后的输出后的输出结果是什么?结果是什么?temp=2temp=1单击单击Command2后的输后的输出结果是什么?出结果是什么?temp=1第三十二页,本课件共有45页8.7 静态变量静态变量是用静态变量是用Static关键字声明关键字声明的局部变量,它在程的局部变量,它在程序运行过程中可保留变量的值。序运行过程中可保留变量的值。(而用(而用Dim声明的局部变量是动态变量,每次调用声明的局部变量是动态变量,每次调用的过程结束时,都会将这些局部变量释放掉。)的过程结束时,都会将这些局部变量释放掉。)声明形式如下:声明形式如下:Static 变量名变

26、量名 As 类型类型 Static Function 函数名(参数列表)函数名(参数列表)As 类型类型 Static Sub 过程名(参数列表)过程名(参数列表)第三十三页,本课件共有45页例例 有有一一个个人人编编了了下下面面一一段段程程序序,想想用用变变量量n记记录录单单击击窗体的次数。窗体的次数。Private Sub Form_Click()Dim n As Integer n=n+1 Print 已单击次数:已单击次数:;n&次次End Sub分析程序运行后多次单击窗体的输出结果:分析程序运行后多次单击窗体的输出结果:Static n As Integer第三十四页,本课件共有45

27、页【例】【例】程序如下程序如下,单击窗体后输出的结果是什么?单击窗体后输出的结果是什么?Private Static Function s%()Dim sum%sum=sum+1 s=sum End Function Private Sub Form_Click()Dim i%,r%For i=1 To 5 r=s()Print 第第&i&次结果为次结果为&r Next i End Sub第三十五页,本课件共有45页定义过程有两种方法定义过程有两种方法:(1)在窗体的代码窗口把插入点放在所有现有过程在窗体的代码窗口把插入点放在所有现有过程之外,键入关键字和过程名。之外,键入关键字和过程名。(2

28、)(2)利用利用“工具工具”菜单下的菜单下的“添加过程添加过程”命令定义命令定义第三十六页,本课件共有45页8.8多重窗体与多模块程序设计多重窗体与多模块程序设计 一一个个稍稍微微复复杂杂的的应应用用程程序序,不不仅仅有有多多个个窗窗体体,还可能有标准模块和类模块,如下图所示。还可能有标准模块和类模块,如下图所示。第三十七页,本课件共有45页8.8.1 设置启动对象设置启动对象 在在程程序序运运行行时时,首首先先被被加加载载并并执执行行的的对对象象,称称为为程程序序的的启启动动对对象象。(可可以以是是一一个个窗窗体体,也也可可以以是是标标准准模块中名为模块中名为Main的自定义的自定义Sub过

29、程过程。)。)第三十八页,本课件共有45页8.8.2 窗体的加载与卸载过程窗体的加载与卸载过程 当一个窗体要显示在屏幕之前,必须先建立,接当一个窗体要显示在屏幕之前,必须先建立,接着被装入内存(着被装入内存(Load语句语句),最后显示(),最后显示(Show方法方法)在屏幕上。在屏幕上。当窗体要结束之前,会先从屏幕上隐藏(当窗体要结束之前,会先从屏幕上隐藏(Hide方法方法),接着从内存中删除(,接着从内存中删除(Unload语句语句)(1)Load语句:将一个窗体装入到内存语句:将一个窗体装入到内存 Load 窗体名称窗体名称 例如:例如:Load Form1(2)Unload语句:从内存

30、卸载指定的窗体语句:从内存卸载指定的窗体 Unload 窗体名称窗体名称 例如例如:Unload Form1 第三十九页,本课件共有45页(3)Show方法:显示一个窗体方法:显示一个窗体 窗体名称窗体名称.Show 例如:例如:Form1.Show(4)Hide方法:隐藏,但仍在内存中方法:隐藏,但仍在内存中 窗体名称窗体名称.Hide 例如:例如:Form1.Hide Me.Hide第四十页,本课件共有45页【例】【例】设计设计多重窗体多重窗体,计算两个数据之和与乘积。,计算两个数据之和与乘积。1、窗体设计、窗体设计:该工程由三个窗体组成,其中一个为主窗体该工程由三个窗体组成,其中一个为主

31、窗体(Form1),一个是输入数据的窗体(),一个是输入数据的窗体(Form2)、另一个窗)、另一个窗体是完成计算的窗体体是完成计算的窗体(Form3)。第四十一页,本课件共有45页2.有关事件过程代码有关事件过程代码(1)在标准模块)在标准模块Module1.BAS中声明全局变量中声明全局变量Public x As SinglePublic y As Single第四十二页,本课件共有45页Private Sub Command1_Click()Form1.Hide 隐藏主窗体隐藏主窗体 Form2.Show 显示显示Form2窗体窗体End SubPrivate Sub Command2_

32、Click()Form1.Hide 隐藏主窗体隐藏主窗体 Form3.Show 显示显示Form3窗体窗体End SubPrivate Sub Command3_Click()EndEnd Sub(2)(2)主窗体的事件代码:主窗体的事件代码:第四十三页,本课件共有45页 (3)Form2窗体的事件过程代码窗体的事件过程代码Private Sub Command1_Click()x=Val(text1.Text)y=Val(text2.Text)Form2.Hide Form1.ShowEnd Sub第四十四页,本课件共有45页 (4)Form3的事件过程代码的事件过程代码Private Sub Command1_Click()text1.Text=x+yEnd SubPrivate Sub Command2_Click()text1.Text=x*yEnd SubPrivate Sub Command3_Click()Form3.Hide Form1.ShowEnd Sub第四十五页,本课件共有45页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 资格考试

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

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