VisualBasic程序设计第三章的学习与自测

一、本章知识点分析

1.单窗体与多窗体

  单窗体:一个应用程序中只包含一个窗体。
  多窗体:一个应用程序中包含多个窗体,它们相互独立地显示在屏幕上。
  在多窗体程序中,每个窗体可以有自己的界面和程序代码,用以完成不同的操作。程序代码是针对每个窗体而编写的,因此多窗体与单窗体程序设计中的代码类似,但应注意各个窗体之间的相互关系。在多窗体程序中,经常要用到关键字Me,它代表程序代码所在的窗体。

2. 多窗体应用程序设计的步骤

多窗体应用程序设计的一般步骤是
(1)添加应用程序所需的所有的窗体、模块。
(2)设置起动窗体,以及多窗体间的调用关系。
(3)按单窗体设计方法设计每个窗体。

3. 设置启动窗体

每个应用程序都有开始执行的入口,应用程序开始运行时首先出现的窗体称为启动窗体。在默认情况下,创建的第一个窗体为启动窗体。如果想在应用程序启动时首先启动别的窗体,那么就得修改启动窗体的设置。方法是:在“工程“菜单中单击“工程属性”命令,在打开的“工程属性”对话框中,单击“通用”选项卡,再单击“启动对象”栏右端的箭头,在其中选择作为启动窗体的名字,然后单击“确定”按钮,即可把所选择的窗体设置为启动窗体。

4.窗体的装载和卸载

(1)Load语句
Load(装载)语句用于把窗体或其他对象装入内存,不显示该窗体。
以下语句是等效的
Load Form2等效于Form2.Visible=False
(2)Unload语句
该语句可以把窗体或其他对象从内存中卸载,在单窗体和多窗体应用程序中均会使用这条语句,并且在卸载窗体时将会触发Unload事件。对单窗体应用程序而言,以下语句是等效的:
Unload Form1等效于End
如果是在Form1中执行上述Unload语句,则可以直接写成:
Unload Me

5.模态和非模态显示窗体

模态显示:在模态窗体显示状态下,只有关闭该窗体,用户才能与其他窗体进行交互,继续操作应用程序的其他部分。通常显示重要信息的窗体都是以模态方式显示的,比如“计算器”应用程序中采用下列方法显示frmAbout窗体:
frmAbout.Show 1
非模态显示:非模态窗体也称常态窗体,用户在跟此窗体进行交互时,还可以切换到其他窗体。一般情况下应用程序运行的第一个窗体(主窗体)均就是以非模态方式显示的,比如:
Form2.Show
或者写成:
Form2.Show 0

6.菜单的主要属性和事件

利用菜单编辑器(如下图所示)可以设计菜单。在VB应用程序中,菜单是一个控件,与其他控件一样,它具有定义其外观和行为的属性,在设计或运行时可以进行设置或调用。
菜单编辑器
菜单控件的主要属性
菜单控件的事件:菜单控件只有一个事件,即Click事件。
菜单有下拉式菜单和弹出式菜单,在创建弹出式菜单时,可以将菜单的“可见”属性设置为False,这样在窗口顶部菜单栏中将不显示该菜单,但仍然可以使用PopupMenu方法显示弹出菜单。
通过实验3应熟练掌握这两类菜单的创建方法。并通过创建工具栏掌握ToolBar、ImageList和StatusBar控件的用法。

7.复选框(Check)和单选按钮(Option)控件

复选框和单选按钮主要用于程序运行过程中的状态选择。复选框用“√”表示选中,可以同时有多个复选框备选中。单选按钮一般用框架来分组,一组单选按钮中只能有一个被选中。
单选框和复选框的主要属性
单选纽和复选框控件的主要事件是Click事件,常用方法有Setfocus,Refresh,Move。

8.列表框和组合框控件

列表框和组合框控件的常用属性
列表框和组合框控件的常用方法:
AddItem方法:用于将项目添加到列表框或组合框控件。
Clear方法:用来删除列表框和组合框中的所有项目。
RemoveItem:用于从列表框或组合框中删除一项。
列表框和组合框控件的常用事件:Click,Dbclick

9.框架( Frame)控件

框架控件主要用于对窗体上的控件进行分组,要先画控件再画框架里边的控件才能实现控件分组。一般不对框架进行编程。
框架控件的主要属性为Enabled(生效),其功能是设置框架是否生效,一般都为True,如果为False,则框架离得所有对象都会被屏蔽而变灰色。

10.通用对话框控件

