设为首页收藏本站

嘻皮客娱乐学习网

 找回密码
 中文注册
搜索
打印 上一主题 下一主题
开启左侧

[OFFICE] 第二章 Visual Basic语法基础

[复制链接]
跳转到指定楼层
楼主
发表于 2016-7-11 09:51:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  学习目标:
u 掌握VB的编码规则
u 了解VB的数据类型
u 掌握变量、常量的声明和使用
u 掌握运算符和表达式的使用
u 掌握VB数据的输入与输出
u 了解VB的内部函数

重点:VB的变量、常量的声明和使用、VB数据的输入与输出
难点:数据类型,变量的作用域。
  基本要素:介绍系统提供的各类标准数据型
用户自定义的数据类型
变量、常量、语句、系统提供的各类标准函数
用户自定义的函数、过程.1 数据类型.1.1 整型(Integer):占用2个字节
多以十进制表示% %:整型类型说明符
注意整型数据的范围:-32768~32767
超过整型数值范围的都不是整型。.1.2 长整型(Long ):占用4个字节
在数字后加表示长整型
例如:16.1.3 货币型(Current):占用8个字节
在数字后加@表示货币型,适用于货币计算等注重精度的场合。
  货币型数据可以在小数点右边4位数字,而左边有15位数字。.1.4 日期型(Date):占用8个字节
表示日期和时间、一般表示法:以成对的“#”表示:#mm/dd/yy#
#5/25/1995#
注意:输入两位年数时,30~99表示1930~1999~29表示2000~2029
也可在日期格式中加入时间数据,如:
#May:00 AM#、序号表示法
① 序号是双精度浮点数,序号的整数部分表示日期,小数部分表示时间。
  ② 基准日期为公元1899年12月30日,这天的整数部分为0。
  ③ 序号的取值范围为-657434~2958465。
  ④ 序号的小数部分是以某个时间点占一天24小时的比例表示。
  例如:6:00AM 会以0.25表示
公元1900年1月1日 会以2来表示.1.5 布尔型(Boolean):占用2个字节
布尔型数据只有两个值:true和false ,缺省为false ,也可用-1和0表示。.1.6 单精度型(Single):占用4个字节
单精度数在数字后加“!”来表示,如:122.445!
注意:
① 单精度型数是浮点数。
  ② 取值范围:+1.40E-45 ~ +3.40E38
-3.40E38 ~ -1.40E-45.1.7 双精度型(Double):占用8个字节
双精度数在数字后加“#”来表示,如:6066799.111#
注意:
① 双精度数是浮点数。
  ② 取值范围:正数:4.94065645841247E(-324)~1.79769313486232E308
负数:-1.79769313486232E308~ -4.94065645841247E(-324).1.8 字符串型(String):每字符占用一个字节
字符串是由连续字符前后加‘’构成。.1.9 字节型(Byte):占用1个字节
字节型数值范围在0~255整数之间,无类型说明符。.1.10 变体型(Variant):也称通用型
VB缺省规定:如果在变量声明中没有说明数据类型,则该变量的数据类型为Variant(变体型),它可适用于任何数据类型。
  Variant数据类型还包括三个特定值:Empty,null,error。
  (1)Empty值用于确定是否已将一个值赋予所创建的变量,赋值之前,Variant变量是有值Empty。
  (2)Null常用于数据库应用程序,表示未知或丢失的数据。
  (3)Error值是指已发生的过程中的错误状态。
  说明:
(1)Variant是最为灵活的数据类型,可以依据不同需要进行各种数据类型的转换。
  它实际上包含两部分信息,一部分是数据类型的信息;别一部分表示数据值的信息。因此,它的缺点是占用内存较多。
  (2)若在应用程序中想知道Variant型变量中存储的数据是什么类型,可以使用Vartype( )函数来判断。.1.11 用户自定义类型
VB允许用户设置自己的变量类型,语法为:
Type 用户自定义类型名
成员名1 as 数据类型名
成员名2 as 数据类型名
┆ ┆
成员名n as 数据类型名
End Type
例如:Type Student
Number as integer
Englishscore as Single
Chinesescore as Single
End Type
上例定义了一个Student类型,它包括三个成员:Number、Englishscore和Chinesescore。
  [注意]:用户自定义类型名及成员名的命名规定同变量的命名规则相同;必须以字母开头,不能包括类型说明符及不得超过255个字符;在同一个范围内必须唯一;大小写无关紧要;不能包含有VB的保留字,如Print、Mod、And、Dim、Sub、While、FontBold等。(见P.18. 或《成人》P.27.).1.12 枚举类型(Enum):
比如程序要设置一个变量,该变量用来存放今天是星期几,故该变量的取值只能有七种取值。VB为这类变量提供了一种数据类型:枚举类型(Enum)
建立枚举类型的格式为:
Enum 枚举类型名
成员名1 [=常量表达式1]
  成员名2 [=常量表达式2]
  ┆
