2003年VB强化讲稿3

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三讲Vb的模块与过程
回顾:程序代码的组织方式:
模块(窗体模块、标准模块及类模块)
关于模块:
✧每个模块是一个文件(.frm,.bas,.cls)
✧窗体模块(.frm):窗体和控件的属性、事件、方法;窗体的通用过程,模块级变
量、常量等,称为窗体模块。

✧标准模块(.bas):
没有界面设计,只有代码。

存放各窗体公用的全局变量,常量、过程。

✧一个标准模块可属于多个工程文件;一个工程可以有多个标准过程。

✧一个应用程序的组成:
一个或多个窗体模块;一个或多个标准模块
可以指定启动对象:某个窗体或某个标准模块中的SUB MAIN()过程;
✧所以:一个应用程序至少包含:一个窗体,或者一个有MAIN()的标准过程
一、定义与调用;
1、过程的种类P157
(1)SUB:事件过程,通用过程(除了事件过程以外的)
(2)Function:函数
2、过程(SUB)与函数(Function)的区别(定义与调用)
3、过程与变量一样,有Public与Private、Static属性
二、在模块与过程的概念下讨论变量的作用域(回顾变量定义两个要素)
1、局部变量,模块变量,全局变量
局部变量(过程变量):
过程内部Dim Static,只在本过程内有效。

模块变量:(窗体模块,标准模块)
在“通用”声明,Dim Private,在本模块有效;其他模块无效 全局变量:
在“通用”声明,Public在本模块有效;
其他模块也有效(加前缀名)注意:
在过程模块中不能用:Private,Public声明变量
在窗体、标准模块中不能用stadic声明变量
不能在窗体模块中声明 Public 数组,不能声明Public Const
不能在窗体模块中声明全局定长字符串变量
例题:在窗体模块的通用声明处有如下语句,会产生错误的语句是________。

①Const A As Integer = 25 ②Public St As String *8
③ReDim B(3) As Integer ④Dim Const X As Integer = 10
A.①②B.①③C.①②③D.②③④
例题:一个可执行的Visual Basic的应用程序至少要包括一个。

A、标准模块
B、类模块
C、窗体模块
D、辅助模块
例题:在过程中可以用 22 语句定义变量。

A. Dim、Private
B. Dim、Static
C.Dim、Public
D. Dim、Static、Private 例题:在窗体模块的通用声明部分用下面的语句声明变量、数组,正确语句有 30 个。

①Public A(5) As Integer ②Public N As Integer
③Public St As String*10 ④Private b() As Integer
A. 2
B. 3
C. 4
D. 1
例题:多窗体程序由多个窗体组成。

在缺省情况下,VB在执行应用程序时,总是把________指定为启动窗体。

A、不包含任何控件的窗体
B、设计时的第一个窗体
C、命名为Frm1的窗体
D、包含控件最多的窗体
例题:在多窗体程序中,可以在标准模块或某个窗体模块的通用声明处,分别用________语句定义一个在所有窗体模块都可以引用的变量IntA。

A、Private IntA as Integer Public IntA as Integer
B、Public IntA as Integer Private IntA as Integer
C、Public IntA as Integer Public IntA as Integer
D、Private IntA as Integer Private IntA as Integer
例题:以下有关变量作用域的说法中,错误的是。

A.只有在标准模块中用Public语句说明的变量才是全局变量
B.在过程中不能用Public语句说明全局变量
C.在标准模块的通用声明处可用Private语句说明模块级变量
D.在窗体的通用声明处可用Private语句说明窗体级变量
例题:可以在中,使用语句public pubstr as string*20定义一个定长字符串。

A.窗体模块
B. 标准模块
C. 类模块
D.三者均可
例题:以下有关多个窗体和标准模块组成的应用程序设计方法的叙述中,错误的是。

