欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第6章过程的使用.ppt

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

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

    第6章过程的使用.ppt

    1,第6章 过程的使用,6.1 Visual Basic的工程 6.2 过程 6.3 过程的调用 6.4 参数的传递 6.5 递归过程 6.6 变量的作用范围 6.7 过程的作用范围 6.8 Shell函数 6.9 程序举例,2,6.1 Visual Basic的工程,6.1.1 Visual Basic的文件类型 146 6.1.2 工程的组成 147 6.1.3 管理工程 148,3,6.1.1 VB的文件类型,1. 工程文件(.vbp) 工程文件(.vbp)包含了组成应用程序的所有窗体文件(.frm)、标准模块文件(.bas)、类模块文件(.cls)及其他文件,也包含了环境设置方面的信息。 2窗体文件(.frm) 窗体文件包含本模块中窗体、控件的描述和属性设置,也包含窗体级的常量、变量、外部过程的声明,以及事件过程和通用过程的程序代码。,(快讲),4,6.1.1 VB的文件类型,3窗体的二进制数据文件(.frx) 窗体的二进制数据文件含有窗体上控件的二进制属性数据,以二进制数为其值。 4标准模块文件(.bas) 标准模块文件用于存放在几个模块中都要使用的公共代码,包含常量、变量、类型和过程的声明,以及通用过程代码。 5类模块文件(.cls) 类模块用于建立新对象,这些新对象可以包含自定义的属性和方法,类模块既包含代码又包含数据,可以被应用程序内的过程调用。,5,6.1.2 工程的组成,图 VB应用程序的组成,6,6.1.2 工程的组成,1. 窗体模块(.frm),窗体模块包含事件过程和通用过程,通用过程又分为Sub过程和Function过程。,2. 标准模块(.bas),标准模块没有界面只有程序代码,包含通用过程的Sub过程和Function过程。,3. 类模块(.cls),类模块用于建立新对象,这些新对象可以包含自定义的属性和方法,类模块既包含代码又包含数据,它可以被应用程序内的过程调用。,7,6.1.3 管理工程,1. 保存工程,(1)保存工程,(2)生成exe文件,工程资源管理器,8,6.1.3 管理工程,2. 设置工程属性,选择“工程”菜单“工程属性”菜单项则出现“工程属性”对话框,设置工程属性选项。,启动对象,工程类型,工程名称,帮助文件名,工程帮助上下文 ID,工程描述,工程属性设置,9,6.1.3 管理工程,3. 添加工程,在已建的工程环境中通过添加新的或现有的工程构成工程组。当装入了多个工程时,工程资源管理器窗口的标题就变成“工程组”。,添加新工程:,添加现有工程:,4. 删除工程,在工程资源管理器窗口中选择需删除的工程名,选择“文件”菜单“删除工程”菜单项,则从工程组中删除该工程。,5. 向工程中添加和删除文件,可以向工程中添加窗体、模块、属性页和用户控件等文件,选择“工程”菜单的下拉菜单的各种添加命令向工程中添加文件。,10,6.2 过程,一个过程就是一段程序,一个模块由多个过程组成,一个应用程序通过过程间的相互调用构成。 6.2.1 Sub过程 6.2.2 Function过程,11,6.2.1 Sub过程,Vb中的sub过程有两种:事件过程和通用过程。 1事件过程 事件是能够被对象(窗体和控件)识别的动作。 事件过程由vb自行声明,为一个事件所编写的程序代码事件过程。 事件过程分为窗体事件过程和控件事件过程。,12,6.2.1 Sub过程,语法: Private Sub Form_事件名(参数列表) 局部变量和常数声明 语句块 End Sub 说明: 不管窗体是什么名字,但在事件过程中都使用“Form _事件名”。 窗体过程前面的声明都是Private,表示这个窗体过程只能在窗体模块中使用。 在Sub和End Sub之间的语句块,称为程序体或过程体。,1事件过程,(1) 窗体事件过程,13,6.2.1 Sub过程,语法: Private Sub 控件名_事件名(参数列表) 局部变量和常数声明 语句块 End Sub,(2)控件事件过程,控件的事件过程名定义为“控件名_事件名”。,14,6.2.1 Sub过程,(1) 定义 Private | Public Static Sub 过程名(参数列表) 局部变量和常数声明 语句块 Exit Sub 语句块 End Sub,2. 通用过程,Sub过程不能嵌套定义,但是可以嵌套调用。,15,6.2.1 Sub过程,参数列表:类似于变量声明,列出了从调用过程传递来的参数值,称为形式参数(简称形参),多个形参之间则用逗号隔开,形参的定义如下: ByVal | ByRef 变量名 () As 数据类型 ,形 式 参 数 表,16,6.2.1 Sub过程,(2)建立通用过程 创建通用过程的方法有两种:一是利用“工具-添加过程”对话框,二是在代码窗口中直接输入。,添加过程对话框,17,6.2.1 Sub过程,例如: Public Sub sub1() Form2.Show Form1.Hide End Sub,18,6.2.2 Function过程,Function过程与Sub过程的区别:Function过程可以返回一个值到调用的过程。 1. 函数定义 语法: Private | Public Static Function 函数名(参数列表) As 数据类型 局部变量和常数声明 函数名 = 表达式 Exit Function 语句块 函数名 = 表达式 End Function,19,6.2.2 Function过程,2. 建立函数过程 建立函数过程的方法与建立通用过程的方法相同,选择“工具”菜单的“添加过程”菜单项,然后在“添加过程”对话框中输入过程名,在“类型”选项中“函数”类型。,添 加 过 程 对 话 框,20,6.2.2 Function过程,【例】计算圆面积的Function过程cir: Function cir(r As Single) As Single Const pi As Single = 3.1415926 cir = pi * r 2 End Function,21,6.3 过程的调用,6.3.1 调用Sub过程 6.3.2 调用Function过程,22,6.3.1 调用 Sub过程,调用Sub过程的两种方法: 1使用Call语句调用过程 Call语句的格式为: Call 过程名 (实在参数表列) 2. 将过程名作为语句使用(直接使用过程名) 如果省略 Call 关键字而直接将过程名作为语句使用,也必须省略实在参数表列 外面的括号,参数和过程名用空格隔开。 过程名 实在参数表列,23,6.3.1 调用 Sub过程,1. 调用Sub 事件过程 Sub 事件过程可以由事件自动调用或者在同一模块中的其它过程中使用调用语句来调用。 Private Sub Form_Click() Call Command1_Click End Sub 或者: Private Sub Form_Click() Command1_Click End Sub 例6-1,24,6.3.1 调用 Sub过程,2. 调用Sub 通用过程 调用Sub 通用过程的语法与调用Sub 事件过程相同。不同的是,通用过程只有在被调用时才起作用,否则不会被执行。 Public Sub sub1() Form2.Show Form1.Hide End Sub Private Sub Form_Click() Call Sub1 End Sub,25,6.3.2 调用Function过程,调用函数Function过程的方法和调用 VB 内部函数方法一样,在语句中直接使用函数名,Function 过程可返回一个值到调用的过程。,【例61】运行界面,【例62】运行界面,26,6.4 参数的传递,在调用一个有参数的过程时,首先进行的是形参和实参的结合,实现调用过程的实参与被调用过程的形参之间的数据传递。 6.4.1 形参和实参 6.4.2 参数按值传递和按地址传递 6.4.3 数组参数 6.4.4 对象参数,27,6.4.1 形参和实参,1. 形参和实参,在Sub过程和Function过程中,被调过程中的参数是形参。形参列表中的各参数之间用逗号(,)分隔,形参可以是变量名或数组名,但不能是定长字符串变量。实参是在主调过程中的参数,在调用过程时实参将数据传递给形参。 形参列表和实参列表中的对应变量名可以不同,但实参和形参的个数、顺序以及数据类型必须相同。 否则出错。,参 数 出 错,28,6.4.1 形参和实参,Public Function Function1(ByVal a As Single, ByVal b As Single) As Single '计算直角斜边函数 Dim c As Single c = Sqr(a 2 + b 2) Function1 = c End Function Private Sub Command1_Click() '计算斜边 Dim a1 As Single, b1 As Single a1 = Val(Text1.Text) b1 = Val(Text2.Text) Text3.Text = Function1(a1, b1) End Sub,形式参数,实际参数,29,6.4.1 形参和实参,2形参的数据类型,(1)实参数据类型与形参定义的数据类型不一致 对于实参数据类型与形参定义的数据类型不一致时,VB会按要求对实参进行数据类型转换,然后将转换值传递给形参。,(2)没有声明形参的数据类型,运行界面,在创建过程时,如果没有声明形参的数据类型,则默认为Variant型。,30,6.4.1 形参和实参,3. 使用可选的参数,VB中被调函数参数列表中的参数也可以是可选的,使用Optional 关键字来表示参数可选。,Private Function Divisor(Optional ByVal x As Variant, Optional ByVal y As Variant) As Integer'求最大公约数子函数 Dim r As Integer If IsMissing(x) Then x = 1 If IsMissing(y) Then y = 1 r = x Mod y Do While r 0 x = y y = r r = x Mod y Loop Divisor = y End Function,31,6.4.1 形参和实参,在未提供可选参数时,实际上是将该参数作为具有相应数据类型的初始值来赋值,不会出现编译错误的提示。 如果传递的参数是Variant型,可以在过程体中 通过IsMissing函数来测试调用时是否传递可选参数。,32,6.4.1 形参和实参,4. 使用可变参数 在传递参数时,如果要求参数的数目可以变化,使之可以接收任意多个参数,则在函数过程或Sub过程中一般采用如下语法: Sub (,ParamArray ) 注意:ParamArray后面跟Variant型的数组, ParamArray 关键字不能与ByVal、ByRef或Optional 一起使用。,33,6.4.1 形参和实参,例如: Private Function divisor(ParamArray n() '通用函数求最大公约 Dim r As Integer If UBound(n) = 1 Then x = n(0): y = n(1) ElseIf UBound(n) = 0 Then x = n(0): y = 1 End If r = x Mod y Do While r 0 x = y y = r r = x Mod y Loop divisor = y End Function,34,6.4.2 参数按值传递和按地址传递,1. 按值传递参数,定义被调过程时形参使用ByVal关键字,或调用语句中的实参是常量或表达式,就是按值传递。,传值就是通过传送实参的值而不是传送地址的方法给被调用过程中的形参。系统把需要传送的实参复制到一个临时单元中,然后再把该临时的地址传送给形参。这样,被调用的过程并没有访问实参的地址,因而也就不会改变实参的值。,35,6.4.2 参数按值传递和按地址传递,例如,下面都是按值传递: 使用ByVal关键字定义被调过程形参 Private Function Divisor(ByVal x As Integer, ByVal y As Integer) As Integer 用常量作为实参 Result = Divisor(20,50) 将变量变成表达式作为实参 把变量转换成表达式的最简单的方法就是把它放在括号内,则调用过程的语句为: Result = Divisor(m), (n) 被调过程的定义语句: Private Function Divisor(x As Integer, y As Integer) As Integer,36,6.4.2 参数按值传递和按地址传递,2. 按地址传递参数,在定义过程时,如果没有ByVal 关键字,默认的是按地址传递参数,或者用 ByRef 关键字指定按地址传递。,按地址传递参数时,实参和形参共用一段存储单元,修改了形参的值就修改了实参的值。,37,6.4.2 参数按值传递和按地址传递,【例6-3】,(a) 运行结果,38,6.4.2 参数按值传递和按地址传递,按地址传递参数有几点说明:,(1)对于按地址传递的形参,如果在过程调用时与之结合的实参是常数或表达式,则VB会给形参分配一个临时的内存单元,用按值传递的方法处理。,(2)当形参和实参数据类型不同时,按地址传递会提示出错。,(3)按地址传递参数比按值传递参数更节省内存空间,程序运行效率更高。,编译出错,39,6.4.3 数组参数,【例6-5】程序代码如下: Option Base 1 Private Sub Command1_Click() '单击计算按钮 Dim Score1(8) As Single, Score2(8) As Single Dim i As Integer, j As Integer '输入分数 Score1(1) = 98: Score2(1) = 84 Score1(2) = 82: Score2(2) = 86 Score1(3) = 76: Score2(3) = 79 Score1(4) = 66: Score2(4) = 72 Score1(5) = 88: Score2(5) = 84 Score1(6) = 82: Score2(6) = 76 Score1(7) = 75: Score2(7) = 79 Score1(8) = 60: Score2(8) = 70 Text1.Text = Int(Average(Score1) * 100) / 100 Text2.Text = Int(Average(Score2) * 100) / 100 End Sub,数组作为参数向过程传递,数组传递只能是按地址传递。,40,6.4.3 数组参数,子函数Average计算平均成绩,形参s为数组。 Private Function Average(s() As Single) As Single ' 求平均成绩子函数 Dim i As Integer Dim Aver As Single, Sum As Single For i = 1 To 8 Sum = Sum + s(i) Next Aver = Sum / 8 Average = Aver End Function,41,6.4.4 对象参数,在VB中对象也可以作为形参,即对象可以作为参数向过程传递,对象的传递只能是按地址传递。对象作为形参变量的类型声明为Control或控件类型。 【例67】,(a)窗体FormCover的运行界面 (b)窗体Form1的运行界面,(自学),42,6.5 递归过程,过程具有递归调用的功能,递归调用是指在过程中直接或间接地调用过程本身。递归调用在完成阶乘运算、级数运算、幂指数运算等方面特别有效,很多数学模型和算法设计本身就是递归的。 递归分为两种类型,一种是直接递归,即在过程中调用过程本身;一种是间接递归,即间接地调用一个过程。 注意: 递归结构构成了另外一种形如循环的结构。,43,6.5 递归过程,显然: 上述例子会无限递归 (无限执行)。所以,在递归调用时都有条件限制。,即: 条件成立,调用递归,否则结束。,44,6.5 递归过程,过程的嵌套调用:,45,6.5 递归过程,【例68】计算阶乘n!可以表示为:,运 行 界 面,46,6.5 递归过程,5!的运算过程:,? 5!,5×4!,4×3!,3×2!,2×1!,1,2×1,3×2,4×6,5×24,120,逐层调用,逐层返回,到达终止条件,逐层调用结束,47,6.6 变量的作用范围,6.6.1 过程级、模块级和全局变量 6.6.2 静态变量 6.6.3 使用同名的变量,48,6.6.1 过程级、模块级和全局变量,1过程级变量,过程级变量是在过程中声明的也称为局部变量,其作用范围仅限于本过程,无法在其他过程中访问或改变该变量的值。用dim或static来声明。,2模块级变量,模块级变量是在窗体模块或标准模块顶部“通用”声明段定义的变量,模块级变量对该模块的所有过程都有效,在模块中的任何过程都可以访问该变量,但其它模块的过程则不能访问该变量。 用dim或private来声明。,49,6.6.1 过程级、模块级和全局变量,【例6-10】使用文本框显示变量的范围。,运行界面,50,6.6.1 过程级、模块级和全局变量,3. 全局变量,全局变量的作用范围可以是应用程序的所有过程,也称为公用变量。全局变量可以在模块顶部的“通用”声明段用Public关键字声明。,语法:Public 变量名 As 数据类型,在代码窗口分别声明a为全局变量,b为模块级变量,c为过程级变量,其变量的的声明语句如图所示。,声 明 变 量,51,6.6.1 过程级、模块级和全局变量,【例6-11】,(a)Form1运行界面 (b)Form2运行界面,注意:常数、固定长度字符串、数组、自定义类型与 Declare 语句不能是窗体对象模块中的 Public 成员。,52,6.6.2 静态变量,局部变量可以分为动态变量和静态变量。 动态变量:在本过程执行期间分配内存的变量,当一个过程执行完毕,变量所占的内存被释放,变量的值就不存在了。用Dim来声明,静态变量:在过程结束后仍保留值的变量,即其占用的内存单元未释放。当以后再次进入该过程时,变量原来的值可以继续使用。 用static来声明。,运行结果,53,6.6.2 静态变量,程序代码如下: Private Function Sum(n As Integer) '计算求和子函数 Static f As Integer f = f + n Sum = f End Function Private Sub Form_Click() '单击窗体 Dim i As Integer For i = 1 To 5 Print “ & i & “=“ & Sum(i) Next i End Sub,【例6-13】使用函数调用的方法计算n,在函数中使用静态变量。,运 行 结 果,54,6.6.3 使用同名的变量,1. 不同模块中的全局变量同名,如果不同模块中的全局变量使用同一名字,则通过引用“模块名.变量名”来引用变量。,2. 全局变量与局部变量同名,当全局变量与局部变量同名时,全局变量和局部变量在不同的范围内有效。在过程内部局部变量有效;而在过程外全局变量有效。,55,6.6.3 使用同名的变量,3. 窗体的属性、控件名与变量同名,窗体的属性、控件、符号常数和过程都被视为窗体模块中的模块级变量。 在窗体模块内和窗体中控件同名的局部变量将遮住同名控件。因此必须引用窗体名称或 Me 关键字来限定控件,才能设置或得到该控件的属性值。,56,6.7 过程的作用范围,6.7.1 调用其他模块的过程 6.7.2 静态过程 6.7.3 Sub Main过程,57,6.7.1 调用其他模块的过程,1. 局部过程和全局过程,过程的作业范围是通过定义语句来声明的。语法: Private | Public Static Sub 过程名(参数列表) Private | Public Static Function 函数名(参数列表) As 数据类型,58,6.7.1 调用其他模块的过程,2. 调用其他模块的过程,(1)调用其他窗体模块中的过程,调用其他窗体中的全局过程,必须以窗体名为调用的前缀,即“窗体名.过程名”。,(2)调用其他标准模块中的过程,调用其他标准模块中的过程,如果过程名是唯一的则不必在调用时加模块名。,(3)调用其他类模块的过程,调用类模块中的全局过程,要求用指向该类的某一实例作前缀。,59,6.7.2 静态过程,在过程定义中也可以添加“Static”关键字来声明过程,或选择“工具”菜单“添加过程”菜单项,在出现的对话框中选择“所有本地变量为静态变量”,如图所示。,60,6.7.2 静态过程,在过程名前加上Static关键字,表明该过程中的变量(无论它们是怎么声明的)都是静态变量。 Private Static Sub Test() '测试静态变量子过程 Dim x As Integer Static y As Integer x = x + 1 y = y + 1 Print “x=“ & x, Print “y=“ & y End Sub,61,6.7.3 Sub Main过程,Sub Main过程称为启动过程,当应用程序启动时不希望加载任何窗体,或者在装载窗体前对一些条件进行初始化,可以通过在标准模块中创建一个Sub Main 的子过程,运行工程时先运行Sub Main 子过程。,设置 Sub Main 过程为启动对象的方法是选择“工程”菜单“工程属性”菜单项,在“工程属性”属性页中的“通用”选项卡中“启动对象”框选定“Sub Main”,如图所示。,62,6.8 Shell函数,VB不但可以调用各种过程,而且可以调用各种可执行文件。Shell函数用来调用一个可执行文件,所有在Windows环境下可以运行的可执行文件都可以在VB中被调用。 语法:Shell(命令字符串,窗口类型),窗口类型设置表,(自学),63,6.9 程序举例,【例614】输入一个十进制数,将其转换成二进制、八进制或十六进制数。,运行界面,界面设计:用组合框Combo1输入“转换进制”,用文本框Text1输入要转换的十进制数,单击“计算”按钮Command1计算进制转换,并将结果显示在文本框Text2中。运行的界面如图所示。,(自学),64,6.9 程序举例,【例615】使用选择法将学生成绩按从高到低排序,并显示出学生姓名和成绩。,选择法排序第一轮两两比较找出最大的数,记录下最大元素的位置Max,然后与第一个元素a0对换;第二轮将从a1开始的数中找出最大的数与a1对换;每比较一轮找出未经排序的数中最大的一个进行对换;将数组中的元素一轮一轮地进行比较,直到剩下最后一个元素为止。,运 行 界 面,65,小 结,1.Sub过程和函数的编写; 2.使用保留字Call和不使用Call对过程调用的区别; 3.虚实结合的两种方式:按值传送和按址传送; 4.正确理解数组参数、可选参数、可变参数、对象形式参数和Shell() 函数的功能; 5.正确理解变量和过程的作用范围。,66,作 业 1,1. 编写输入一个06数字,输出星期的Function过程。 2. 编制判断奇偶数Function过程。输入一个整数,判断其奇偶性。,67,作 业 2,1. 有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁,问第3人,又说比第2个人大2岁,问第2人,说比第1人大2岁。问第1人,他说是10岁。求第5个人多少岁? 2. 编制Sub过程,删除数组中指定位置的元素。,

    注意事项

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

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开