首页 VB过程

VB过程

举报
开通vip

VB过程null第七章 过程 第七章 过程 7.1过程的概念及其分类7.1过程的概念及其分类过程的概念 : 过程是用来执行一个特定任务的一段程序代码 这一程序段按一定的格式独立出来并被赋予相应的名字 将一些常用的功能编写成过程,可供多个不同的程序过程多次调用,从而可以减少重复编写代码的工作量,实现代码重用,使程序简练、便于调试和维护。 VB的程序结构VB的程序结构7.2函数过程的定义和调用7.2函数过程的定义和调用函数过程的定义 [Static][Private][Public] Function 函数过程名([参数列表...

VB过程
null第七章 过程 第七章 过程 7.1过程的概念及其分类7.1过程的概念及其分类过程的概念 : 过程是用来执行一个特定任务的一段程序代码 这一程序段按一定的格式独立出来并被赋予相应的名字 将一些常用的功能编写成过程,可供多个不同的程序过程多次调用,从而可以减少重复编写代码的工作量,实现代码重用,使程序简练、便于调试和维护。 VB的程序结构VB的程序结构7.2函数过程的定义和调用7.2函数过程的定义和调用函数过程的定义 [Static][Private][Public] Function 函数过程名([参数列表]) [As 类型] 局部变量或常数定义 语句块 [函数名 = 返回值(函数值)] End Function Public Function Circle_area (ByVal r As single) As single CONST Pi=3.14159 '定义一圆周率常量Pi Circle_area = Pi*r*r '把结果赋给函数名 End Function null函数过程的定义 [Static][Private][Public] Function 函数过程名([参数列表]) [As 类型] 局部变量或常数定义 语句块 [函数名 = 返回值(函数值)] End Function Private Function jiecheng (ByVal x As integer) As long dim jc as long, i as integer jc=1 for i=1 to x jc=jc*i next Jiecheng=jc End Function 7.2.3 函数过程的调用7.2.3 函数过程的调用Private Sub Form_Click() Dim x As Integer, mj as single x = Val(InputBox("请输入半径x")) mj = circle_area(x) ‘此语句是函数过程的调用 print mj End Sub Public Function Circle_area (ByVal r As single) As single CONST Pi=3.14159 '定义一圆周率常量Pi Circle_area = Pi*r*r '把结果赋给函数名 End Function7.2.3 函数过程的调用7.2.3 函数过程的调用Private Sub Form_Click() Dim n As Integer, m As Integer n = Val(InputBox("请输入n")) m= Val(InputBox("请输入m")) Print jiecheng(n) / (jiecheng(m) * jiecheng(n - m)) End Sub Private Function jiecheng(ByVal x As Integer) As Long Dim jc As Long, i As Integer jc = 1 For i = 1 To x jc = jc * i Next jiecheng = jc End FunctionExit Function 语句Exit Function 语句用来退出函数过程 一般配合分支结构(if 或者select case)使用Exit Function 语句Exit Function 语句求100至999之间的最大的三个素数。其中判断一个数是否为素数的部分用函数过程实现。 设计函数过程的思路: 函数名 isprime( ) 函数形参表 isprime(x as integer) 函数返回值 isprime(x as integer)as booleannullPrivate Sub Form_Click() Dim i As Integer, count As Integer count = 0 For i = 999 To 100 Step -1 If isprime(i) Then Print i; count = count + 1 If count = 3 Then Exit For End If Next End Sub Public Function isprime(ByVal x As Integer) As Boolean Dim j As Integer For j = 2 To x - 1 If x Mod j = 0 Then isprime = False Exit Function End If Next isprime = True End Function7.3 SUB过程(子程序)的定义和调用7.3 SUB过程(子程序)的定义和调用7.3.1 子程序过程的定义 [Static] [Public] [Private] Sub 子过程名[(参数列表)] [局部变量或常数定义] [语句序列] [Exit Sub] End Sub 下面就是一个简单的子程序过程: Private Sub Subexp( ) Print "This is a Sub procedure" End sub子程序过程的定义子程序过程的定义[Static] [Public] [Private] Sub 子过程名[(参数列表)] [局部变量或常数定义] [语句序列] [Exit Sub] End Sub Private Sub max(ByVal x As Single, ByVal y As Single) If x > y Then Print x Else Print y End If End Sub7.3.3 子程序过程的调用7.3.3 子程序过程的调用1、使用call 语句: 格式:call 子程序过程名[(实在参数)] 2、把子程序过程名作为一个语句来使用: 格式:子程序过程名 [实在参数] 注意:此种方式里,没有关键字 call ,实在参数外没有小括号。子程序过程的调用子程序过程的调用Private Sub max(ByVal x As Single, ByVal y As Single) If x > y Then Print x Else Print y End If End Sub Private Sub Form_Click() Dim a As single, b As single a = Val(InputBox("请输入a")) b = Val(InputBox("请输入b")) Call max(a, b) ‘第一种方法 max a,b ‘第二种方法 End Sub7.4参数传递7.4参数传递7.4.1 形参和实参 形参是定义Sub、Function过程时参数列表中的变量; 实参是指在调用Sub、Function过程时使用的常数、变量、表达式等 参数传递的方式 参数传递的方式 参数传递就是“实参”和“形参”的结合 参数传递分为两种: 传值(byval……) 传地址(byref ……)或者(……) 传地址还是传值是由形参表中的关键字决定的传值传值Private Sub swap1(ByVal x%, ByVal y%) Dim t% t = x: x = y: y = t End Sub Private Sub swap2(ByRef x%, ByRef y%) Dim t% t = x: x = y: y = t End Sub Private Sub Form_Click() Dim a As Integer, b As Integer a = Val(InputBox("请输入a")) b = Val(InputBox("请输入b")) Print “调用前a, b的值是:", a, b Call swap1(a, b) Print “调用swap1后的a, b的值是:", a, b Call swap2(a, b) Print “调用swap2后的a, b的值是:", a, b End Sub传地址传值和传地址传值和传地址传值 把实参的值复制给形参,对形参的的操作不会影响到实参 传地址 把实参的地址传递给形参,即子过程的形参与父过程的相应实参共用了相同的内存单元。对形参的操作等价于实参的操作7.4.4数组参数的传递7.4.4数组参数的传递⑴在过程定义时,形参列表中的数组名后要有一对空的圆括号(若是二维数组可在圆括号中加一个“,”号),以免与其它变量混淆。例如,假定定义了如下过程: Sub S(a() as Integer , b as single) …… End Sub 该过程有两个形参,一个是数组a(后有一对空的圆括号),而另一个是单精度变量b。 ⑵当用数组作为过程的参数时,一定要用“传地址”方式。 ⑶在过程调用时,实际参数表中的数组可以只用数组名表示,省略圆括号也可以不省。所以,可以用下面的语句调用上述过程: call s(p(),x) 或 Call s(p,x)例7.6:用数组作参数,求一维数组中的所有负元素之和。 例7.6:用数组作参数,求一维数组中的所有负元素之和。 Function sum%(b%( )) Dim i% For i = LBound(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%(10),s%,i% For i = 1 To 10 A(i)= Int(Rnd * 100)- 50 Print a(i); Next i Print s = sum(a( )) Print "数组中的负元素之和为:";s End Sub7.5变量与过程的作用域7.5变量与过程的作用域变量、过程可被访问的范围。 主要取决于其所在位置及声明的方式 7.5.1 变量的作用域7.5.1 变量的作用域根据作用域的大小可以把变量分成三类: 局部变量:在过程内用dim或static声明的变量,只能在本过程中使用。 窗体/模块级变量:在“通用声明”段中用Dim语句或用Private语句声明的变量,可被本窗体/模块(它所在的窗体)的任何过程访问。 全局变量:在“通用声明”段中用Public语句声明的变量,可被本应用程序的任何过程访问。 变量的声明和作用域变量的声明和作用域局部变量局部变量Private Sub Command1_Click() Dim x% x = x + 10 Print x End Sub Private Sub Command2_Click() Dim x% Print x End Sub局部变量和窗体模块级变量局部变量和窗体模块级变量Dim temp As Integer Private Sub Command1_Click() temp = 20 Print temp End Sub Private Sub Command2_Click() Dim temp temp = 1 Print temp End Sub局部变量和全局变量局部变量和全局变量public temp As Integer Private Sub Command1_Click() temp = 20 Print temp End Sub Private Sub Command2_Click() Dim temp temp = 1 Print temp print form1.temp End Sub局部变量局部变量Private Sub Command1_Click() dim n As Integer n = n + 1 Print "command1被按下了" & n & "次" End Sub 7.5.3静态变量 。 7.5.3静态变量 。静态变量是指: 用Static 声明的变量 或过程名前加关键字Static的过程内用Dim声明的局部变量 Private Sub Command1_Click() Static x% x = x + 10 Print x End Substatic Sub Command1_Click() dim x% x = x + 10 Print x End Sub静态变量静态变量Private Sub Command1_Click() static n As Integer n = n + 1 Print "command1被按下了" & n & "次" End Sub 还有其它 办法么?局部变量和静态变量局部变量和静态变量局部变量: 调用过程时给其分配存贮空间,(数值型变量置0,字符串型变量置成空串)。 随着过程的调用完毕,存贮空间被释放每次调用都被初始化 静态变量 在编译期间分配空间,直到最后整个程序运行完毕,才释放空间,所以每次调用过程时保留原来的值。例7.10 静态变量的应用 例7.10 静态变量的应用 Private Sub Form_Click() Dim i% ,k% For i = 1 To 5 k = f(i) Print k; Next i End Sub Private Function f(Byval n As Integer) As Integer Static j As Integer j = j + n f = j End Function7.5.4 变量使用原则7.5.4 变量使用原则使用优先级: 局部变量>窗体模块级变量>全局变量7.5.2 过程的作用域7.5.2 过程的作用域按过程的作用域的大小可以把过程分成两类:窗体/模块级过程和全局级过程。 窗体/模块级:加Private关键字的过程,只能被定义该过程的窗体模块或 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 模块中的过程调用。 全局级:加Public关键字(或缺省)的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用 顺序查找顺序查找哈,找到了!例7.17 顺序查找例7.17 顺序查找Option Base 1 Private Sub Command1_Click() Dim a(), X%, K% a = Array(23, 54, 65, 34, 45, 87, 97, 61) X = InputBox("请输入一关键字:") K = SEARCH(a, X) If K > 0 Then '找到,则输出其位置及关键字 Print K, a(K) Else Print "NOT FOUND!“ '没找到,则输出 NOT FOUND! End If End Sub Public Function SEARCH ( a(), ByVal KEY%) SEARCH = -1 '假定数组A中无所查关键字 For i = LBound(a) To UBound(a) '从第一个数组元素到最后一个进行顺序查找 If a(i) = KEY Then SEARCH = i Exit Function End If Next End Function二分法查找(有序数组)二分法查找(有序数组)第1次第2次第3次二分法查找(有序数组)二分法查找(有序数组)第1次第2次第3次第4次二分法查找(折半查找)二分法查找(折半查找)Option Base 1 Private Sub Command1_Click() Dim A(), KEY% A = Array(21, 43, 56, 65, 79, 90, 92, 97, 98, 99) KEY = InputBox("请输入待查关键字:") k = SEARCH(A, KEY) If k > 0 Then Print "关键字"; KEY; "所在位置为:"; k Else Print "关键字"; KEY; "NOT FOUND!" End If End SubnullFunction SEARCH(A(), X%) As Integer Rem 在数组a中查找关键字x,若查到则返回其位置,否则返回-1 Dim LOW%, HIGH%, MID% SEARCH = -1 LOW = LBound(A) : HIGH = UBound(A) : MID = (LOW + HIGH) \2 Do While LOW <= HIGH If A(MID) = X Then '查到,返回其位置并结束 SEARCH = MID Exit Do ElseIf A(MID) > X Then '若待查的关键字在mid的左边,移动指针high HIGH = MID - 1 Else '若待查的关键字在mid的右边,移动指针low LOW = MID + 1 End If MID = (LOW + HIGH) \ 2 '再次求出中间位置重复上述过程 Loop End Function例7.16 将一个十进制整数m转换成 r (2-16)进制数字。例7.16 将一个十进制整数m转换成 r (2-16)进制数字。将数m转换为r进制将数m转换为r进制Function TranDec$(ByVal m%, ByVal r%) Dim StrDtoR$ Dim iB%, mr% StrDtoR = "“ Do While m <> 0 mr = m Mod r '求出M 除R的余数 m = m \ r '修正M的值 If mr >= 10 Then StrDtoR = Chr(mr - 10 + 65) & StrDtoR Else StrDtoR = mr & StrDtoR End If Loop TranDec = StrDtoR End Function null Private Sub Command1_click() Dim mm%, rr%, k% Label3.Caption = "转化成" & Trim(Text2) & "进制数为:" mm = Val(Text1.Text) rr = Val(Text2.Text) If rr < 2 Or rr > 16 Then k = MsgBox("输入的R进制数超出范围", vbRetryCancel) If k = vbRetry Then Text2.Text = "" Text2.SetFocus Else End End If End If Label3.Caption = "转换成" & rr & "进制数" Text3.Text = TranDec(mm, rr) End Sub
本文档为【VB过程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_117791
暂无简介~
格式:ppt
大小:931KB
软件:PowerPoint
页数:0
分类:其他高等教育
上传时间:2012-01-04
浏览量:50