程序设计基础-Visual Basic(2019秋)

沈阳师范大学 刘立群

目录

  • 认识 Visual Basic
    • ● 认识 Visual Basic
    • ● 对象的属性、事件和方法
    • ● 控件的容器-窗体
    • ● 文本编辑工具-文本框
    • ● 命令按钮和标签
  • 程序设计基础
    • ● 语句和语法规则
    • ● 数据类型和常量变量
    • ● 运算符与表达式
    • ● 常用内部函数
    • ● 输入与输出
  • 基本控制结构和算法
    • ● 程序结构与算法
    • ● 选择结构的语句实现
    • ● 循环结构的语句实现
    • ● 穷举和递推问题求解
    • ● 嵌套循环解百钱百鸡问题
    • ● 星形矩阵的显示问题
  • 常用标准控件
    • ● 选择控件和滚动条--设置文字格式
    • ● 列表框及组合框—购票系统
    • ● 计时器与图片控件—自动变换的交通灯
    • ● 图形操作—小球运动
  • 数组和过程
    • ● 数组的定义与一维数组的应用
    • ● 二维数组
    • ● 控件数组
    • ● 自定义过程
    • ● 参数传递
    • ● 变量的作用域
  • 键盘鼠标事件与菜单设计
    • ● 鼠标键盘事件--小鸡吃虫游戏
    • ● 菜单程序设计--控制移动字幕
  • 通用对话框与文件操作
    • ● 通用对话框与文件操作
    • ● 文件操作--打开保存数据实例
变量的作用域

1局部变量

在事件过程或通用过程中,用关键字Dim Static声明的变量,或隐式声明的变量就是局部变量。局部变量的作用范围是所定义的过程内部。

【例1】局部变量举例,如图1所示。

 

Command1_Click()Command2_Click()事件过程中分别声明的两个变量xy都是局部变量,每个变量只在相应过程内部有效,若在Comman2_Click()中使用变量x,则系统提示出错,如图1所示。

【例2】有如下一段程序,应用变量n记录单击窗体的次数。

Private Sub Form_Click()

    Dim n As Integer

    n = n + 1

    Print "已单击次数:"; n; ""

End Sub

程序运行多次后单击窗体的输出如图2所示,结果总是“已单击次数1次”,因为变量nDim声明为动态变量,每次单击窗体时变量n都重新初始化为0,因此输出结果总是“1次”。若想实现统计单击窗体次数,应将Dim n As Integer改为Static n As Integer,即将n声明为静态变量,保留上次操作的结果。

 

 

 

DimStatic的区别:用 Static 声明的局部变量的值一直存在,这种变量称为静态变量,而用Dim声明的局部变量的值只在过程执行期间才存在,过程执行完毕,变量的值就被释放。也就是说,当过程再次被执行时,Static定义的变量值为上一次运行的结果,而Dim定义的变量值为初始值。

【例3】测试DimStatic的区别。

Private Sub Command1_Click()

Dim x As Integer

Static y As Single

x = x + 2

y = y + 2

Print “x=”;x,”y=”;y

End Sub

每单击一次命令按钮x的值都是初始值02y的值却是上一次运行结果加2如图3所示。这就是DimStatic的区别,应按其各自的特点在不同情况下使用。

2模块变量

在模块的声明段中,用关键字Dim Private声明的变量就是模块变量。模块变量的作用范围是所在模块的所有过程。

DimPrivate没有区别,但使用Private更好一些,因为便于区分局部变量,从而增加代码的可读性。

【例4】模块变量举例,程序及运行结果如图4所示。

 

 

 

在窗体模块Form1的通用声明段中声明的变量num1是模块变量,对下面两个按钮单击事件过程都有效,每次运行事件过程都会更新变量的值,直到该模块运行完毕变量的值才被释放。

3全局变量

在标准模块的声明段中,用关键字PublicGlobal声明的变量就是全局变量。全局变量的作用范围是整个工程的所有过程。

三种变量的区别见表1

1  三种变量作用范围对照表

                               
 

名称

 
 

作用范围

 
 

声明位置

 
 

使用语句

 
 

局部变量

 
 

过程内部

 
 

过程中

 
 

DimStatic

 
 

模块变量

 
 

窗体模块或标准模块

 
 

模块的声明部分

 
 

DimPrivate

 
 

全局变量

 
 

整个工程

 
 

标准模块的声明部分

 
 

PublicGlobal

 

定义变量的作用范围及简单说明如下,

在标准模块Module1中定义的语句:

Public x As integer            全局变量x可以在每个模块、每个过程中使用

在窗体模块Form1中定义的语句:

Dim y As string                          模块变量y在以下两个过程中都可以使用

Sub Form_Click()

   Dim a%, b!                          局部变量ab只能在窗体单击过程中使用

End Sub

Sub Command1_Click()

   Static m%, n#                            局部变量mn只能在按钮单击过程中使用

End Sub

4符号常量作用范围

符号常量定义以后,在程序中就可以用常量名代替常量的值,例如:可以用Pi 代替3.1415926,但是这种替代是有范围的,有效范围由常量定义语句的位置决定,有以下三种情况:

如果在一个过程内部声明一个符号常量,则该符号常量只在该过程中有效。

如果在一个模块的声明段中声明一个符号常量,则该符号常量只在该模块的所有过程中有效。

如果在标准模块的声明段中声明一个符号常量,并在 Const前面加上Public关键字,则该符号常量在整个工程中都有效。

【例5】 检测符号常量的作用范围。程序代码及运行结果如图5所示。

 

  

从图中可以看到符号常量one是在模块的声明段中声明的,在下面两个过程中都有效,而符号常量two是在Command2_Click()过程内部声明的,仅在该过程内部有效,所以在Command1_Click()过程中Print two语句没有结果。