A.在缺省情况下,设计时的第一个窗体被指定为启动窗体
B.通过人为设置,可指定任意窗体为启动窗体
C.通过人为设置,可指定标准模块中的main()过程为启动过程
D.通过人为设置,可指定窗体模块中的main()过程为启动过程
9.12 11:30
2、过程变量的static变量,其作用如何?
例题:若希望在离开某过程后,还能保存该过程中局部变量的值,则应使用________关键字在该过程中定义局部变量。

A、Dim
B、Private
C、Public
D、Static
例读程序: Option Explicit
Private Sub Form_Click()
Dim N As Integer
N = 2
Call Sub2(N)
Print N
Call Sub2(N)
Print N
End Sub
Private Sub Sub2(Y As Integer)
Static m As Integer
m = m + y
y = m - 1
End Sub
3、不同作用域的同名变量(作用域)
例题:若在应用程序的标准模块、窗体模块和过程Sub1的说明部分,分别用Public G as Integer、Private G as Integer和Dim G as Integer语句说明了三个同名变量G。

如果在过程Sub1中使用赋值语句G=3596,则该语句是给在________说明部分定义的变量G赋值。

A、标准模块
B、过程Sub1
C、窗体模块
D、标准模块、窗体模块和过程Sub1
例题:窗体的name属性为frm1,在窗体模块通用声明处和过程sub1中分别用“public k as integer”和“dim k as integer”声明了两个同名变量k,则过程sub1中用访问全局变量k,可采用。

A. frm1.k
B. form.k
C. form1.k
D. k
读程序例题
Public x As Integer
Sub Main()
x = 5
Form1.Show
Form1.Print x;
End Sub
'Dim y As Integer …说明语句A
Private Sub Command1_Click()
Dim y As Integer …说明语句B
y = x * 2
Print y ;
End Sub
Private Sub Command2_Click()
y = x / 2
Print y ;
End Sub
三、过程调用的数据传递:
简单变量参数、数组参数、对象参数的传递。

1、按地址传递(ByRef)省略值
2、按数值传递(Byval)
3、字符变量参数:只能不变长
4、数组参数的传递(P173):
地址传递;严格要求
如果是字符数组,则变长对变长,定长对定长,且长度可不同
练习:
例1.若在应用程序中用Private Sub Sub1(X as integer,Y as Single)定义了子程序Sub1,调用程序中的变量I、J、均为Integer型,则正确调用子程序 Sub1的Call 语句是 24 。

①. Call Sub1( I, J ) ②. Call Sub1(3.1415, I)
③. Call Sub1( 3.14, 234) ④. Call Sub1(“245”, ”231.5”)
A. ①③
B. ③④
C. ①②③
D. 无
例题:调用由语句Private Sub Convert(Y As Integer)定义的Sub过程时,以下不是按值传递的语句是_______。

A.Call Covert((X)) B.Call Convert(X*1)
C.Convert (X) D.Convert X
例题:程序中的不同模块不同过程之间,不能通过_______进行数据传递。

C?
①全局变量②窗体或模块级变量
③形参与实参结合④静态变量
A.①②④B.①②③C.②④D.④
例题:下列定义Sub过程的语句中,正确的语句是______。

Private Sub Test (St As String * 8)
Private Sub Test(Sarray( ) As String *5)
Private Sub Test(Sarray( ) As String)
Private Sub Test (St As String)
A.①②B.①④C.②③④D.①②③④
例.当Sub过程V alue形参表中存在ByV al关键字时,执行本程序,单击窗体在窗体上显示的第一行内容是(9),第二行内容是(10);若将形参表中的ByV al关键字删除,再执行本程序,单击窗体后在窗体上显示的第第一行内容是(11),第二行内容是(12)。

Private Sub value(ByV al m As Integer, ByV al n As Integer)
m = m * 2
n = n - 5
Print "m="; m, "n="; n
End Sub
Private Sub Form_Click()
Dim x As Integer, y As Integer
x = 10: y = 15
Call value(x, y)
Print "x="; x, "y="; y
End Sub
四、关于递归过程
例题:运行下面的程序,当单击窗体时,窗体上显示的内容的第一行是(5);第二行是(6)。