End Enum
例如:Public Enum Week
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
End Enum
[注意]:(1)成员名只能为字符串,每一个字符串都与一个常数值相关联,这样就可对这些字符串比较大小。
  (2)不同的成员名可以对应相同的常数值。
  (3)成员名对应常量表达式可以缺省,缺省时采用系统默认值:第一个成员默认为0,其后的成员依次加1。
  (4)所有的“成员名”构成了此枚举类型的取值范围。.2 常量
VB中常用来源 ①应用程序和控件提供的内部或系统定义的常量;
  ②用户用const语句声明的符号常量,即自定义常量。
  用户自定义常量的语法为:
Const 常量名 [as typename]
  = Expression
例如:Const constnumber1=5
Const constnumber2=constnumber*3
[注意]:(1)常量名的命名规则同一般变量名(P.18.)。
  (2)常量也是有作用域的。
  (3)as typename一般缺省,不需特别定义,等号后的Expression的数据类型决定了常量的数据类型。
  (4)在窗体模块和类模块中不能声明含public关键字的常量。
  (5)在程序中不能用任何代码去改动常量的值。
  (6)VB本身也定义了许多系统常量,如:vbRed、vbEsc等,一般都以小写的vb开头。常量vbRed代表红色的数值,常量vbEsc代表Esc键的代码。.3 变量.3.1 变量的声明
变量只有先声明后才能使用,声明变量也就是事先将变量通知给应用程序,告诉编译器准备使用的变量,使编译器产生优化代码,进而提高运行速度。.显式声明:
语法为:
Dim/Private/Public/Static Variable Name as Type
例如:Dim purin as String
Dim i , j , k as Integer ‘定义i , j , k为整型变量
[说明]:(1)在过程内部用Dim语句声明的变量,只有在该过程执行时才存在,过程结束,该变量的值也就消失。
  (2)as Type可以省略,表示将变量定义为Variant。
  (3)定义字符串类型变量可分为可变长度和固定长度。
  如:Dim name as string*25 ‘固定长度为25个字符
Dim name as string ‘可变长度
(4)如果要强调程序中一切变量必须经过声明才可使用,则可在Form或模块的说明区内加入以下语句:
Option Explicit (该语句仅作用于语句所在的模块)
或在程序代码设计之前:→工具/选项→“要求声明变量”
注意:(1)所有数值变量都可相互赋值,也可对Variant类型变量赋值。
  (2)在将浮点数赋予整数之前,VB先将浮点数的小数部分四舍五入,而不是将小数部分去掉。
  (3)如果变量包含小数,则可将它们声明为Single、Double或Currency变量;浮点数比Currency的取值范围大得多,但有可能产生小的进位误差。.隐式声明:
在使用一个变量之前,也可以不先声明变量,VB在遇到没有声明的变量时,VB会用这个名创建一个变量,并会把该变量的类型设为Variant(变体型、通用型)。
  [当编程人员不能确定所要采用的变量是什么类型时,采用Variant型变量是一个很好的解决方案,只是它会耗费较多的内存空间。]
  虽然这种方式很方便,但一旦发生变量名拼写错误,会导致一个难以查找的错误。.3.2 变量的作用范围(作用域) P.38. 《成人》P.30.
一个变量在不同的位置被定义后并不是在任何地方都能被引用的,每一个变量都有它的作用范围(作用域)。.过程内部的局部变量
对于过程内部声明的变量,只有在该过程中的代码才能访问这个变量。这种变量称为过程内部的局部变量,局部变量用Dim或Static声明。
  例如:Dim i as Integer ‘动态变量
或Static i as Integer ‘静态变量
☆ Dim 和Static声明变量的区别:
Dim声明的变量只在过程运行(调用)期间才存在;而Static声明的变量的值却一直存在。(P.39.) 《成人》 P.30.
∴在编程时,为了防止程序中变量的干扰,应尽量采用局部变量。.模块级变量
如果一个窗体(或模块)中的不同过程要使用同一个变量,可以在该窗体(或模块)的General Declarations部分定义一个变量。
  ☆ 进入代码编辑器后,“Object”:选General ,“Proc”:选Declarations 。
  a)☆对于窗体级变量,可以Private\Dim\Public来声明。
  如:Private watervalue as single
Dim watervalue as single 效果一样
Public watervalue as single ‘不是全局变量
[注意]:用Public声明的变量除了在本窗体内的过程能访问外,本窗体之外的所有过程也可以访问它,但必须指出其所在的对象。
  例如:Form1.watervalue
b ) ☆ 对于模块级变量,在模块的General Declarations部分,可以用Private\Dim来声明。
  如:Private watervalue as single
Dim watervalue as single.全局变量(模块公有的变量)
全局变量要在模块的General Declarations部分中用Global\Public关键字来声明。
  如:Global watervalue as single