通用对话框控件CommonDialog是一组标准对话框,是一种ActiveX控件。该控件添加到工具的方法是:“工程”→“部件”→选定Microsoft Common Dialog Control6.0。
通用对话框提供六种形式的对话框:“打开文件”对话框,“保存文件”对话框,“颜色”对话框,“字体”对话框,“打印”对话框,“帮助”对话框,通过设置Action属性值或调用Show方法来建立这几种不同类型的对话框。

11.变量的声明

变量是指在程序运行期间其值可以变化的量。变量具有名字和数据类型两个特性。变量的名字用于在程序中标识变量和使用变量的值,数据类型则标识变量中能保存哪种类型的数据。一个变量在一个时刻只能存放一个值,当新的数据存放到变量中时,原来的数据就不再存在。
变量声明的方法有显式声明和隐性声明,在编写代码时最好对每个变量都进行显式声明。任何变量在被声明后均会有一个初始值。一般情况下,数值型变量的初始值为0,字符串变量初始值为空字符串,即”“,变体型变量初始值为空值,即Null值。布尔型的初值为假,即False。当空值的变体变量在表达式中参加运算时,系统会根据实际情况将其解释为0或空字符串。

12.变量的作用域和变量的生命周期

变量的作用域是指变量的有效作用期间,在有效区间内,变量能够被程序访问,其值能够被程序调用;变量的生命周期是指能够保存变量值的时间段。二者都可以从过程级变量、窗体级和模块级变量、全局变量来理解并加以区分。
过程级变量也称局部变量,是指在过程内部声明的变量,其作用域是过程内部,只有在该过程中的代码才能访问这个变量,不能应用于程序的其它部分,其生命周期是指该变量在过程执行期间才存在,当过程执行结束时,过程级变量的值不再保留,它所占的内存空间也被释放,直到下一次调用该过程时,才重新给该变量分配存储空间,赋予新值,这时该变量的另一个生命周期又开始了。该变量在过程中用Dim关键字来声明。
应当特别注意的是静态变量属于过程级变量,尽管在过程外不能访问它,但静态变量在整个程序运行期却一直存在着,即使过程结束,变量的值也仍然保留着。
窗体级和模块级变量是指在窗体或模块内部声明的变量,其作用域是整个窗体或模块。只有在该窗体或模块中的代码才能访问这个变量,离开这个模块或窗体,该变量就不起作用了,例如窗体Form1模块中的变量不能用于窗体Form2模块。该变量的生命周期是整个窗体或模块,在窗体模块代码编辑器的顶部用Private关键字声明。
全局变量也称模块公有变量,是指在整个应用程序都可以使用的变量,该变量在任何时段都存在着,是一种无时无刻不在的变量,在标准模块代码编辑器的顶部用 Public关键字声明。

13.数据类型
VB6.0定义了11种数据类型,它们是整型、长整型、单精度浮点型、双精度浮点型、货币型、字节型、字符串型、布尔型、日期型、变体型和对象型。
14.运算符和表达式

VB中有四种类型的运算符,即算术运算符、关系运算符、逻辑运行符和字符串连接符。
(1)算术运算符和算术表达式
算术运算符优先级和算术表达式
(2)关系运算符和关系表达式
关系运算符用于对两个表达式的值进行比较,比较的结果为布尔值True (真)或False(假)。
关系运算符和关系表达式
(3)逻辑运算符和逻辑表达式
逻辑运算符两边的表达式要求为布尔值。逻辑表达式的结果值仍为布尔值。
逻辑运算符和逻辑表达式
(4) 字符串连接符
字符串运算符有两个:“&”、“+”,其作用都是将两个字符串连接起来,合并成一个新的字符串。
“&”会自动将非字符串类型的数据转换成字符串后再进行连接,而“+”则不能自动转换。例如:
“Hello”&”World” 结果为” Hello World”
“Check”&123 结果为” Check123”
“Check”+123 错误

Visual Basic表达式中运算符的优先级是:1.算术运算符2.关系运算符3.逻辑运算符
注意:当运算符优先级相同时,按照它们从左到右出现的顺序进行计算。可以用括号改变优先顺序,括号内的运算总是优先于括号外的运算。但在括号之内,运算符的优先顺序不变。

15.常用函数

(1)数值型函数
常用的数值型函数
{2}字符串函数
字符串函数
{3}日期函数
日期函数

16.流程控件语句
(1) 顺序结构

顺序结构是最简单和最基本的结构,当执行顺序结构时,将按照语句在程序中的先后顺序依次执行。其特点是流程直观易读,结构简明。通常将赋值语句、注释语句、Print方法、InputBox函数、MsgBox函数等归纳在顺序结构中。

(2)选择结构

