《第7章 数组ppt课件.pptx》由会员分享,可在线阅读,更多相关《第7章 数组ppt课件.pptx(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第7章 数组本章内容u理解理解过程的概念及作用。过程的概念及作用。u掌握过程的定义和调用方法。掌握过程的定义和调用方法。u掌握过程的参数传递规则。掌握过程的参数传递规则。u掌握过程的应用。掌握过程的应用。2第第7 7章章 过程过程37.1 Sub7.1 Sub过程过程 SubSub过程是没有返回值的过程。过程是没有返回值的过程。SubSub过程有两种类型:过程有两种类型:事件过程和通用过程。事件(处理)过程是为响应由用户事件过程和通用过程。事件(处理)过程是为响应由用户操作或程序中的事情引发的事件而执行的操作或程序中的事情引发的事件而执行的 Sub Sub 过程。通过程。通用过程是一个特定任务
2、的代码块,由专有语句来调用才执用过程是一个特定任务的代码块,由专有语句来调用才执行的行的SubSub过程过程。本节介绍通用本节介绍通用SubSub过程的定义和调用过程的定义和调用。n SubSub过程的定义过程的定义SubSub过程的定义格式如下:过程的定义格式如下:Private|PublicStatic Sub Private|PublicStatic Sub 过程名过程名( (参数表参数表) ) 语句语句End End SubSub4说明:说明:PrivatePrivate设定所编制的过程只能在本模块中被调用。设定所编制的过程只能在本模块中被调用。StaticStatic表示过程内部定义
3、的变量值在整个程序运行期间被表示过程内部定义的变量值在整个程序运行期间被保留。保留。过程名的命名规则与变量命名规则相同过程名的命名规则与变量命名规则相同。参数表中的参数称为形式参数,简称参数表中的参数称为形式参数,简称形参,形参,它可以是变量它可以是变量名或数组名,不能是常量、数组元素、表达式;若有多个参名或数组名,不能是常量、数组元素、表达式;若有多个参数时,各参数之间用逗号分隔,形参没有具体的值数时,各参数之间用逗号分隔,形参没有具体的值。形参形参格式为:格式为: ByVal ByVal 变量名变量名( ) As ( ) As 数据类型数据类型 其中其中ByValByVal表明其后的形参是
4、按值传递表明其后的形参是按值传递参数,参数,若缺省或用若缺省或用ByRefByRef说明参数,则表明参数是按地址传递说明参数,则表明参数是按地址传递的或的或称引称引用。用。当执行了当执行了 End Sub End Sub 语句后,语句后, 过程调用正常结束,过程调用正常结束, 也可以也可以在过程体中用在过程体中用Exit SubExit Sub语句提前结束过程。语句提前结束过程。SubSub过程不能嵌套定义,但可以嵌套调用。过程不能嵌套定义,但可以嵌套调用。可以将子过程放入标准模块、类模块中。可以将子过程放入标准模块、类模块中。7.1 Sub7.1 Sub过程过程5【例例7-1】定义输出一个直
5、角三角形图案的过程,该过定义输出一个直角三角形图案的过程,该过程有两个参数:一个是打印的行数,另一个是组成图案程有两个参数:一个是打印的行数,另一个是组成图案的字符。的字符。 Public Sub Output_Triangle(n As Integer, ch As String) Dim i As Integer, j As Integer For i = 1 To n For j = 1 To i Debug.Write(ch) Next j Debug.Print() Next i End Sub7.1 Sub7.1 Sub过程过程6n SubSub过程的调用过程的调用调用调用SubS
6、ub过程有以下两种方法:过程有以下两种方法:Call SubCall Sub过程名过程名( (实参表实参表) )SubSub过程名过程名 ( (实参表实参表) )说明:说明:实参必须与形参保持个数相同,位置与类型一一对应。实实参必须与形参保持个数相同,位置与类型一一对应。实参可以是常量或有值的表达式。参可以是常量或有值的表达式。调用时把实参值传递给对应的形参。其中值传递调用时把实参值传递给对应的形参。其中值传递( (形参前有形参前有ByValByVal说明说明) )时实参的值不随形参值的改变而改变。而地址传时实参的值不随形参值的改变而改变。而地址传递时实参的值随形参值的改变而改变。递时实参的值
7、随形参值的改变而改变。当参数是数组时,形参与实参在参数声明时应省略其维数,当参数是数组时,形参与实参在参数声明时应省略其维数,但括号不能省。但括号不能省。例如,调用例例如,调用例7-17-1定义的定义的Output_TriangleOutput_Triangle子过程打印子过程打印1010行由行由“* *”组成的组成的图形:图形: Call Output_Triangle(10, Call Output_Triangle(10, * *)或或 Output_Triangle(10, Output_Triangle(10, * *)7.1 Sub7.1 Sub过程过程77.2 Function7
8、.2 Function过程过程FunctionFunction过程与过程与SubSub过程的不同之处在于:过程的不同之处在于:SubSub过程没有返回值,过程没有返回值,可以作为独立的基本语句调用;而可以作为独立的基本语句调用;而FunctionFunction过程要返回一个值过程要返回一个值n FunctionFunction过程的定义过程的定义语法格式如下:语法格式如下: Private|PublicStatic Function 函数过程名函数过程名(参数表参数表) As类型类型 语句块语句块 Exit Function Return 返回值返回值 函数名函数名=返回值返回值End Fu
9、nction说明说明:As类型类型用于说明函数返回值的数据类型。如果省略用于说明函数返回值的数据类型。如果省略“As 类型类型”则默认返回则默认返回Object类型值。类型值。函数函数的返回的返回值通过值通过对函数名的赋值语句或对函数名的赋值语句或return语句来实语句来实现现的。的。Function过程内部过程内部不能定义不能定义Sub过程或过程或Function过程过程。8【例例7-2】设计一个由三角形的设计一个由三角形的3条边长,计算其面积的条边长,计算其面积的函数。函数。 Function Area(ByVal a As Single, ByVal b As Single, ByVa
10、l c As Single) As Single Dim s As Single s = (a + b + c) / 2 If a + b c And Math.Abs(a - b) 1 Then Fac = n * Fac(n - 1) Else Fac = 0 End If End Function Private Sub Button1_Click(sender As Object, e As EventArgs) HandlesButton1.Click Dim n As Integer, p As Long n = Val(TextBox1.Text) p = Fac(n) Labe
11、l1.Text = TextBox1.Text & ! & p End Sub7.5 7.5 过程过程的递归调用的递归调用267.6 7.6 过程过程应用举例应用举例【例例7-8】设计一个过程求设计一个过程求m、n的最大公约数。并调用该过的最大公约数。并调用该过程求程求75、215两个数的最大公约数。两个数的最大公约数。Function GCD(ByVal m As Integer, ByVal n As Integer) As Integer Dim r As Integer If (m n r = m m = n n = r End If r = m Mod n Do While (r 0
12、) 辗转相除辗转相除 m = n n = r r = m Mod n Loop GCD = nEnd Function27Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim G1, G2 As Integer G1 = TextBox1.Text G2 = TextBox2.Text Label1.Text = GCD(G1, G2)End Sub7.6 7.6 过程过程应用举例应用举例28【例【例7-9】M函数定义如下:函数定义如下:Public Function M(By
13、Val n As Integer) As Integer If (n = 100) Then M = M(M(n + 11) Else M = n - 10 End If End Function调用主程序如下:调用主程序如下: Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim n As Integer For n = 30 To 120 Step 10 Label1.Text += M(n) & vbCrLf Next End Sub7.6 7.6 过程过程应用举例应用举
14、例29【例例7-10】设计一个按分数规则进行加减法的程序。一般的分数加减法的形设计一个按分数规则进行加减法的程序。一般的分数加减法的形式是式是: ,其中其中i、j的最大公约数为的最大公约数为1。程序程序如下:如下: Public Sub Add(ByVal k%, ByVal l%, ByVal n%, ByVal m%, ByRef i%, ByRef j%, ByVal c As Char) Dim n1, m1, r As Integer If c = + Then n1 = k * m + n * l Else n1 = k * m - n * l End If m1 = l * m
15、分子分母用最大公约数约分,求最大公约数的函数同例分子分母用最大公约数约分,求最大公约数的函数同例7-8 r = GCD(n1, m1) i = n1 / r j = m1 / r End Sub 7.6 7.6 过程过程应用举例应用举例30Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim k, l, m, n, i, j As Integer Dim c As Char k = InputBox(输入第输入第1个数的分子:个数的分子:) l = InputBox(输入第输入
16、第1个数的分母:个数的分母:) c = InputBox(输入运算符:输入运算符:) m = InputBox(输入第输入第2个数的分子:个数的分子:) n = InputBox(输入第输入第2个数的分母:个数的分母:) Call Add(k, l, m, n, i, j, c) 调用调用ADD子程序求结果的分子分子程序求结果的分子分母母 Label1.Text += k & Space(2) & m & Space(3) & i & vbCrLf Label1.Text += & c & & & & vbCrLf Label1.Text += l & Space(2) & n & Space
17、(3) & j & vbCrLfEnd Sub7.6 7.6 过程过程应用举例应用举例31【例例7-11】设计一个程序,求同时满足下列两个条件的分数设计一个程序,求同时满足下列两个条件的分数X的个数:的个数:1/6X1/5。X 的分子分母都是素数且分母是两位数。的分子分母都是素数且分母是两位数。设设Xm/n,根据条件,根据条件,10n99;根据条件,;根据条件,5mn6m,并,并且且m、n均为素数,用枚举法来求解这个问题,并设计一个均为素数,用枚举法来求解这个问题,并设计一个Boolean型函数来判断一个数是否为素数,是素数返回值为型函数来判断一个数是否为素数,是素数返回值为True。 Pri
18、vate Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim m, n, con As Integer con = 0 For n = 11 To 99 Step 2 If nprim(n) Then For m = n / 6 + 1 To n / 5 If nprim(m) Then con = con + 1 Next m End If Next n Label1.Text = 满足条件的数有:满足条件的数有: & con & 个个 End Sub7.6 7.6 过程过程应用举例应用举例32 Public Function nprim(ByVal n As Integer) As Boolean Dim i As Integer nprim = True i = 2 Do While i = Math.Sqrt(n) And nprim If n Mod i = 0 Then Return False i = i + 1 Loop End Function7.6 7.6 过程过程应用举例应用举例