最新VB教程 03 第三章_第1页
最新VB教程 03 第三章_第2页
最新VB教程 03 第三章_第3页
最新VB教程 03 第三章_第4页
最新VB教程 03 第三章_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机软件技术基础,计算机软件技术基础,授课教师:赵海燕 2010年10-12月,2,第3章 数据类型、常量与变量,3,1 数值型,3.1 基本数据类型,4,2 String(字符串型) 字符串是指连续的字符序列。 字符串数据类型是专门用来存放文字信息的。 字符串型又分为“定长字符串型”和“变长字符串型”两大类。 字符串类型所占的内存空间大小 与字符串长度有关。,3 Boolean(逻辑型、布尔型) Boolean类型的数据只可能有两个值:True(逻辑“真”)和False(逻辑“假”),用来表示“是”与“否”、“开”与”关”、“对”与”错”这类只有两种取值的情况。 一个逻辑型数据却要占2个字

2、节的存储空间。,5,4 Date(日期时间型) Date类型又称为日期型 这种类型的数据可以存放日期信息、时间信息或者同时存放日期与时间信息。 Date类型数据用8个字节来表示日期和时间(公元100年1月1日9999年12月31日) 5 Object(对象型)和Variant(变体类型) 将分别在3.3.6和3.3.7节中讲解。,6,整型常量: 十进制: 例如 1、20、500、-101 、230594 整型常量之后加“&”字符,成为长整型常量 整型常量与长整型常量数值大小相同,占用内存不同 八进制: 以“&O”(字母O)开头,后面接由07组成的八进制数 例如 &O11、&O123 错误:&O

3、81,3.2 直接常量,7,浮点型常量: 普通记法:例如 1.2、-1.4 24. 0.22 注意保留小数点 科学记法:指数形式表示,用mEn表示m10 m为整数或者实数常量,n为整数常量,m和n都不可省略。 例如 1.2E10、-1.23E-3 错误:1.2E1.4、E4、12E,十六进制: 以“&H”开头,后面接由09、AF组成的十六进制数 例如 &H11、&HFF 错误:&HFR,n,8,字符串型常量: 使用英文的双引号把实际文本括起来,双引号成为字符串的“界定符”。 包括汉字、中文标点、英文和英文符号 “ ”中间没有任何字符表示空字符串 “ ” “ ”表示一个双引号 字符串常量中的双引

4、号必须成对出现。 例如 Visual Basic 、 你好! 逻辑型常量:只有两个 True、False 日期时间型常量:使用“#”号作界定符,例如 #1/1/2005#、#April 1, 2005#、#1:00:00PM#,9,变量:在程序执行过程中存储临时数据的命名内存单元,也称 “内存变量”。 变量名:程序是通过变量名来保存和访问相应内容单元中的值。,3.3 变量,在VB中变量名有如下规则: 以字母开始,可以包括字母、数字和下划线; 不能包含标点符号; 不能多于255个字符; 不能与保留关键字重复(如:End、Private、Sub) ; 在同一作用域中,变量名不能重复。,10,定义变

5、量: Dim|Static|Private|Public 变量名 As 数据类型名 变量赋值:通过以下形式的语句为变量赋值。,变量的数据类型: 数据类型决定变量占用内存的大小、数据处理的方式、表示值的范围。,11,变量赋值形式一: 变量名= 表达式 赋值语句的作用是把一个表达式的值赋予一个变量,即保存到变量所占的内存空间。 被赋值之后变量旧值被覆盖,变为新值。 被赋的新值的类型和大小应与变量的数值类型相一致,否则会出错。 在过程、函数调用过程时,可以通过参数传递的方式为被调用过程中的变量赋值。,12,变量赋值形式二: 引用变量的值 将变量名写到表达式中、过程函数实参表中,实际上就是对变量的值进

6、行引用。 如下式中,是将变量b和c的值求和后赋给变量a。a 的值变为新值,b和c的值被引用,并未改变。 a=b+c,13,(1) 过程级变量 也称为“局部变量”,在过程中定义,作用域为所在的过程。 定义过程级变量的方法有两种: Dim 变量名 AS 数据类型名 动态局部变量 Static 变量名 AS 数据类型名 静态局部变量 如: Dim a As Integer,变量的作用域,变量的作用域决定了一个变量在什么代码范围内可以被访问。 定义变量时使用的关键字及定义变量的位置决定变量的作用域。 变量有三种作用域:过程级、模块级和全局级。,14,说明: 使用Dim关键字定义的局部变量, 只在定义它