第一种选择结构:If…Then…Else语句
根据功能不同,If…Then…Else语句又有以下5种形式:
① If…Then语句
格式 :

    If  条件表达式  Then  单语句

功能:如果条件表达式为真(True)时,程序执行后面的单语句。例如:
a = 40
b = 50
If a = b Then Print “相等”
此例中,a不等于b,因此不执行Print “相等” 语句。
② If…Then…End If语句(单分之结构)
格式 :
If 条件表达式 Then
一组语句
End If
功能:如果条件表达式为真(True)时,程序执行Then和End If之间的一组语句。
注意:一组语句是由多个语句组成,但允许只有一个语句的情况,End If语句不能少。
例如:下面的两组语句是等价的

If a = b Then Print "相等" 

If a = b Then
Print "相等" 
End If

③ If…Then…Else…End If语句(双分之结构)
格式

If  条件表达式  Then  
         第一组语句
     Else
      第二组语句   
   End If当条件表达式为真,则执行第一组语句,否则执行第二组语句。

例如:

  Private Sub Form_Load()
    Dim a As Integer, b As Integer
    a = 40
    b = 50
    If a > b Then
       Print "大数是:"; a
    Else
       Print "大数是:"; b
    End If
End Sub

④ If…Then…Else…End If语句(多分之结构,If语句的嵌套形式之一)
格式 :

 If 条件表达式1 Then
      If 条件表达式2 then
          语句块1
      Else 
          语句块2
      End If
Else
     If 条件表达式3 Then
         语句块3
     Else
        语句块4
     End If
End If

功能:条件表达式1为真时,判断条件表达式2,否则判断条件表达式3。如果条件表达式2为真则执行语句块1,否则执行语句块2。
⑤ If…Then…ElseIf…then…Else…End If语句(多分之结构,If语句的嵌套形式之二)
格式:

If 条件表达式1  Then
    语句块1
ElseIf 条件表达式2  Then
    语句块2
ElseIf 条件表达式3 ThenElseIf 条件表达式n Then
      语句块n
Else 
     语句块n+1
End If

功能:如果条件表达式1为真则执行语句块1,否则判断条件表达式2,如果条件表达式2为真则执行语句块2,否则判断条件表达式3,依次类推。
注意:该条件判断语句只能执行一个语句组,即有一个条件表达式为真后,不在进行其它的判断,而直接跳出整个条件判断语句,执行End If后面的程序。例如:

Private Sub Form_Click()
 Dim a As Integer, b As Integer
    a = 40
    b = 50
    If a = b Then
       Print " 相等"
    ElseIf a > b Then
        Print " a > b"
    Else
        Print "a < b"
    End If
End Sub

第二种选择结构:Select Case
当条件表达式只有一个变量时,采用Select Case语句会比If…Then…Else语句更简
洁、易读,程序执行效率更快。
格式:

Select Case 条件表达式
   Case  表达式 1
         语句组1
Case 表达式 2
         语句组2
   ……
   Case else
      End Select

功能:先计算条件表达式,然后将计算结果与Case后面的表达式1、表达式2 …..表达
式n进行比较,相等时,执行对应的语句组。

(2)循环语句

第一种循环语句:For…Next语句
当循环次数已知时,使用此循环。
格式:
For 变量 = 初值 to 终值 [Step 步长]
语句组
Next 变量
例如:

For a = 1 To 5
   b = a + 1
   Print "b", b
Next a

该循环执行过程如下:
(1)当程序第一次运行到For语句时,执行a=1,并判断a<=5是否成立。若不成立,则结束循环,执行Next a后面的语句;若成立,则执行b=a+1和Print “b”,b这两个语句。
(2)当程序运行到Next a语句时,程序做两件事情。第一是按步长累加,即a=a+1;第二是将程序转移到For语句。
(3)重复循环,直到a=6,不在满足a<=5的条件,就结束循环。
第二种循环语句:Do…Loop语句
当循环次数无法预知时,可用Do…Loop循环,一旦达到某个条件时,结束循环。Do…Loop有3种最常用的语法格式。
格式1:

Do While  条件表达式
        语句组(循环体)
      Loop

功能:先判断条件表达式,当条件表达式为真时,执行语句组,否则结束循环。
格式2:

Do
        语句组(循环体)
Loop While   条件表达式

功能:先执行语句组,再判断语句组的真假,如果为真,继续循环,如果为假,结束循环。
格式3:

Do
        语句组(循环体)
Loop Until   条件表达式

功能:先执行语句组,再判断语句组的真假,如果为假,继续循环,如果为真,结束循环。
(3)循环退出语句
循环退出语句是不用满足循环结束条件,而强制退出循环的一种语句。
在Do While循环中,可以加入Exit Do语句来退出循环,例如:

