第六章

过程:通过前面章节的学习,可以利用Visual Basic 6.0提供的内部函数和事件过程编写一些简单的程序。但在实际应用中,会遇到大量复杂的问题,仅用有限的内部函数和事件过程是不能满足编程需要的。为此,Visual Basic 6.0允许用户自己定义过程,以实现复杂的程序功能。本章主要介绍函数过程的定义和调用、子过程的定义和调用、参数传递、可选参数与可变参数、对象参数、变量和过程的作用域。      本章学习目标:      (1)掌握过程的基本概念以及过程的分类;      (2)掌握函数过程与子过程的定义与调用方法;      (3)掌握函数过程与子过程的区别;      (4)掌握参数传递的方式并掌握值传递和地址传递的区别;      (5)掌握可选参数与可变参数的应用。      (6)掌握对象参数的使用;      (7)掌握变量和过程的作用域及综合应用;      (8)掌握动态变量与静态变量的区别以及其应用。      重点:函数过程与子过程的定义与调用,参数传递的方式,对象参数的使用,变量和过程的作用域及综合应用。      难点:确定自定义的过程是子过程还是函数过程,过程中形参的个数和传递方式的确定,实参与形参结合时对应问题,变量和过程的作用域及综合应用,动态变量与静态变量的应用。      学习方法:      先看课本,再看相关知识点的微课。在看微课时,看不懂的同学可以反复看,直到看懂为止,实在看不懂的,把不懂的问题记录下来,在讨论群里讨论得到解决,或者反映给助教,助教反映给教师,教师在课堂上统一讲解面上问题。在学习的过程中要养成记笔记的好习惯。所有的同学都要在看完书和微课后,做网站里布置的作业以验证是否掌握所学知识,最后提交作业。      参考教材:      (1)《面向对象程序设计基础——Visual Basic》,清华大学出版社,第6章 过程。      (2)《全国计算机等级考试二级教程——Visual Basic语言程序设计(2018年版)》,高等教育出版社。      (3)《全国计算机等级考试教程二级Visual Basic》,人民邮电出版社。6.1过程的基本概念:掌握过程、通用过程的概念,掌握过程的定义方法与定义位置
6.2Function过程的定义与调用:掌握函数过程的定义的格式及注意的问题,掌握函数过程的调用方法。
6.3Sub过程定义与调用:掌握子过程的定义格式及注意的问题,掌握子过程的调用方法,掌握函数过程与子过程的区别及注意的问题。
6.4参数传递:掌握参数传递的方式并掌握值传递和地址传递的区别。
6.5可选参数与可变参数:掌握定义可选参数过程的格式,掌握定义可变参数过程的格式。
6.6窗体参数:掌握什么情况下使用窗体参数定义通用过程,并会灵活应用。
6.7控件参数:掌握什么情况下使用控件参数定义通用过程,并会灵活应用。掌握TypeOf语句的格式以及其应用。
6.8过程和变量的作用域:掌握应用程序的结构,变量和过程的作用域及综合应用。
6.9变量的生存期:掌握动态变量与静态变量的区别以及其应用。
[单选题]下面叙述中正确的是________

选项:[窗体模块中包含本窗体的所有事件过程,标准模块中包含本标准模块的所有事件过程, 一个工程中只能有一个标准模块, 一个窗体是一个窗体模块, 一个工程由一个窗体模块和一个标准模块组成]
[单选题]以下叙述中错误的是________

选项:[标准模块文件的扩展名是 .bas ,工程文件的扩展名是 .vbp, 打开一个工程文件时,系统自动装入与该工程有关的窗体文件, 一个工程中可以包含一个或多个窗体,但不能包含其他模块, 保存程序时,应分别保存窗体文件和工程文件]
[单选题]下列关于过程叙述不正确的是__________

选项:[过程的传址调用是将实参在内存的地址传递给形参, 过程的传值调用参数是单向传递的,过程的传址调用参数是双向传递的, 过程的传值调用是将实参的具体值传递给形参, 无论过程传值调用还是过程传址调用,参数传递都是双向的]
[单选题]

如果在窗体模块中所有程序代码的前面有语句:Dim x  ,则x________

选项:[窗体级变量, 静态变量
, 局部变量
, 全局变量]
[单选题]要想从子过程调用后返回两个结果,下面子过程语句说明合法的是__________

选项:[Sub f1( n%,ByVal m%), Sub f1(ByVal n%,m%), Sub f1(n%,m%), Sub f2(ByVal n%,ByVal m%)]
[单选题]根据变量的作用域,可以将变量分为3类,分别为__________