7、的过程执行时存在,过程执行完变量即消失。 下一执行该过程时,会重新生成变量,重新初始化。 使用Static关键字定义的局部变量称为“静态变量”, 在整个程序运行过程都存在,但只能被定义它的过程所用。 每次执行不重新进行初始化。 可以在一个过程的多次执行之间保持其值。,15,(2)模块级变量 在模块顶部的“通用声明段”中定义,在该模块中的所有过程中可用。 定义的方法(两种方法等价) : Dim 变量名 As 类型名 Private 变量名 As 类型名 如:Private d As Date Private S1 As String (定义变长字符串变量) Private S2 As Strin

8、g *4 (定义定长字符串变量),一个定长字符串变量所占的内存空间是一定的,当其中的字符信息没达到这个长度时,所剩的空间用户“空格“填充。 如果给定长字符串变量赋一个超过其长度的字符串,会被截掉多余部分,不会出现“溢出”错误。,16,(3) 应用程序级变量 也称为“全局变量”或“公共变量” ,在模块顶部的“通用声明段”中使用Public关键字定义。 全局变量在程序(即同一个工程中)的所有模块中皆可用。 定义方法: Public 变量名 As 类型名 如:Public p As Boolean 说明: 不能在窗体模块中定义全局定长字符串变量。应在标准模块中定义全局定长字符串变量。,17,访问另一

9、个模块中定义的全局变量,应在变量名前加模块名修饰。如 F1 = 2 在没有重名的情况下,访问标准模块中的全局变量,不必加模块名。,18,7 一条语句定义多个变量,Public|Private|Dim|Static变量1 As 类型1,变量2 As 类型2 每个变量都要指明类型,否则被定义为变体类型。例如, 下面语句定义了三个模块级变量,其中a和b是变体类型,c是整型: Private a, b, c As Integer 下面的语句定义的三个变量都是整型全局变量: Public a As Integer, b As Integer, c As Integer,19,变量被定义之

10、后,在第一次赋值之前,并不是没有值的,而是具有默认值。 (1)数值型变量的默认值为 0 ; (2)逻辑型变量的默认值为 False ; (3)日期时间型变量的默认值为 #0:00:00# ; (4)变长字符串变量的默认值为空字符串 ; (5)定长字符串变量的默认值是全部由空格组成的字 符串,空格个数等于定长字符串的字符个数; (6)对象型变量的特殊值为 Nothing; (7)变体类型变量的默认值为 Empty。,变量的默认值,20,8 强制变量定义,默认情况下,所有未出现过程的标识符,都被VB当成变体类型的变量。 这样,使得程序不容易调试,可以在模块声明段中加上: Option Explic

11、it 使得所有的变量必须定义才能使用。,21,(1)变量的值除非被赋以新值,否则其值不会自动变化;赋以新值之后,旧值自动消失。 (2)使用如下语句为变量赋值: Let 变量名新值 (3)对于数值类型变量,如果被赋的新值超出其可表示的范围,会出现“溢出”错误; (4)将变量名写在表达式中,或给其他变量或属性赋值,或用作过程或函数的参数,表示使用变量的值;,9 变量的赋值与取值,【例3.1】使用过程级变量,【例3.2】使用模块级变量,【例3.3】为模块级变量赋初值,22,(1)不允许同名的情况 一般情况下,在同一作用域内不能定义重名的变量。 同一个过程中不能定义两个或更多的同名过程级变量,既使类型

12、不相同也不能同名。 同一个模块中不能定义同名的模块级变量。 同一个模块中不能定义同名的全局变量。 同一个模块中的模块级变量和全局变量不能同名。,10 变量重名问题,23,(2)允许同名的情况 不同的过程中可以定义同名的过程级变量。 不同的模块中可以定义同名的模块级变量。 过程中可以定义与模块级变量同名的过程级变量。 过程中可以定义与全局变量同名的过程级变量。 模块中可以定义与其他模块定义的全局变量同名的模块级变量。 不同的模块中可以定义同名的全局变量。,24,(3)变量同名时的情况 不同作用域的变量同名时,作用域小的变量会屏蔽作用域大的变量,即过程级变量屏蔽模块级和全局变量,模块级变量屏蔽全局

13、变量。例如,在例3.2中,按钮事件过程中的变量i屏蔽模块级变量i,过程中被访问的i实际上是过程级变量。 如果不同模块中全局变量同名,访问其他模块中定义的全局变量时应添加模块名进行限定(形式为“模块名.变量名”)。访问本模块或标准模块中定义的全局变量时不必进行限定。如果本模块与标准模块中的全局变量同名,访问标准模块中的全局变量时也应加模块名进行限定。,25,当全局变量与过程级变量同名时,在过程中直接使用这个变量名时,指的是过程级变量。如果使用定义全局变量的模块名来限定变量名,则可访问该全局变量。 如果本模块中的模块级变量与其他模块中的全局变量同名,可以在变量名前加模块名来访问全局变量。,26,对