Do While  条件表达式
        语句组1
        Exit  Do
        语句组2
      Loop

在执行完语句组1后,就会强行退出循环。
同样用Exit For可以在For…Next中强行退出循环,格式如下:

For  变量 = 初值 to 终值 [Step 步长]
     语句组 1
Exit  For
         语句组2
Next 变量

17.工程化思想及编程风格
(1)命名规则
VB应用程序中涉及了大量的常量、变量、窗体、控件对象、过程和函数等,应按一定的规则对它们进行命名,首先应保证命名的正确性,即:
1)必须以字母开头,后面可以跟数字和下划线。在同一作用域内的常量、变量、控件等的名称应惟一。
2)长度不能超过225个字符,其中控件、窗体、类和模块的名字不能超过40个字符。
3)不可以包含嵌入的英文句号或类型声明字符(%、&、@、$等),也不能以VB保留关键字作为变量名。
(2)编程风格
1)注释:在程序中加入注释是一种良好的习惯。注释不仅仅是对程序的解释,有时它对于程序的调试也非常有用,譬如说可以利用注释屏蔽一条语句以观察变化,发现问题和错误。注释语句将是我们在编程里最经常用到的语句之一。在VB里,注释语句有两种,一种是用“Rem”关键字,这跟DOS里的批处理文件的用法一样,还有一种是利用单引号“’”,它们的效果相同。
2)多重语句:通常每写完一个语句,就要按回车键以示结束,每个语句单独占一行,但VB允许在一行上有几个短句,形成多重语句,但各语句之间要用冒号“:”隔开。
3)长语句的分行:VB的语句是必须写在一行里的,其中没有C语言中的“;”分隔语句。VB中一行最多可存放1023个字符,但当一个语句太长影响查看时,可以使用空格和一个“_”符号,把该语句分成若干行来存放。
4)语句缩进:当使用判断结构、循环结构时,采用缩进式排版方式能增加代码的可读性。一种简单易用的方法是使用Tab制表符键进行语句缩进。

二、自测题

(一)单项选择题

1.窗体的Load事件的触发时机是( )。
A.用户单击窗体时 B.窗体被加载时
C.窗体显示之后 D.窗体被卸载时
2.如果对象的名称为Mytext,而且对象有一个属性Text,那么在代码中引用该属性的正确格式是( )。
A.Text.Mytext B.Mytext.Text
C.Mytext.(Text) D.Mytext*Text
3.将数据项“China”添加到列表框List1中成为第一项,应使用的语句是( )。
A.List1.AddItem”China”,0 B.List1.AddItem”China”,1
C.List1.AddItem”China”, D.List1.AddItem”1,China”
4.关于语句行,下列说法正确的是( )。
A.一行只能写一条语句 B.长度不能超过255个字符
C.每行的首字符必须大写 D.一条语句可以分多行书写
5.以下可以作为Visual Basic变量名的是( )。
A.SIN B.CO1 C.COS(X) D.X(-1)
6.“x是小于80的非负数”,用VB表达式表示正确的是( )。
A.0x80 B.0=x80 C.0=xAnd x80 D.0=xOrx80
7.Dim I As Integer,则运行时变量I的初始值是(  )。
A.0 B.1
C.-1 D.空值
8.表达式7+10 Mod 3*2+2( )。
A.1 B.7 C.6 D.13
9.要退出For…Next循环,应使用的语句是( )。
A.Exit B.Stop Loop C.Exit For D.Continue
10. 赋值语句:a = 123 + Mid(“123456”,3,2)执行后,a变量中的值是( )。
A.123 B.34
C.12334 D.157 (123 + 34)
11.下列关于变量的说法不正确的是( )。
A.局部变量在声明它的过程执行完毕后就被释放了
B.局部变量的作用域仅限于声明它的过程
C.静态局部变量是在过程中用Static语句声明的
D.局部变量是指那些在过程中用Dim语句或Static语句声明的变量
12.要清除List列表框控件中的所有项目,可采用的方法是( )
A.Clear B.Erase
C.Click D.Delete
13.如果希望以模态方式显示窗体Form1,下列正确的语句是( )
A.Form1.Show 0
B.Form1.Show
C.Form1.Show 1
D.以下都不正确
14.在过程中定义的变量,若希望在离开该过程后,还能保存过程中局部变量的值,则应使用( )关键字在过程中定义局部变量。
A.Dim B.Public
C.Private D.Static
15.引用列表框(List1)最后一个数据项应使用的语句是( )
A.List1.List (List1.ListCount) B.List1.List (List1.ListCount-1)
C.List1.List (ListCount) D.List1.List (ListCount-1)
16.要使窗体在运行时不可改变窗体的大小并没有最大化和最小化按钮,通过设置可达到此要求的属性是(  )
A.MaxButton B.MinButton
C.Width D. BorderStyle
17.以下叙述中错误的是( )。
A.一个工程中可以包含多个窗体文件
B.在一个窗体文件中用Private定义的通用过程能被其它窗体调用
C.在设计Visual Basic程序时,窗体、标准模块、类模块等需要分别保存为不同类型的文件  
D.全局变量必须在标准模块中定义
18.在Visual Basic中,变量的默认类型是( )。
A.Integer B.Double
C.Variant   D.Currency
19.要退出Do…Loop循环,可使用的语句是( )。
A.Exit B.Exit For C.End Do D.Exit Do
20.以下叙述中错误的是( )。
A.一个工程中只能有一个Sub Main过程
B.窗体的Show方法的作用是将指定的窗体载入内存并显示该窗体
C.窗体的Hide方法和Unload方法的作用完全相同
D.若工程文件中有多个窗体,可以根据需要指定一个窗体为启动窗体