Private Sub Test(x As Integer)
x = x * 2 + 1
If x < 6 Then
Call Test(x)
End If
x = x * 2 + 1
Form1.Print x
End Sub
Private Sub Form_Click()
Test 2
End Sub 98#3
例题:运行下面程序,单击窗体后在窗体上显示的第一行结果是;第三行结果是。

Private Sub test(x as integer)
Dim i As integer
If x<>0 then
Call test(x-1)
For I=1 to x
Print x;
Next I
Print
End if
End sub
Private Sub Form_Click()
Test 3
End sub 99#5
例题:执行下面程序后,第一行输出结果________(11),第二行输出结果________(12)。

Option Explicit
Private Sub Form_Click()
Dim A As Integer
A = 2
Call SUB1(A)
End Sub
Private Sub SUB1(X As Integer)
X = X * 2 + 1
If X < 10 Then
Call SUB1(X)
End If
X = X * 2 + 1
Print X
End Sub 01c#5
例题:执行下面的程序,图片框第一行显示内容是_______,图片框第二行显示内容是______。

Option Explicit
Private Sub command1_click()
Dim S As String
S = "ABC"
Back S
Picture1.Print
Picture1.Print S
End Sub
Private Sub Back(St As String)
If Len(St) > 1 Then
Back (Right(St, Len(St) - 1))
End If
Picture1.Print Left(St, 1);
End Sub 02c#4
五、综合练习题:
例题:当Sub过程V alue形参表中存在ByV al关键字时,执行本程序,单击窗体在窗体上显示的第一行内容是(9),第二行内容是(10);若将形参表中的ByV al关键字删除,再执行本程序,单击窗体后在窗体上显示的第第一行内容是(11),第二行内容是(12)。

Private Sub value(ByV al m As Integer, ByV al n As Integer)
m = m * 2
n = n - 5
Print "m="; m, "n="; n
End Sub
Private Sub Form_Click()
Dim x As Integer, y As Integer
x = 10: y = 15
Call value(x, y)
Print "x="; x, "y="; y
End Sub
98#5
例题:运行下面程序,单击窗体后在窗体上显示的第二行结果是;第四行结果是。

Dim y as integer
Private Sub Form_Click()
Dim x as integer
X=1:y=1
Print “x1=”;x,”y1=”;y
Test
Print “x4=”;x,”y4=”;y
End sub
Private Sub test()
Dim x As integer
Print “x2=”;x,”y2=”;y
X=2:y=3
Print “x3=”;x,”y3=”;y
End sub
99#6
00c#5??00q#5??
例题:执行下面程序,第一行输出结果________(6),第三行输出结果________(7)。

Option Explicit
Private Sub Form_Click()
Dim N As Integer, I As Integer
N = 2
For I = 9 To 1 Step -1
Call Sub2(I, N)
Print I, N
Next I
End Sub
Private Sub Sub2(X As Integer, Y As Integer)
Static N As Integer
Dim I As Integer
For I = 3 To 1 Step -1
N = N + X
X = X - 1
Next I
Y = Y + N
End Sub 01c#3
01q#5
例题:执行下面程序,单击窗体,在立即窗口上显示的第二行是________,第二行是_______。

Option Explicit
Dim A As Integer
Private Sub form_click()
Dim B As Integer
Dim d As Integer
A = 1:
B = 2
D = fun(A, fun(A, B))
Debug.Print A, B, D
End Sub
Private Function fun(K As Integer, N As Integer) As Integer
Debug.Print K, N,
K = N + A + K
N = K + A + N
fun = K + N
Debug.Print fun
End Function 02q#4
六、布置作业
1、书面:98、99、00春、00秋、01春(除了程序填空以外的题目)
2、上机:
01秋:VB02;VB 03;VB 04;VB 05;VB 06(改错);
3、常用算法:读懂,记忆解题方法,记忆关键语句
按照数学公式编程序。

如VB03的编程;VB05的改错
字符串处理:如:VB02的改错;VB06的改错。

相关文档
最新文档