子过程和函数过程幻灯片.ppt
《子过程和函数过程幻灯片.ppt》由会员分享,可在线阅读,更多相关《子过程和函数过程幻灯片.ppt(86页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、子过程和函数过程1第1页,共86页,编辑于2022年,星期五本章主要介绍:本章主要介绍:定义定义Sub过程过程定义定义Function函数过程函数过程调用调用Sub过程或过程或Function函数过程函数过程调用事件过程调用事件过程变量的存储类别和作用域。变量的存储类别和作用域。编写过程,可以实现代码重复使用。编写过程,可以实现代码重复使用。2第2页,共86页,编辑于2022年,星期五8.1.1 什么是过程什么是过程过程是编写程序的功能模块过程是编写程序的功能模块使用过程主要有以下两方面的原因:使用过程主要有以下两方面的原因:1可以把复杂的问题简单化可以把复杂的问题简单化任务分解为子任务,子任
2、务用过程实现任务分解为子任务,子任务用过程实现使程序结构清晰、易读,也便于调试和维护。使程序结构清晰、易读,也便于调试和维护。2可以实现代码重复使用可以实现代码重复使用可以避免重复编写的烦琐可以避免重复编写的烦琐可以减少出错。可以减少出错。8.1 8.1 概述概述3第3页,共86页,编辑于2022年,星期五8.1.2 过程分类与调用流程过程分类与调用流程VB中的过程分成两大类:中的过程分成两大类:事件过程:事件过程:由对象的某个事件驱动执行由对象的某个事件驱动执行如如Click事件过程、事件过程、Load事件过程等事件过程等通用过程通用过程由用户自已定义的完成某一功能的过程。由用户自已定义的完
3、成某一功能的过程。通用过程不属于任一对象,不由事件驱动通用过程不属于任一对象,不由事件驱动使用专用的调用语句来执行它使用专用的调用语句来执行它4第4页,共86页,编辑于2022年,星期五通用过程又分两类:通用过程又分两类:Sub过程(子过程、子程序)过程(子过程、子程序)往往用于处理不需要有返回值的一些基本任往往用于处理不需要有返回值的一些基本任务务如显示矩阵。如显示矩阵。Function函数过程:函数过程:可作为函数使用,它一般应有一个返回值可作为函数使用,它一般应有一个返回值如求阶乘。如求阶乘。5第5页,共86页,编辑于2022年,星期五调用流程如图:调用流程如图:VB的应用程序就是由若干
4、个过程构成的。的应用程序就是由若干个过程构成的。6第6页,共86页,编辑于2022年,星期五【例例8-1】设计程序,其作用是根据姓名查电话号码。设计程序,其作用是根据姓名查电话号码。输入姓名后,单击输入姓名后,单击“确定确定”或按回车键,使姓名或按回车键,使姓名与内部储存的一批姓名核对,若存在,则显示与内部储存的一批姓名核对,若存在,则显示“欢迎查询欢迎查询”内并使窗体只显示标签,且文字为姓内并使窗体只显示标签,且文字为姓名和对应的电话号码。最多允许输入名和对应的电话号码。最多允许输入3遍。遍。控件:控件:1个标签、个标签、1个文本框个文本框1个个“确定确定”命令按钮命令按钮8.2 8.2 查
5、询电话号码查询电话号码7第7页,共86页,编辑于2022年,星期五过程:过程:Form_Load事件:储存一批姓名和电话号码事件:储存一批姓名和电话号码等等Command1_Click事件:核对姓名,显示提示事件:核对姓名,显示提示Text1_KeyPress事件:核对姓名,显示提示事件:核对姓名,显示提示CheckName 函数过程:判断此人是否存在,函数过程:判断此人是否存在,得下标得下标/-1。姓名和电话号码为模块级变量、姓名和电话号码为模块级变量、N为静态变量。为静态变量。8第8页,共86页,编辑于2022年,星期五 Dim Name1,Phone 声明声明Name1,Phone为为模
6、块级模块级Variant类型变量类型变量Private Sub Command1_Click()核对姓名,显示提示核对姓名,显示提示 Static N As Integer 声明声明N为为静态静态整型变量整型变量 Dim T As Integer T=CheckName(Text1.Text)以姓名为参数,调用以姓名为参数,调用函数函数CheckBook If T -1 Then MsgBox 欢迎查询欢迎查询!,提示提示 Text1.Visible=False:Command1.Visible=False Label1.Caption=姓名姓名:&Text1.Text&Chr(13)&电话电
7、话:&Phone(T)Label1.Left=(Form1.ScaleWidth-Label1.Width)/2 让标签在中间让标签在中间9第9页,共86页,编辑于2022年,星期五Else N=N+1 核对次数加核对次数加1 If N 3 Then MsgBox 你输错了你输错了,这是第这是第&N&次错次错,请重输请重输!,提示提示 Text1.Text=:Text1.SetFocus Else MsgBox 你已经输错你已经输错3次了次了!再见再见!,提示提示 End End If End IfEnd Sub10第10页,共86页,编辑于2022年,星期五 Private Sub Form
8、_Load()初始化数组、设置属性初始化数组、设置属性 Label1.AutoSize=True Text1.Text=:Label1.Caption=姓名姓名:Command1.Caption=确定确定 Name1=Array(张小红张小红,李小芳李小芳,王小华王小华,王力王力,李季李季,黄大海黄大海)Phone=Array(8820123,8882011,7812321,2444522,1243211,3434555)End Sub11第11页,共86页,编辑于2022年,星期五 Function CheckName(Na As String)As Integer 函数过程,返回位置函数过
9、程,返回位置 Dim i As Integer CheckName=-1 For i=LBound(Name1)To UBound(Name1)线性查找法线性查找法 If Name1(i)=Na Then CheckName=i:Exit For Next I End Function Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii=13 Then Command1_Click 遇回车时,遇回车时,调用事件过程调用事件过程 End Sub12第12页,共86页,编辑于2022年,星期五VB中的模块属于工程资源中的模块属于工程
10、资源它由过程或声明构成,以独立的文件管理。它由过程或声明构成,以独立的文件管理。工程中包含窗体、类和标准模块文件工程中包含窗体、类和标准模块文件本节介绍本节介绍窗体模块窗体模块标准模块。标准模块。8.3 8.3 窗体模块和标准模块窗体模块和标准模块13第13页,共86页,编辑于2022年,星期五8.3.1 窗体模块窗体模块窗体模块是大多数窗体模块是大多数VB应用程序的基础应用程序的基础窗体模块与窗体对应,存放窗体上所有信息:窗体模块与窗体对应,存放窗体上所有信息:窗体及窗体上各控件界面信息、属性、事件过程窗体及窗体上各控件界面信息、属性、事件过程通用过程通用过程变量和常量的声明等。变量和常量的
11、声明等。窗体模块文件的扩展名为窗体模块文件的扩展名为.Frm一个应用程序可以创建多个窗体模块一个应用程序可以创建多个窗体模块14第14页,共86页,编辑于2022年,星期五8.3.2 标准模块和标准模块和Sub Main过程过程标准代码模块一般存放与特定窗体或控件无关标准代码模块一般存放与特定窗体或控件无关的通用过程、全局变量的声明等的通用过程、全局变量的声明等如求阶乘如求阶乘一个过程要被多个不同对象或模块调用时,那一个过程要被多个不同对象或模块调用时,那么该过程一般可放在标准模块中。么该过程一般可放在标准模块中。一个应用程序可建立多个标准模块一个应用程序可建立多个标准模块建立标准模块的方法是
12、:建立标准模块的方法是:使用使用“工程工程”菜单的菜单的“添加模块添加模块”命令项。命令项。15第15页,共86页,编辑于2022年,星期五应用程序启动时,可先装载窗体,也可先运行应用程序启动时,可先装载窗体,也可先运行Sub Main过程过程Sub Main是过程名为是过程名为Main的特殊过程的特殊过程Sub Main过程必须放在标准模块中才可作为过程必须放在标准模块中才可作为启动对象。启动对象。启动对象可以在工程属性中设置启动对象可以在工程属性中设置16第16页,共86页,编辑于2022年,星期五8.4.1 定义定义Sub过程过程Sub过程一般指通用子过程,可在程序中调用执过程一般指通用
13、子过程,可在程序中调用执行,执行完毕后无返回值。行,执行完毕后无返回值。它可以定义在窗体模块的通用对象中,也可以它可以定义在窗体模块的通用对象中,也可以定义在标准模块中。格式:定义在标准模块中。格式:Sub 过程名过程名(参数列表参数列表)语句块语句块 End Sub8.4 Sub8.4 Sub过程过程17第17页,共86页,编辑于2022年,星期五1关于格式关于格式过程名的命名方式与变量名命名一致。过程名的命名方式与变量名命名一致。参数列表为调用时传递给参数列表为调用时传递给Sub过程的参数,用过程的参数,用逗号间隔。逗号间隔。Sub过程也可以没有参数,但括号不可省。过程也可以没有参数,但括
14、号不可省。参数的常用语法是:参数的常用语法是:参数名参数名 As 类型说明类型说明定义时的参数,又称为形式参数,简称形参。定义时的参数,又称为形式参数,简称形参。Sub和和End Sub必须成对出现必须成对出现18第18页,共86页,编辑于2022年,星期五2关于语句块关于语句块语句块即为过程体,与事件过程的代码编写一语句块即为过程体,与事件过程的代码编写一样样包含变量声明和可执行的语句、方法等包含变量声明和可执行的语句、方法等可以由顺序、分支、循环三种结构综合而成。可以由顺序、分支、循环三种结构综合而成。语句块中可直接使用参数语句块中可直接使用参数说明:说明:语句块中不能重复声明形式参数。语
15、句块中不能重复声明形式参数。Sub 过程名过程名(参数列表参数列表)语句块语句块 End Sub19第19页,共86页,编辑于2022年,星期五3过程定义步骤过程定义步骤打开代码窗口,对象框中选打开代码窗口,对象框中选“通用通用”,然后输,然后输入过程首行并回车,入过程首行并回车,VB自动显示自动显示End Sub然后再输入过程体就可以了。如:然后再输入过程体就可以了。如:定义过程定义过程Hello:实现以姓名为参数显示:实现以姓名为参数显示“XXX你好!你好!”(XXX具体内容由参数决定)具体内容由参数决定)Sub 过程名过程名(参数列表参数列表)语句块语句块 End Sub20第20页,共
16、86页,编辑于2022年,星期五完整代码应为:完整代码应为:Sub Hello(XXX As String)MsgBox XXX&你好!你好!End Sub以上过程的过程名为以上过程的过程名为Hello形式参数为形式参数为XXX且是字符串型且是字符串型过程体只用了一句过程体只用了一句MsgBox,并同时使用了参,并同时使用了参数数XXX。21第21页,共86页,编辑于2022年,星期五程序中使用调用语句可调用程序中使用调用语句可调用Sub过程过程过程运行完毕或跳出过程运行后,返回到调用处。过程运行完毕或跳出过程运行后,返回到调用处。1调用调用Sub过程的方法过程的方法过程定义在当前模块或标准模
17、块中过程定义在当前模块或标准模块中使用以下两种格式之一:使用以下两种格式之一:格式一:格式一:过程名过程名 实参数列表实参数列表 格式二:格式二:Call 过程名过程名(实参数列表实参数列表)如如Hello过程,可以使用:过程,可以使用:Hello 王小红王小红 或或 Call Hello(王小红王小红)22第22页,共86页,编辑于2022年,星期五过程定义在窗体模块中而调用语句在其它模过程定义在窗体模块中而调用语句在其它模块中块中采用以下两种格式之一:采用以下两种格式之一:格式一:格式一:窗体名窗体名.过程名过程名 实参数列表实参数列表格式二:格式二:Call 窗体名窗体名.过程名过程名(
18、实参数列表实参数列表)调用调用Sub过程的方法也可以用来调用事件过程,过程的方法也可以用来调用事件过程,如例如例4-10,可用:,可用:Private Sub Check2_Click()Check1_Click 这时调用的过程名这时调用的过程名即为即为Check1_Click End Sub23第23页,共86页,编辑于2022年,星期五2关于过程调用时的参数关于过程调用时的参数过程调用时的参数称为实际参数,简称实参。过程调用时的参数称为实际参数,简称实参。它可以变量、常量或表达式。它可以变量、常量或表达式。实参与形参的个数应相同、类型应一致实参与形参的个数应相同、类型应一致若实参是表达式,
19、则先计算值,再将值送若实参是表达式,则先计算值,再将值送给对应的形参。给对应的形参。实参和形参可以使用同名变量。实参和形参可以使用同名变量。如果定义的过程没有形参,则调用时就没有如果定义的过程没有形参,则调用时就没有实参。实参。24第24页,共86页,编辑于2022年,星期五使用使用Call调用时,实参部分要加上括号调用时,实参部分要加上括号不使用不使用Call关键字,直接用过程名调用时,关键字,直接用过程名调用时,参数部分不能加上括号,但过程名和第一个参数部分不能加上括号,但过程名和第一个参数之间要有空格。参数之间要有空格。例如,编程:要求输入姓名,调用例如,编程:要求输入姓名,调用Hell
20、o过过程,则程序如下:程,则程序如下:Private Sub Command1_Click()Dim S As String S=InputBox(请输入姓名请输入姓名)Hello SEnd Sub25第25页,共86页,编辑于2022年,星期五【例例8-2】分析以下程序:分析以下程序:Sub A(n As Integer)Dim i As Integer For i=1 To n:Print i;:Next Call B PrintEnd SubSub B()Print BBBBBBEnd SubPrivate Sub Command1_Click()Call A(9)B 直接使用过程名调用
21、过程直接使用过程名调用过程B()End Sub26第26页,共86页,编辑于2022年,星期五8.4.2 调用调用Sub过程过程【例例8-3】设计一个如设计一个如图图所示的程序,其作用是显示字符图案。所示的程序,其作用是显示字符图案。显示的字符和行数由输入决定,形状可以是正三角形或倒显示的字符和行数由输入决定,形状可以是正三角形或倒三角形。三角形。编写通用过程编写通用过程Print_triangle,输出三角形图案。,输出三角形图案。显示的字符显示的字符S、行数、行数Line、及作为正或倒的三角形标志、及作为正或倒的三角形标志Flag 均作为参数均作为参数Print_triangle供两个命令
22、按钮调用供两个命令按钮调用两个命令按钮的两个命令按钮的Click事件:事件:输入输入1个字符和行数,调用个字符和行数,调用Print_triangle过程。过程。8.4 Sub8.4 Sub过程过程27第27页,共86页,编辑于2022年,星期五8.4.2 调用调用Sub过程过程字符三角形字符三角形Sub Print_triangle(S As String,Line As Integer,Flag As Integer)通用过程通用过程 Dim A As Integer,B As Integer,i As Integer,j As Integer Cls If Flag=-1 Then A=
23、Line:B=1 Else A=1:B=Line For i=A To B Step Flag 正正:从小到大循环,倒从小到大循环,倒:从大到小循环从大到小循环 Print Tab(Line+10-i);For j=1 To 2*i 1:Print S;:Next j Print Next iEnd Sub28第28页,共86页,编辑于2022年,星期五 Private Sub Command1_Click()Dim Ch As String*1,Line As Integer Ch只容纳只容纳1个字符个字符 Ch=InputBox(请输入一个要显示的字符请输入一个要显示的字符)Line=Va
24、l(InputBox(请输入显示的行数请输入显示的行数)Print_triangle Ch,Line,1 以标志以标志1调用过程调用过程End SubPrivate Sub Command2_Click()Dim Ch As String*1,Line As Integer Ch=InputBox(请输入一个要显示的字符请输入一个要显示的字符)Line=Val(InputBox(请输入显示的行数请输入显示的行数)Print_triangle Ch,Line,-1 以标志以标志-1调用过程调用过程End Sub29第29页,共86页,编辑于2022年,星期五8.4.3 Exit Sub语句语句使
25、用使用Exit Sub语句可以中途结束子过程的运行。语句可以中途结束子过程的运行。程序不再执行程序不再执行Exit Sub到到End Sub之间的代码,之间的代码,而是直接返回到调用处。而是直接返回到调用处。Exit Sub语句一般往往与语句一般往往与If语句合用,如:语句合用,如:修改例修改例8-3中的中的Print_triangle过程,当过程,当Line参数小于等于参数小于等于0,Flag参数不等于参数不等于1时,显时,显示示“参数错误参数错误”并退出过程。并退出过程。30第30页,共86页,编辑于2022年,星期五则可以在则可以在Print_triangle过程的过程的Cls前增加一前
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 过程 函数 幻灯片
限制150内