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