您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VB >> 辅导 >> 正文    
  VB考试教程:过程的使用之再谈Sub过程与Function过程的调用及使用 【注册男护士专用博客】          

VB考试教程:过程的使用之再谈Sub过程与Function过程的调用及使用

www.nanhushi.com     佚名   不详 

1、再谈Sub过程与Function过程的调用及使用

调用过程有很多方法,它们与过程的类型、位置以及在应用程序中的使用方式有关。调用Sub过程与Function过程不同,在表达式中,调用Sub过程的是一个独立的语句,而调用函数过程只是表达式的一部分。Sub过程还有一点与函数不一样,它不会用名字返回一个值。而与Function过程一样,Sub过程也可以修改传递给它们的任何变量的值。

(1)调用Sub过程

有两种方法:

Call MyProc(FirstArgument,SecondArgument)

MyProc FirstArgument,SecondArgument

说明 当使用Call语法时,参数必须在括号内。若省略Call关键字,则也必须去掉参数两边的括号

(2)调用函数过程

方法一:通常,调用自定义的函数过程的方法和调用VB内部函数过程的方法一样,即在表达式中写上名字。

方法二:也可以像调用Sub过程一样调用Function 过程,如调用函数过程Year:

    Call Year(Now)

    Year Now

当用这种方法调用函数时,放弃返回值。

一般来说,函数都赋值给某些变量或属性。

(3)调用其它模块中的过程

在工程中的任何地方都能调用其它模块中的公用过程。调用其它模块中的过程的各种方法,取决于该过程是在窗体模块中、类模块中还是标准模块中。

调用窗体模块中的过程:

所有窗体模块的外部调用过程必须指向包含此过程的窗体模块。如在窗体模块Form1中包含SomeSub过程,则可使用语句:“Call Form1.SomeSub(参数列表)”来调用Form1中的SomeSub过程。

调用类模块中的过程:

类模块中的过程与窗体中调用过程类似,在类模块中调用过程要调用与过程一致并且指向类实例的变量。例如DemoClass是类Class1的实例:

    Dim DemoClass as New Class1
    DemoClass.SomeSub

但是不同于窗体的是,在引用一个类的实例时,不能用类名作限定符(如不能像窗体中用Form1.SomeSub那样使用Class1.SomeSub),必须首先声明类的实例为对象变量(如上面的DemoClass)并用该变量名引用它。

使用标准模块中的过程:

如果过程名是惟一的,则不必在调用时加模块名。无论是在模块内,还是在模块外调用,结果总会引用这个惟一过程。在整个应用程序中,如果过程仅出现在一个地方,这个过程就是惟一的。

如果两个以上的模块都包含同名的过程,例如:对于在Module1和Module2中都有名为“CommonName”的过程,在调用该过程时,分两种情况:

  • 如果在同一模块内调用一个公共过程就会直接运行该模块内的过程。如在Module2中直接调用“CommonName”则运行Module2中的“CommonName”过程,而不是Module1中的“CommonName”过程。
  • 如果在Module1中调用Module2中的“CommonName”过程,那就必须使用模块名进行限定,要用语句:Module2.CommonName(参数列表)。

在下面的练习中,将在前面的“幸运7”程序中添加一个函数,用来计算游戏中的获胜率(Spin中出现一个或多个7的百分比)。为此,可在标准模块中增加一个名为Rate的函数和一个名为Spins的公用变量。然后每次单击“开始”按钮时都调用Rate函数。还要在窗体上新创建的标签中显示计算结果。

在窗体上再添加一个标签,Name属性为“lblRate”、Caption属性为“0.0%”、ForeColor是“红色”,图像框的“Stretch”属性仍设置为True。

界面如下:

在标准模块窗口中键入如下代码(增加一个名为Rate的函数和一个名为Spins的公用变量):

Option Explicit
Public Wins
Public Spins     '再定义一个公用变量,用来记录产生随机数的总数,即单击按钮的次数。


Function Rate(Hits, Attempts) As String    '建立一个名为Rate的函数
    Dim Percent
    Percent = Hits / Attempts
    Rate = Format(Percent, "0.0%")
End Function

说明:Rate函数通过将Hits参数除以Attempts参数来确定获胜率,然后通过使用Format(格式)函数调整显示结果。Rate函数被声明为字符串类型,原因在于Format(格式)函数的返回值是字符串。Hits参数和Attempts参数是这两个变量的占位符,在函数调用过程中,它们将被传递给函数。Rate函数是通用的,可与任何数字或变量一同使用,而不仅限于Wins和Spins。

调出窗体代码的Command1_Click事件过程。,在其中添加调用函数语句,如下:

Private Sub Command1_Click()
Randomize
Image1.Visible = False   '隐藏硬币图像
Label1.Caption = Int(Rnd * 10)   '得到随机
Label2.Caption = Int(Rnd * 10)
Label3.Caption = Int(Rnd * 10)   
Spins = Spins + 1
If (Label1.Caption = 7) Or (Label2.Caption = 7) _
Or (Label3.Caption = 7) Then
Image1.Visible = True
Beep       '当某个标题为7时,显示一堆硬币并响铃
Wins = Wins + 1   '记录产生7的次数。
lblWins.Caption = "Wins:" & Wins


End If
lblRate.Caption = Rate(Wins, Spins)
End Sub

其中红色部分为新加内容。

[程序演示]        [程序下载]

上例中的过程名Rate是惟一的,可以在任何模块中直接引用。

(4)子过程和函数过程的嵌套使用

例:见教材P239自测题七的第一题,将华氏温度换算为摄氏温度。

添加一个命令按钮。

代码如下:

Option Explicit
Dim temp

Sub ConvertTemp()
    temp = InputBox("请输入华氏温度。", 1)
    MsgBox "温度为 " & Celsius(temp) & " 摄氏度。"
End Sub

Function Celsius(fDegrees)
    Celsius = (fDegrees - 32) * 5 / 9  '将华氏温度换算为摄氏温度
End Function

Private Sub Command1_Click()
    Call ConvertTemp
End Sub

(5)Go Sub...Return语句

在一个过程中利用Go Sub...Return语句可以调用该子过程中的某段子程序,执行完毕后再返回。其语法规则如下:

GoSub line

line

Return

可以在过程中的任何地方使用GoSub和Return,但是GoSub和与之相应的Return语句必须放在同一个过程中。一个子程序中可以包含一个以上的Return语句,但是当碰到第一个Return语句时,程序就会返回到紧接在刚刚执行的 GoSub语句之后的语句继续执行。

注意:不能使用 Go Sub...Return来进入或退出Sub过程。

下面的示例使用gosub来调用子过程里的一段子程序。Return语句则将执行返回到Gosub的下一个语句。

sub gosubdemo()

    dim num
    num=inputbox("enter a positive number to be divided by 2.") '请求用户输入一个数
    if num>0 then Gosub MyRoutine
        debug.print num
        exit sub
    MyRoutine:
        num=num/2
        Return   '将控制返回Gosub之后的语句

End Sub

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。