Visual Basic程序设计 第三章 常量与变量
主要内容 §3.1 基本数据类型 §3.2 常量 §3.3 变量 作业
§3.1 基本数据类型 数据类型 数值型 字符串型 逻辑型 日期型 对象型 变体型 整型 长整型 字节型 单精度浮点型 双精度浮点型 货币型 §3.1 基本数据类型 数据是程序处理的对象。为了更好地处理各种各样的数据,VB定义了多种数据类型。 整型 长整型 字节型 单精度浮点型 双精度浮点型 货币型 数值型 数据类型 字符串型 逻辑型 日期型 对象型 变体型
1、数值型数据类型 类型 中文名 表示范围 精度 整型 2 精确 长整型 4 单精度 浮点型 双精度 8 货币型 15位整数,4位小数 字节 表示范围 精度 Integer 整型 2 -32768~32767 精确 Long 长整型 4 -2147483648 ~ 2147483647 Single 单精度 浮点型 -3.402823E 1038 ~ 3.402823 1038 6-7位有效数字 Double 双精度 8 -1.7976931348623210308 ~ 1.79769313486232 10308 15位有效数字 Currency 货币型 -922337203685477.5808 ~ 922337203685477.5807 15位整数,4位小数 Byte 字节型 1 0~255
5、Object(对象型)和Variant(变体类型)将分别在后面节中讲解。 2、String(字符串型): 字符串是指连续的字符序列,专门用来存放文字信息的。分为“定长字符串型”和“变长字符串型”两大类。字符串类型所占的内存空间与字符串长度有关,最多 64K个字符。 3、Boolean(逻辑型、布尔型): 只有两个值True(逻辑“真”)和False(逻辑“假”),占2个字节存储空间。 4、Date(日期时间型): 又称日期型,存放日期时间。占8个字节,范围公元100年1月1日~9999年12月31日。 5、Object(对象型)和Variant(变体类型)将分别在后面节中讲解。
§ 3.2 常量 常量:在程序运行时值不能改变的量为常量。分为直接常量和符号常量。 直接常量:程序中直接使用的数据常量 § 3.2 常量 常量:在程序运行时值不能改变的量为常量。分为直接常量和符号常量。 直接常量:程序中直接使用的数据常量 符号常量:用一个符号名来代替数值或字符串,称为符号常量。 常量 直接常量 符号常量 数值常量 字符串常量 逻辑常量 日期常量
3.2.1 直接常量的数据表示方法 整型后加% (可省) : 123、-123、+123、123% 长整型后加&: 1234&、-7890& 3.2.1 直接常量的数据表示方法 整型后加% (可省) : 123、-123、+123、123% 长整型后加&: 1234&、-7890& 八进制 &O开头: &O136 (字母O) 十六进制&H开头: &H3A、 &H6B4 & 单精度后加! :11.2、11.2! 、0.112E+2 双精度后可加# :123.45#、0.12345E+3 # 货币型后加@ :123.45@
字符型常量:使用双引号 ””: " Visual Basic " 、 "你好!“ 特殊的字符串: " " " "表示一个双引号字符串, " "表示空字符串。字符串常量中的双引号必须成对出现。 逻辑型常量:只有True和False两个值。 日期型常量:使用“#”号作界定符: #1/1/2005#、#April 1, 2005#、#1:00:00PM#
3.2.2 符号常量及命名规则 符号常量的使用增加了代码的可读性,因为我们看到的是具有含义的名字而不是数字。如Pi表示常量3.1415926535, 特点:一个常量一经声明,就不能在以后的语句中改变它的数值。 命名规则 : 1、以字母开头,其后可以是字母、数字或下划线字符(不能包含英文标点符号、空格); 2、VB不区分名字中字母的大小写(符号常量一般用大写字母定义) 3、不得超过255个字符; 4、不能使用VB的保留字; 5、同一作用域,不能重名。
3.2.3 常量的声明 常量的声明符及其定义的位置不同,有效作用范围不同。分如下三种情况(三个作用域)。 3.2.3 常量的声明 常量的声明符及其定义的位置不同,有效作用范围不同。分如下三种情况(三个作用域)。 1、过程级常量(LOCAL 局部),在过程中声明的常量,只能在该过程中使用,即有效作用范围是该过程。语法: Const constantname [As Type] = expression constantname 是常量名; As type 常量类型,如省略由所赋值确定常量类型; expression 由数值常数或字符串常数以及运算符组成,但不能使用函数调用。 过程内部直接用Const声明过程级常量。
3、全局级(工程级)常量(PUBLIC)在标准模块声明的常量,在工程的所有模块或窗体中都可用,语法: 2、模块级常量(MOUDULE/FORM),在模块、窗体的“通用”声明的常量或过程中用“Private”声明的常量,在声明它的模块或窗体中的所有过程中可用。语法: [Private] Const constantname [As Type] = expression 在通用中用Private或直接用Const声明窗体级常量 3、全局级(工程级)常量(PUBLIC)在标准模块声明的常量,在工程的所有模块或窗体中都可用,语法: Public Const constantname [As Type] = expression 声明全局级常量必须在标准模块中声明,不能在窗体模块中声明! Const关键字可定义多个符号常量,用逗号分隔: Const conX=1,conY =50.01
常量的声明举例 Const 语句定义数字: Const conPi = 3.14159265358979 Const conX=1,conY =50.01
§3.3 变量 定义:在程序运行时用来保存临时数据的空间,所以也称内存变量。程序通过变量名来操作变量,变量具有名字(用来引用变量所包含的值的词)和数据类型(确定变量能够存储的数据的种类)。 3.3.1 变量命名规则 3.3.2 变量的声明 3.3.3 变量的赋值 3.3.4 变量重名问题 3.3.5 字符串长度问题 3.3.6 Object 对象型变量 3.3.7变体类型(Variant) 3.3.8 变量数据类型转换
3.3.1 变量命名规则 VB 的命名约定在编写 VB代码时,要声明和命名许多元素(Sub 和 Function 过程、变量、常数等等)。声明的过程、变量和常量的名字,必须遵循一定规则。 变量命名规则同常量。 1、以字母开头,其后可以是字母、数字或下划线字符(不能包含英文标点符号、空格); 2、VB不区分名字中字母的大小写(符号常量一般用大定字母定义) 3、不得超过255个字符; 4、不能使用VB的保留字; 5、同一作用域,不能重名。
3.3.2 变量的声明 变量的作用域决定了一个变量在什么代码范围内可以被访问。 定义变量时使用的关键字以及定义变量的位置决定了变量的作用域。
定义变量的声明符及变量定义的位置不同,其有效作用范围也不同,分为工程级、模块级、过程级三个作用域. 1、过程级变量: 局部变量,其作用范围最小,只限于本过程。用Dim或Static在过程内声明: Dim | Static Temp As Integer 过程中的变量值对过程来说是局部的,也就是说,无法在一个过程中访问另一个过程中的变量。 在不同过程中可使用相同的变量名,而不必担心有什么冲突和意想不到的变故。
2、模块级:在模块的“通用” ->“声明”中声明 Private | Dim Temp As Integer 在本模块的各过程中都可以使用。 3、工程级(全局)变量: 在 “通用”->“声明”中声明。 Public Temp As Integer 整个工程内都可以使用 Dim和Static的区别: Dim定义的是动态过程变量,只在程序运行期间存在,不保留值。 Static定义的是静态变量,程序模块运行结束仍存在,并保留值。 Dim即可用于模块级变量的定义,也可用于过程级变量的定义;而Static只能定义过程级变量。 打开【例3.1】使用过程级变量
变量作用域举例: Dim abc As Interger Private Sub Command1_Click() abc = abc + 1 Print abc End Sub Private Sub Command2_Click() Private abc As Interger Static abc As Interger
变量的默认初值 定义了一个变量,如果没为它赋初值,则 数值型的默认初值为0 逻辑型为False (值为0,非0为Ture) 变长字符型的默认初值是“ ”空串 固定长字符型的默认值是固定长的“ ”空格串 日期时间型#0:00:00# 对象型 Nothing 变体 Empty
强制变量定义 Option Explicit VB默认情况下,所有未出现过的标识符,都被VB当成变体类型的变量。这样,使得程序不容易调试,可以在模块的声明段中加上: Option Explicit 在“工具”菜单中选取“选项”,单击“编辑器”选项卡,再复选“要求变量声明”选项。这样就在任何新模块中自动插入 Option Explicit 语句,但不会在已经建立起来的模块中自动插入;
3.3.3 变量的赋值 A = 100 * 20 在VB中赋值语句: [Let]变量名 = 表达式 3.3.3 变量的赋值 在VB中赋值语句: [Let]变量名 = 表达式 Let旧版BASIC保留下来的,一般省略不写。 例:Dim A As Integer A = 100 * 20 打开【例3.2】使用模块级变量 打开【例3.3】为模块级变量赋初值
3.3.4 变量重名问题 1.不允许同名的情况:一般情况下,在同一作用域内不能定义重名的变量。 2.允许同名的情况:只要不发生冲突就可以。例: 不同过程中可以定义重名的过程级变量; 不同模块中可以定义重名的模块级变量; 等
3.3.5 字符串长度问题 String 变量或参数是一个可变长度的字符串。随着对字符串赋予新数据,它的长度可增可减。 也可以声明字符串具有固定长度,避免VB经常调整长度。 以下语法声明一个定长字符串: String * size 例: 声明一个长度为 50 字符的字符串 Dim EmpName As String * 50
3.3.6 Object 对象型变量 对象型变量,主要是针对VB中的多种控件对来使用。程序通过对象类型变量可间接地对它所引用对象进行操作。 使用对象变量与使用常规变量一样,只不过多了把对象赋予变量这一步: 首先声明变量: Dim variable As class 然后把对象赋予变量: Set variable = object 在对象变量声明后,未赋值之前其默认值为 Nothing
3.3.7 变体类型(Variant) 变体类型变量可以存贮几乎所有系统定义类型的数据(除定长字符串、自定义类型)。把其它类型的数据赋给变体变量,变体变量的类型会随之变化。 变体变量在存放数值时,占16字节的内存;存放字符串时,占用22字节的内存+字符串长度。 定义变量时可以省略“As Variant”。变体变量也可以引用对象,赋值时须使用Set语句。 例:Dim vntFirs (定义变体变量) vntFirst=1234 (为数值型1234) Set vntFirst=cmdOK (对象型,对cmdOK的引用)
3.3.8 数据类型转换 VB允许不同类型的变量之间相互赋值,也允许把不同类型的值赋予某种类型的变量,VB会自动将所赋予的值转换为被赋值的变量的类型。 数值型转换: 浮点数转换为整型数时,小数部分“四舍五入”为整数(0.5要向最近的偶数靠拢)例: 4.515 ;4.54; 3.54; 字符串与数值转换: 数值可转为字符串; 只有由纯数字,或包含合理的字母组成的字符串才可能转为数值,否则出现“类型不匹配”错误 ;如“1.2e3”1200。
赋给数值型变量,False转换为0,True转换为-1。 数值型变量的值赋给逻辑变量,0转换为False,非0转换为True。 逻辑型值的转换: 赋给数值型变量,False转换为0,True转换为-1。 数值型变量的值赋给逻辑变量,0转换为False,非0转换为True。 日期时间型的转换: 日期时间型变量赋给数值型变量时,日期部分转换为数值的整数部分,值为此日期距1899年12月30日的天数;时间部分转换为小数部分,从零时到该时间占一整天的比例,12:00:00转为0.5。 例: dtm3=#3/18/1999 6:00:00# : sng2=dtm3 ‘sng2的值为“36237.25” 日期时间型变量转换为字符串时,按照日期的短格式字符串。
数据类型显示转换 VB自动完成某些数据转换,为提高运行速度,我们通常使用CType( )函数显式的转换。VB的转换函数包括: CBool 转换为Boolean类型 CByte 转换为Byte类型 CCur 转换为Currency类型 CDate 转换为Date类型 CDbl 转换为Double类型 CDec 转换为Decimal型 CInt 转换为Integer类型 CLng 转换为Long类型 CSng 转换为Single类型 CStr 转换为String类型 CVar 转换为Variant类型
作业 网上提交: 例3.1、3.2、3.3 P70-73 习题 直接写在课本上,抽查。 上机练习: 本章例题、所有函数的使用。