VisualBasic程序设计案例教程 第7章 过程.ppt_第1页
VisualBasic程序设计案例教程 第7章 过程.ppt_第2页
VisualBasic程序设计案例教程 第7章 过程.ppt_第3页
VisualBasic程序设计案例教程 第7章 过程.ppt_第4页
VisualBasic程序设计案例教程 第7章 过程.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 7 章,过程,理解通用过程和函数过程的工作原理和区别 熟练掌握参数传递的两种方式:按地址传递和按值传递 熟练掌握多窗体与Sub Main过程 教学重点与难点: 对通用过程和函数过程的运用;理解掌握按地址传递和按值传递,第七章 过程,7.1.1 案例实现过程 【案例说明】 1.利用Sub过程,要求程序运行后结果如图7.1所示。 图7.1 运行结果 1 2.利用Sub过,在弹出的窗口中输入y确定后,则在相应的窗体中输入内容,当输入n的时候,程序停止运行。程序运行后如图7.2所示。 图7.2 运行结果,7.1 通用过程和函数过程应用案例,7.1.1 案例实现过程 【案例说明】 1.利用Sub过程

2、,要求程序运行后结果如图7.1所示。 图7.1 运行结果 1 2.利用Sub过,在弹出的窗口中输入y确定后,则在相应的窗体中输入内容,当输入n的时候,程序停止运行。程序运行后如图7.2所示。 图7.2 运行结果,7.1 通用过程和函数过程应用案例,3输入三个数,求出它们的最大数,要求将求两个数中的大数编写成Function过程,过程名为Max。 4从键盘上输入一个字符,判断它是不是英文字母。 分析:英语字母有大小写之分,只要将该字符转换为大写,再判断是不是处于“A”-“Z”范围内。若是,则是英文字母,否则不是。 【技术要点】 该应用程序设计步骤如下。 1运用【案例说明】中的第一部份:利用Sub

3、过程,要求程序运行后结果如图7.1所示。 (1)本例直接采用Print直接在窗体上输出结果。 程序代码如下: Private Sub Form_Load() Show Call mysub1(30) Call mysub2 Call mysub2 Call mysub2,7.1 通用过程和函数过程应用案例,Call mysub1(30) End Sub Private Sub mysub1(n) Print String(n, *) End Sub Private Sub mysub2() Print *; Tab(30); * End Sub 在上述事件过程Form_Load()中,通过Ca

4、ll语句分别调用两个Sub过程。在Sub过程Mysubl(n)中,n为参数(也称形参),当调用过程通过Call Mysubl(30)(30称为实参) 调用时,就把30传给n。这样,调用后输出30个“*号。过程Mysub2()不带参数,其功能是输出左右两边的“*”号。我们可以用图7.3来表示调用过程。,7.1 通用过程和函数过程应用案例,图7.3 调用过程,7.1 通用过程和函数过程应用案例,2运用【案例说明】中的第二部份:利用Sub过,在弹出的窗口中输入y确定后,则在相应的窗体中输入内容,当输入n的时候,程序停止运行。程序运行后如图7.2所示。 (1)本例直接采用Print直接在窗体上输出结果

5、。 程序代码如下: Private Sub Form_load() Show Print VB的基本特点是: Call sub_cont Print 面向对象的可视化编程 Call sub_cont Print 事件驱动的编程机制 Call sub_cont Print 结构化的设计语言 End Sub Private Sub sub_cont() Dim resp As String Do While True,7.1 通用过程和函数过程应用案例,resp = InputBox(是否继续(y/n) ? ) If UCase(resp) = N Then End If UCase(resp)

6、= Y Then Exit Do Loop End Sub 在事件过程Form_Load中,有3处调用Sub过程Sub_Cont。每次调用Sub_Cont时,都会提问“是否继续(y/n)?”。若用户回答“n”,结束程序运行;若用户回答“y”,退出DoLoop循环而返回调用语句(Call)的条件下一条哦语句继续执行。 Ucase是转换为大写的函数,不管用户回答的是大写(如“Y”)还是小写(“y”),经过Ucase处理后都变成大写(“Y”)。 3运用【案例说明】中的第三部份: 输入三个数,求出它们的最大数,要求将求两个数中的大数编写成Function过程,过程名为Max。 本例采用InputBox