选项:[局部变量、模块变量和标准变量, 局部变量、模块变量和全局变量
, 局部变量、标准变量和全局变量
, 局部变量、模块变量和窗体变量
]
[单选题]

以下关于VB文件的叙述中,错误的是________

选项:[标准模块文件不属于任何一个窗体, 一个工程可以有多个窗体文件, 一个工程只有一个工程文件, 工程文件的扩展名为.frm]
[单选题]下列关于标准模块的叙述中,错误的是________

选项:[标准模块中的Public过程可以被不同窗体的程序调用, 标准模块是一个纯代码文件, 标准模块可以在某个窗体中建立, 标准模块文件的扩展名为.bac]
[单选题]

在过程中定义的变量,若希望在离开该过程后,还能保存过程中局部变量的值,则应使用__________关键字在过程中定义局部变量。


选项:[Public
, Static, Private, Dim]
[单选题]

已知过程定义的首行为Sub sum(a As Integer, b As Integer)则下面过程调用语句中正确的是________

选项:[sum(x , y), sum x; y, sum x, y, Call sum(x ; y)]
[单选题]下面有关标准模块的叙述中,错误的是________

选项:[标准模块中的Private过程不能被工程中的其他模块调用, 标准模块中的全局变量可以被工程中的任何模块引用, 标准模块的文件扩展名为.bas, 标准模块不完全由代码组成,还可以有窗体]
[单选题]

有如下函数过程:

 Function gys(ByVal X As Integer, ByVal Y As Integer) As Integer

   Do While Y <> 0

reminder = X Mod Y

X = Y

Y = reminder

Loop

gys = X

End Function

以下调用函数的事件过程,该程序的运行结果是__________

Private Sub Command7_Click()

Dim a As Integer

Dim b As Integer

a = 100

b = 25

X = gys(a, b)

Print X

End Sub


选项:[100
, 0, 25
, 50
]
[单选题]以下关于VB文件的叙述中,正确的是________

选项:[类模块文件的扩展名为.bas
, 标准模块文件的扩展名是.frm, VB应用程序可以被编译为.exe文件, 一个工程文件只能含有一个标准模块文件]
[单选题]下列定义为abc的过程定义语句中正确的是__________

选项:[Private Sub abc(x,y) As Integer
, Sub abc(x,y)
, Dim Sub abc(x,y), Public abc(x,y)]
[单选题]如果将数组名作为函数调用的实参,则传递给形参的是________

选项:[数组全部元素的值, 数组最后一个元素的值, 数组第一个元素的值, 数组第一个元素的地址]
[单选题]以下叙述中错误的是________

选项:[标准模块文件是纯代码文件, 在标准模块中不能定义过程, 标准模块文件的扩展名是.bas, 在标准模块中声明的全局变量可以在整个工程中使用
]
[单选题]以下叙述中错误的是________

选项:[窗体和标准模块需要分别保存为不同类型的磁盘文件, 在一个窗体文件中用Private定义的通用过程可以被其他窗体调用, 一个工程中可以包含多个窗体文件, 全局变量可以在标准模块中定义]
[单选题]在标准模块中用Public关键字定义的变量,其作用域为________

选项:[整个工程, 所有窗体, 本模块所有过程, 所有标准模块]
[单选题]

设有以下程序片段

Public x%

Private y$

Private Sub Command1_Click()

    Dim a

    ……

End Sub

 

Private Sub Command2_Click()

    Static b

    ……

End Sub

Command1_Click过程中无法访问的变量是________


选项:[y, x, a, b]
[单选题]

设有如下程序代码

Dim a%

Public b%, c%

Private Sub Form_Click()

    Dim b%

    Print a; b; c

End Sub

Private Sub Form_Load()

    Dim a%

    a = 5

    b = 8

    c = 10

End Sub

运行程序时单击窗体则在窗体上显示的是________


选项:[5  8  10, 5  0  10, 0  8  10, 0  0  10]
[单选题]以下叙述中错误的是________

选项:[一个工程中可以包含一个或多个窗体,但不能包含其他模块, 保存程序时,应分别保存窗体文件和工程文件, 标准模块文件的扩展名是 .bas ,工程文件的扩展名是 .vbp, 打开一个工程文件时,系统自动装入与该工程有关的窗体文件]
[单选题]

在窗体上画一个名称为Command1的命令按钮和一个名称为Text1的文本框,然后编写以下程序代码:

Private Sub sub1(ByRef d(), ByRef m1 As Integer)

  Dim i As Integer

  m1 = d(LBound(d))

  For i = LBound(d) + 1 To UBound(d)

    If m1 < d(i) Then m1 = d(i)

  Next i

End Sub