14、象型变量占用4个字节共32位的内存空间; 对象型变量保存的是某一个对象的引用(即内存中的地址); 程序对对象型变量的操作等于对它所引用对象的操作; 对象型变量在被定义但未被赋值时的值是一个特殊值:Nothing。 对象型变量没有默认值,定义之后未赋值之前不能使用。 例: Dim objFirst As Object (定义) Set objFirst= cmdOK objFirst.Caption =OK : objFirst.Move 120,234,345 Set objFirst=txtEdit : objFirst.Text=Hello,11 对象型数据类型(Object),定义对象型

15、变量: Public |Private |Dim |Static 变量名 As Object |Control |对象类型名 给对象型变量赋值:Set 对象型变量名 = 对象型表达式,27,Object类型的变量可以引用任何一种类型的对象。 如果在使用中,一个变量只引用一种特定类型的对象时,就可以将该变量定义为此特定类的对象型变量。定义特定类型对象型变量,要使用对象的类型名,如已学习过的:Form、Textbox、CommandButton、Line、Shape等。特定类型对象型变量只能引用同一类型的对象。 例: Dim objSecond As CommandButton Set objSe

16、cond=cmdOK : objSecond.Caption=Hello! 例: Dim objThird As Form Set objThird =cmdOK (错误!),28,变体类型变量可以存贮几乎所有系统定义类型的数据(除定长字符串和用户自定义类型)。 把其它类型的数据赋给变体变量,变体变量的类型会随之变化,适应新的值。 变体变量在存放数值时,占16字节的内存;存放字符串时,占用22个字节加字符串长度的内存。 例: Dim vntFirst As Variant (定义) vntFirst=“17” (数据类型为字符串型,值“17”) vntFirst=15 (数据类型为数值型,值为

17、 15),12 变体类型(Variant),变体类型变量定义: Public |Private |Dim |Static 变量名 As Variant,29,变体变量类型是默认类型,在定义变量时可以省略“As Variant”。 变体变量也可以引用对象,赋值时须使用Set语句。 例: Dim vntSecond (定义) vntFirst=1234 (为数值型1234) Set vntFirst=cmdOK (数据类型为对象型, 对cmdOK控件的引用),30,Variant变量有两个的特殊的取值:Empty、Null。 Empty: 一个变体变量可以在下列两种情况下具有Empty值:(1)尚

18、未赋值时;(2)被赋予Empty值之后。 把Empty值赋给一个数值型变量时被理解为0,赋给一个字符串时被理解为空字符“”。,31,Null: 主要用于对数据库的操作,表示数据未知或数据不确定。 Null值有如下特点: (1)如表达式的任何一部分是Null,则整个表达式的值也为Null; (2)把Null值作为参数传递给一个函数,则函数的返回值为Null。可给一个变体变量赋值 Null。 (3)Null与其本身不相等。,32,VB允许不同类型的变量之间相互赋值,也允许把不同类型的值赋予某种类型的变量,VB会自动将所赋予的值转换为被赋值的变量的类型。,13 类型转换,数值型变量的赋值 数据型变量

19、之间可以相互赋值。 浮点数转换为整型数时,小数部分“四舍五入”为整数(其中0.5要向最近的偶数靠拢)。 字符串变量 如果字符串变量中存贮的是数值信息,则可以将其赋予数值型变量。 包括非数值字符的字符串(如有字母、标点符号)不能赋值给数值型变量,否则出现“类型不匹配”错误。,33,逻辑型变量 逻辑变量的值赋给数值型变量,False转换为0,True转换为-1。 数值型变量的值赋给逻辑变量,0转换为False,其它值转换为True。 日期时间型变量 日期时间型变量赋给数值型变量时,日期部分转换为数值的整数部分,值为此日期距1899年12月30日的天数; 时间部分转换为小数部分,从零时到该时间占一整

20、天的比例,12:00:00转为0.5。 例:dtm3=#3/18/1999 6:00:00# : sng2=dtm sng2的值为“36237.25” 所有的类型值均可以转换为字符串值。 日期时间型变量转换为字符串时,按照日期的短格式字符串。 可以使用类型转换函数进行显式转换。转换规则与上述默认转换相同。,34,(1)同一个过程中不能定义同名的变量; (2)不同的过程中可以定义同名的变量; (3)同一模块中不能定义同名的模块级变量; (4)可以有与模块级变量、全局变量同名的过程级变量,在该过程中只能访问过程级变量,即过程级变量会屏蔽同名的模块级变量或全局变量。 (5)在同一模块中不能定义同名的模块级与全局变量。 (6)不同的窗体模块中可以定义同名的全局变量,访问时须加模块名限定。 (7)多个标准模块中不能有重名的全局变量。,14 再谈变量的重名问题,35,(8) 在窗体模块中,窗体的属性、控件、过程和模块级变量是同一层次的,故它们之间不能重名。 (9) 过程中的局部变量比过程低一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论