7、函数输入三个数,判断出最大数后采用Print直接输出在窗体上程序代码如下: Private Sub Form_load() Dim a As Single, b As Single, c As Single Dim s As Single,7.1 通用过程和函数过程应用案例,Show a = Val(InputBox(输入第一个数) b = Val(InputBox(输入第二个数) c = Val(InputBox(输入第三个数) s = max(a, b) Print 三个数中的最大数是:; max(s, c) End Sub Function max(m, n) As Single If

8、m n Then max = m Else max = n End If End Function 4运用【案例说明】中的第四部份: 从键盘上输入一个字符,判断它是不是英文字母。,7.1 通用过程和函数过程应用案例,分析:英文字母有大小写之分,只要将该字符转换为大写,再判断是不是处于“A”-“Z”范围内。若是,则是英文字母,否则不是。本例采用InputBox函数来输入字符,判断后的结果直接输入到窗体上 本例采用InputBox函数来输入字符,判断后的结果直接输入到窗体上。程序代码如下: Private Sub Form_Load() Dim s As String Show s = Input

9、Box(请输入一个字符) If checha(s) Then Print *输入的字符是英文字母* Else Print *输入的字符不是英文字母* End If End Sub Function checha(inp As String) As Boolean Dim upalp As String upalp = UCase(inp),7.1 通用过程和函数过程应用案例,If A = upalp And upalp = Z Then checha = True Else checha = False End If End Function 7.1.2 应用扩展 利用过程计算5!+10!。

10、本例利用窗体加载,再采用Print直接在窗体上输出结果。程序代码如下:程序代码如下: Private Sub Form_load() Dim y As Long, s As Long Show Call jc(5, y) s = y Call jc(10, y) s = s + y,7.1 通用过程和函数过程应用案例,Print 5! + 10! =; s End Sub Private Sub jc(n As Integer, t As Long) Dim i As Integer t = 1 For i = 1 To n t = t * i Next i End Sub 程序运行结果如下:

11、 5!+10!=3628920 在上述事件过程Form_Load中,通过CallJc(5,y)和CallJc(10,y)来分别计算5!和10!。Sub过程Jc(n,t)设置了两个参数n和t。n表示阶数,实际值是由调用过程赋给的。t保存计算结果(即n!的值),它通过修改调用过程的第2个参数(即y)的值,来传送给调用过程。,7.1 通用过程和函数过程应用案例,当使用Call调用Sub过程Jc时,必须事先提供所需的参数值(如5,10),从Sub过程返回时,可以得到计算结果(存放在y中)。 7.1.3 相关知识及注意事项 1通用过程 通用过程一般由编程人员建立,它既可以保存在窗体模块中,也可以保存在标

12、准模块中。通用过程与事件过程不同,它不依附于某一对象,也不是由对象的某一事件驱动和系统自动调用的,而是必须被调用语句(如Call语句)调用才起作用。通用过程也称为“了过程”,可以被多次调用,周用该过程的过程称为“调用过程”。 在VB中,通用过程分为两类:Sub(子程序)过程和Function(函数)过程:Sub过程和Func“on过程的相似之处是,它们都可以被调用,都是一个可以获取参数,执行一系列语句,并能够改变其参数值的独立过程。它们的主要不同点是,Sub过程不返回值因此Sub过程不能出现在表达式中,且不具有数据类型;而Function过程具有一定的数据类型,能够返回一个相应数据类型的值,可

13、以像变量一样出现在表达式中。 (1)定义Sub过程的语句格式如下: PrivateIPublicIStaticSub过程名(参数表),7.1 通用过程和函数过程应用案例,语句块 Exit Sub End Sub 说明: 如果选用Private(局部的),只有该过程所在模块(如窗体模块)中的过程才能调用该过程;如果选用的是Public(公用的),表示在应用程序中的任何地方都可以调用该Sub过程。系统默认为Public。 如果选用Static,表示Sub过程中的局部变量是静态变量,在过程中被调用后,其值仍然保留。如果不用Static属性,则局部变量是动态的(或称自动的),即每次调用Sub过程时,局

14、部变量的初始值为零值(或空字符)。 参数表用来指明从调用过程传递给Sub过程的参数个数及类型。参数表内的参数又称为形式参数(简称形参),其定义格式如下: ByVal | ByRef变量名()MAs数据类型 其中,ByVal表示该参数按值传递,ByRef表示该参数按地址传递。默认为BvRef和ByRef的含义将在后面介绍。 Sub过程可以获取调用过程传送的参数,也能通过参数表的参数,把计算结果传回给调用过程。,7.1 通用过程和函数过程应用案例,(2)Sub过程的建立 Sub过程可以在窗体模块(Frm)中建立,也可以在标准模块(Bas)中建立。 在窗体模块中建立Sub过程,可以在代码窗口中完成。

15、打开代码窗口后,在对象框中选择“通用”项,然后输入Sub过程头,例如输入SubMysubl(n),按回车键后,窗口内显示: Sub Mysubi(n) End Sub 此时即可在Sub和EndSub之间键入程序代码了。 用户也可以在代码窗口中直接键人代码来创建Sub过程。 在标准模块中建立Sub过程,操作方法是:选择“工程”菜单中的“添加模块”命令,打开“添加模块”对话框;再选择“新建”或“现存”选项卡,新建一个标准模块或打开已有的一个标准模块。选择好后即可在模块代码窗口中编辑Sub过程了。 在编辑Sub过程之前,还可以采用以下方法来创建Sub过程模板:选择“工具” 菜单中的“添加过程”命令,

16、打开如图7.4所示的对话框;再输入过程名称,从“类型”组中选择“子程序”类别(若要创建Function过程,应选“函数”),从“范围”组中选择“公有的”(相当于Public)或“私有的”(相当于Private);最后确认,即可创建Sub过程模块和进行代码编辑。,7.1 通用过程和函数过程应用案例,图7.4 “添加过程”对话框 (3)Sub过程调用 事件过程是通过事件驱动和由系统自动调用的,Sub过程则必须通过调用语句实现调用。 Sub过程有以下两种方法。 使用Call语句。格式如下: Call过程名(实参表) 直接使用过程名,即把过程名作为一个语句来使用,格式如下: 过程名实参表 例如,以下两

17、个语句都可以调用名为SubCal的过程: Call SubCal(10) SllbCal 10,7.1 通用过程和函数过程应用案例,2Function过程 VB系统中提供了许多内部函数,如Sin,Cos,Int等,它们的处理程序存放在VB系统程序之中,用户需要时可直接调用。但这只是一般常用的函数,还不能满足使用者的需要,为此VB允许用户使用Function语句编写Function过程(又称函数过程)。Function过程与内部函数一样,可以在程序中使用。 (1)Function过程的定义 Function过程是通用过程的另一种形式,它与Sub过程不同的是,Function过程可直接返回一个值给

18、调用程序。定义Function过程的一般语法格式如下: PrivateIPublicIStaticFunctioin过程名(参数表) 语句块 函数名=表达式 Exit Sub End Function 说明:“表达式”的值是函数的返回值。如果在Function过程中省略“函数名=表达式”,则该过程返回一个默认值(数值函数过程返回0,字符串函数过程返回空字符串)。语法中的其他部分的含义与Sub相同。,7.1 通用过程和函数过程应用案例,(2)Ftnction过程的建立 与Sub过程一样,可以在“代码窗口”中直接输入来建立Function过程;也可以在打开“代码窗口”后,选择“工具”菜单中的“添加

19、过程”命令来建立Function过程(选择“函数”类型)。 (3)Function过程的调用 l 直接调用 像使用VB内部函数一样,只需写出函数名和相应的参数即可。 s=Max(a,b) Print Max(s,c) l 用Call语句调用 与调用Sub过程一样来调用Function过程,例如: Call Max(a,b) 当用这种方法调用Function过程时,将会放弃返回值。 (4) 查看过程 通用过程是程序中的公共代码段,可供各个事件过程调用,因此编写程序时经常要查看当前模块或其他模块中有哪些通用过程。,7.1 通用过程和函数过程应用案例,要查看当前模块中有哪些Sub过程和Function过程,可以在代码窗口的对象框中选择“通用”项,此时在过程框中会列出现有过程的名称。 如果要查看的是其他模块中的过程,可以选择“视图”菜单中的“对象浏览器”命令;然后在“对象浏览器”对话框中,从“工程库”列表框

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论