(二)填空题

1.表达式8+13 Mod 2*4+3的值是 。
2.全局变量在整个应用程序中有效,一般在标准模块中使用 语句声明。
3.变量的声明方法有隐式和 两种,如果采用隐式声明方法,那么VB会自动将变量声明为 。
4.若已建立了Form1和Form2两个窗体,默认启动窗体为Form1。通过工程菜单的
菜单项,可将启动窗体设置为Form2。在程序中若要显示Form1窗体,则执行 语句。
5.列表框控件中最后一项的序号等于ListCount属性减 。
6.闰年的条件是:年号(Y)能被4整除,但不能被100整除;或者年号能被400整除。表示该条件的逻辑表达式是 。
7.列表框中项目的序号是从 开始的。
8.在Visual Basic语言中有三种形式的循环结构。其中,若循环的次数可以适先确定,可使用 循环;若要求先判断循环进行的条件,可使用 循环。
9.在一个语句行内写多条语句时,语句之间应该用 分隔。
10.对一个窗体对象,其最先发生的事件是 Load 事件,最后发生的事件是
Unload 事件。

(三)阅读程序题

阅读下列程序并写出程序运行结果
1.

Private Sub Form_Click()
Dim c As Integer, j As Integer, k As Integer
k = 0
c = 1
For j = 1 To 5
  If j > 3 Then
    c = c + 4
    Exit For
  Else
    k = k + 1
End If
Next j
Print c, k
End Sub
   程序运行时单击窗体后,c,k的值分别是       、       。

2.

Private Sub Form_Click()
   Dim x As Integer
   Static y As Integer
     x = x + 2
     y = y + 3
   Form1.Print "x="; x, "y="; y
End Sub

程序运行时连续单击三次窗体后,Form1上的输出结果是 。

3.

Private Sub Command1_Click()
  Dim s As Double
  Dim i As Integer
      s = 5
      i = 1
      Do While i < 9
         i = i + 2
         s = s + i
      Loop
      Text1.Text = s
 End Sub

文件框Text1的输出结果是 。

4.

Private Sub Form_Click()
 Dim I as integer,j as integer
 Dim c as integer
c=0
For i = 1 To 3
 For j=1 to 3
    c=c+1
 Next j
Next I
Print c
End Sub
程序运行时单击窗体后,c的输出结果是          。

5.

Private Sub Form_Click()
  Dim i As Integer, k As Integer, c As Integer
  For i = 1 To 5
     If i Mod 2 = 0 Then
         k = k + 2
     Else
        c = c + 2
    End If
 Next i
 Print k, c
End Sub

程序运行时单击窗体后,Form1上的输出结果是 。

答案

(一)单项选择题
1.B  2.B   3.A  4.D  5.B  6.C  7.A  8.D  9.C  10.D  11.A  12.A  13.C  14.D  15.B  16.D  17.B  18.C  19.D  20.C
(二)填空题

1.16
2.Public
3.显示,变体型(或写成Variant型)
4.工程属性 Form1.Show
5.1
6.Y MOD 4=0 And Y MOD 100<>0 OR Y MOD 400=0
7.0
第八题答案
9.冒号
10.Load Unload

(三)阅读程序题

1.
5 3
2.
x=2 y=3
x=2 y=6
x=2 y=9
3.
29
4.
9
5.
4 6

猜你喜欢

转载自blog.csdn.net/shensiback/article/details/80805848
今日推荐