背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-3370.html    注册17xie 一起来写书 实现您的出书梦想!

两种调用方式示意图如图5-8所示。

ByVal传值

     a

 

 

 

 

 

 

 

 

 

 

 

传址

  b

  10

  20

  10

b的地址

x

y

实参

形参


 

5-8  两种参数传递方式示意图

5.3.2  传递数组

Visual Basic允许参数是数组。当用数组作为参数时,使用的是传址方式,而不是传值方式,即将实参数组的地址传给被调用过程的形参数组。

在传递数组时还要注意以下:

1.在实参列表和形参列表中写数组名,忽略维数的定义,但圆括号不能省。

2.被调过程可通过LboundUbound函数确定实参数组的下界和上界。

LboundUbound函数的形式如下:

{L|U}bound (数组名[,维数])

其中:维数指明要测试的是第几维的下标值,缺省是一维数组。

5-4  求数组元素的和。

设计步骤如下:

1)设计程序界面和设置对象属性,如图5-9所示。

    

5-9  数组求和

2)编写代码。

Public Function sum (p())

Dim m%, n%

    For m = LBound (p, 1) To UBound (p, 1)

        For n = LBoun d(p, 2) To UBound (p, 2)

        sum = sum + p (m, n)

Next n,m

End Function

 

Private Sub Command1_Click()

   Dim s(), a%, b%, k%, sums%

   Cls

   a = CInt (Text1.Text):b = CInt (Text2.Text)

   ReDim s(1 To a, 1 To b)

   For i = 1 To a

       For j = 1 To b

           s(i, j) = Int(90 * Rnd + 10)

           Print s(i, j);

       Next j

       Print

   Next i

   sums = sum (s ())

Print "sums="; sums

End Sub

程序运行结果如图5-9所示。

5-5  利用顺序查找法找出数组中的某个数。

设计如图5-10所示的程序运行界面。在窗体中添加一个图片框和两个命令按钮:Command1Name属性为“CmdCrea”,Caption属性为“产生随机数”),Command2Name属性为“CmdFind”,Caption属性为“查找数据”)。按下“产生随机数”按钮时,在图片框中显示产生的随机数,按下“查找数据”执行数据查找功能,执行结果如图5-11所示。

5-10  查找数据运行界面1

    

5-11  查找数据运行界面2

程序代码为:

Dim a()

Public Sub search (p (), ByVal keyword, record As Integer)

Dim x As Integer

    record = -1

    For x = LBound (p) To UBound (p)

        If p(x) = keyword Then

            record = x:

Exit For

        End If

Next

End Sub

 

Private Sub CmdCrea_Click()

    Dim i As Integer

    ReDim a(1 To 50)

    For i = 1 To 50

        a(i) = Int(Rnd * 90 + 10)

        If i Mod 10 = 0 Then

            Picture1.Print a(i)

        Else

            Picture1.Print a(i);

        End If

    Next i

End Sub

 

Private Sub CmdFind_Click()

    Dim myrecord As Integer

    myword = Val(InputBox("请输入要查找的关键字"))

    Call search(a, myword, myrecord)

    If myrecord = -1 Then

        MsgBox "没有要查找的关键字", vbInformation + vbOKOnly, "查询结果"

    Else

        MsgBox "关键字位置为" & myrecord, vbInformation + vbOKOnly, "查询结果"

    End If

End Sub

5.4  变量与过程的作用域

Visual Basic应用程序由若干过程组成,这些过程一般保存在窗体文件(.Frm)或标准模块文件(.Bas)中。变量在过程中是必不可少的。一个变量、过程随所处的位置不同,可被访问的范围不同,变量、过程可被访问的范围称为变量、过程的作用域。

一般Visual Basic的应用程序组成可用图5-12描述。

应用程序

.vbp

至少一个或若干个窗体模块(.Frm)文件

一个或若干个标准模块(.Bas)文件或没有

一个或若干个类模块(.Cls)文件或没有

事件过程(Sub

自定义子过程(Sub

自定义函数过程(Function

自定义子过程(Sub

自定义函数过程(Function

自定义属性过程( Property

自定义方法过程(SubFunction

自定义事件过程(Event


5-12  Visual Basic应用程序组成

本章只讨论窗体和标准模块文件。前面所讲内容只涉及到了窗体模块,与窗体模块不同,标准模块不含窗体和控件的内容,只含有由程序代码组成的一般过程和函数。在工程中添加标准模块的方法为:

选取“工程”菜单中的“添加模块”命令,在弹出的“添加模块”对话框中,单击“打开”按钮,就会打开新建标准模块窗口,然后在代码窗口中添加过程代码。

5.4.1  过程的作用域

过程的作用域分为:窗体/模块级和全局级。

1.窗体/模块级

在某个窗体或标准模块中定义的过程前加上Private关键字,则该过程只能被本窗体或本标准模块中的过程调用。

2.全局级

在某个窗体或标准模块中定义的过程前加上Pulbic关键字或缺省,则该过程可以被应用程序的所有窗体或标准模块中的过程调用。其调用方式根据过程所处的位置有如下两种:

 

1)在窗体中定义的过程,当外部过程要调用时,应在被调用的过程名前加上所处的窗体名。

2)在标准模块中定义的过程,如果过程名唯一,则任何外部过程都可以直接调用,否则应在被调用的过程名前加上所处的标准模块名。有关规则如表5-1所示。

5-1                             过程的作用域

作用范围

   

   

窗体

标准模块

窗体

标准模块

定义方式

过程名前加Private 例:

Private Sub Sub1(形参表)

过程名前加Pulbic或缺省

例:Pulbic Sub Sub2(形参表)

能否被本模块

其他过程调用

能否被本应用程

序其他模块调用

不能

不能

能,但必须在过程名前加窗

体名,例:

Call 窗体名. Sub2(实参表)

能,但过程名必须唯一,否则要

加标准模块名,例:

Call 标准模块名. Sub2(实参表)

5.4.2  变量的作用域


字数:4946    最后更新:1年以前 [09-06 02:19]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第五章  [后一页]:第五章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号