Private Sub Command1_Click()

  Dim n1 As Integer

  n1=-1

  Dim data()

  data = Array(10, 20, -20, 50, 15, -5)

  Call sub1(data(), n1)

  Text1.Text = n1

End Sub

程序运行过程中当单击命令按钮Command1则在文本框Text1中显示的结果为________


选项:[-5, -1, 0, 50]
[单选题]

要求函数的功能是:从参数str字符串中删除所有参数ch所指定的字符,返回实际删除字符的个数,删除后的字符串仍在str中,为此某人编写了函数DelChar如下:

Function DelChar(str As String, ch As String) As Integer

    Dim n%, st$, c$

    st = ""

    n = 0

    For k = 1 To Len(str)

        c = Mid(str, k, 1)

        If c = ch Then

            st = st & c

        Else

            n = n + 1

        End If

    Next k

str = st

    DelChar = n

End Function

并用下面的Command1_Click()过程观察函数调用结果

Private Sub Command1_Click()

    ch$ = Text1.Text

    Print DelChar(ch, "x"), ch

End Sub

发现结果有错误程序代码需要修改以下正确的修改方案是________

选项:[删掉语句str = st, 把语句DelChar = n 改为 DelChar = st, 把语句Print DelChar(ch, 'x'), ch改为Print DelChar(ch, 'x') :Print ch, 把语句If  c = ch  Then 改为If  c <> ch  Then]
[单选题]下面关于标准模块的叙述中错误的是________

选项:[标准模块中可以声明全局变量, 一个工程中可以含有多个标准模块
, 标准模块中可以包含一些Public过程
, 标准模块中可以包含一个Sub Main过程,但此过程不能被设置为启动过程]
[单选题]以下叙述中错误的是________

选项:[MsgBox函数的返回值与在对话框中所单击的按钮有关,为一整数, Visual Basic应用程序只能以解释方式执行, 一个Visual Basic应用程序可以包含一个或多个工程, 一个Sub过程内不能嵌套定义另一个Sub过程]
[单选题]

编写如下程序代码

Private Sub Command1_Click()

   Const n = 5

   Dim arrx(n) As Integer

   For i = 1 To 5

      arrx(i) = i * i

   Next i

   Call swap(arrx(), n)

   For i = 1 To n

      Print arrx(i);

   Next

End Sub

 

Public Sub swap(a() As Integer, k As Integer)

   For i = 1 To k / 2

      t = a(i)

      a(i) = a(k - i + 1)

      a(k - i + 1) = t

   Next

End Sub

程序运行后单击命令按钮Command1输出结果为________

选项:[1   4   9   4   1, 1   4   9   16   25
, 4   1   9   25   16
, 25   16   9   4   1
]
[单选题]

如果窗体模块A中有一个过程

Private Sub Proc( )

    ……

End Sub

则下面叙述中错误的是________


选项:[在标准模块中不能调用此过程, 在窗体模块B中可以调用此过程, 窗体模块A中任何其他过程都可以调用此过程, 在窗体模块B中可以有与此相同名称的过程]
[单选题]

有以下程序代码

Private Sub Command1_Click ()

    Print fun(10), fun(5)

End Sub

Private Function fun(n As Integer) As Integer

    Static t

    For k = 1 To n

        t = t + k

    Next k

    fun = t

End Function

执行Command1_Click过程产生的输出是________

选项:[15            55, 55            15, 15            70, 55            70]
[单选题]

如果在过程A中用语句Call proc(a, b) 调用下面的过程

Private Sub proc(b As Integer, ByVal a As Integer)

    a = a + 1

    b = b * 2

End Sub

则调用结束后的结果是________


选项:[过程A中变量a的值变为原有值的2倍,b的值等于原有值加1, 过程A中变量a的值变为原有值的2倍, 过程A中变量b的值变为原有值的2倍,a的值等于原有值加1, 过程A中变量b的值变为原有值的2倍]
[单选题]以下关于VB文件的叙述中,正确的是________

选项:[标准模块文件的扩展名是.frm, 类模块文件的扩展名为.bas, 一个.vbp文件只能含有一个标准模块文件, 一个.vbg文件中可以包括多个.vbp文件]
[单选题]定义过程的格式中,Static关键字的作用是指定过程中的局部变量在内存中的存储方式。若使用了Static关键字,则__________

选项:[每次调用此过程时,该过程中的局部变量的值保持在上一次调用后的值
, 定义了该过程中定义的局部变量为“自动”变量, 在本过程中使用到的,在其他过程中定义的变量也为Static型, 每次调用此过程,该过程中的局部变量都会被重新初始化]

温馨提示支付 ¥3.00 元后可查看付费内容,请先翻页预览!
点赞(0) dxwkbang
返回
顶部