Public watervalue as single
[注意]:(1)全局变量可被程序任何一个模块或窗体访问。
  (2)在窗体中不能定义全局变量。
  举例:用P.40. 图2-8来说明变量的作用范围。
  [总结]:
(1) 在过程中只能定义局部变量,有Static和Dim两种形式(有区别)。
  (2) 在窗体的General Declarations部分只能定义窗体级变量,有Private、Dim、Public三种形式。其中Private和Dim形式用法一致,而与Public稍有不同。
  (3) 在模块的General Declarations部分能定义模块级变量和全局变量。
  以Private或Dim定义的变量是模块级变量。(无区别)
以Public或Global定义的变量是全局变量。(无区别)
(先介绍“变量”后,再介绍“常量”。).3.3 用户自定义类型变量的成员访问
访问格式为:自定义类型变量.成员名
例如:Type Person
Name as string
Age as integer
End Type
Dim man as Person
存取变量man 内部成员的方式:
man.Name=”mingming”
man.Age=34.3.4 枚举型变量的声明
① 先建立一个全局枚举类型:
Public Enum Week
Saturday
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
End Enum
② 声明变量:
Dim Today As Week
③ 使用(调用)变量的例子:
If today  Monday then
Print “今天休息”
Else
Print “今天上班”
End If.3.5 对象变量
不仅可以用变量记录数据,也可以用一个变量来记录对象。但跟一般变量不同的是,对象变量所记得的不是真正对象的内容,而是一个对象的“引用地址”。通过记录对象引用地址的变量,可以间接地使用这个对象。 对象变量的声明
Dim 变量名称 As Object
或 Dim 变量名称 As 类名称
例:Dim AAA As Object ‘该变量可以存放任何类型的对象的地址
Dim BBB As Form1
Dim CCC As TextBox 赋值对象变量
即将对象的引用地址存到对象变量中,此时,必须要用“Set”关键字。
  有下面三种形式:
Set 对象变量 = 对象名 ‘将一个已存在对象的引用地址存到对象变量中
Set 对象变量 = New 对象类 ‘先添加一个对象,并保存它的引用地址
Set 对象变量 = Nothing ‘对象变量不指向任何对象,释放对象变量占用的资源
注意:⑴ 可以用“Dim 变量名称 As New 类名称”代替下面两行语句:
  Dim 变量名称 As 类名称
Set 对象变量 = New 对象类
⑵ 窗体的Name属性代表的是“类”的名字,而控件的Name属性代表的是“对象”的名字。
  举例:上机讲义\对象变量例
注意: “Form1”既是窗体类名,又是窗体对象的引用变量名。.4 运算符和表达式、算术运算符及运算优先级




优先级


运算符


运算





乘幂(指数)





负号


*,/


乘,浮点除


\


整除


MOD


取余


+,-


加,减


举例:X=Y^2 ‘X等于Y的平方
X=Y*Z ‘X等于Y乘以Z
X=Y/Z ‘X等于Y除以Z
X=5/2 ‘X等于5除以2,值为2.5
X=5\2 ‘X等于5整除2,值为2
X=5 MOD ‘X等于5模2,值为1、字符串运算符
(1)连接运算符:“+”和“”,但尽量使用“”。
  [注意]:使用“”时,最好在其两侧各加入一个空格。
  例如:LongVar=444444 ‘长整型
Print LongVar  H6F
(2)比较运算符:“Like”
格式为:字符串 Like 样板字符串
☆ 该匹配比较表达式通常用于文件管理中文件名的匹配,运算结果为逻辑值。
  ☆ 样板字符串允许出现通配符:?、*、# 等
☆ 若?、*、# 等字符在样板字符串中表示普通意义的字符,则要用中括号括起。
  ☆ 通配符格式 意义

  代替任一字符
* 代替任一串字符
# 代替任一数字
[字符范围]
  代替指定范围的任一字符
[!字符范围]
  代替除指定范围内的任一字符
☆ 举例:(P.29.)
例1:”BookText.Txt” Like “ [BC]ook*.Txt” 结果为True 。
  例2:”A*B” Like “??” 的结果为True 。
  [注意]:默认状态下,字母区分大小写。
  若想改变默认值,可在模块的说明区中通过Option Compare语句来实现:
Option Compare Biuany ‘区分大小写
Option Compare Text ‘不区分大小写、关系运算符
有六种关系运算符:
  大于,= 大于等于, 小于,= 小于等于,= 等于, 不等于
运算结果为True ,False 或 Null
若任一操作数为Null ,则结果为Null 。、逻辑运算符
VB提供六种逻辑运算符:
Not非,AND与,OR或,XOR异或,EQV逻辑等,IMP隐含、运算符的优先级
算术运算字符串运算 关系运算符 Like  逻辑运算
回复

使用道具 举报

小黑屋|手机版|嘻皮客网 ( 京ICP备10218169号|京公网安备11010802013797  

GMT+8, 2024-5-18 03:51 , Processed in 0.169630 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表