Visual Basic 程序设计
第 3 章 BASIC 语言基础
信息学院 魏洪涛
Visual Basic
程序设计
■
主要内容 基本数据类型:数值型、字符型、日期型、
布尔型、变体型 常量与变量及其定义 不同数据类型的运算 表达式 内置函数
Visual Basic
程序设计
■
基本数据类型类型 名称 ,声明
符 字节数 范围
整型 Integer ,% 2 -32768 (-215) ~ 32767
长整型 Long , & 4 -231 ~ 231-1
单精度 Single , ! 4 尾数 24 位 , 指数 8 位 *
双精度 Double , # 8 尾数 53 位 , 指数 11 位 *
字符型 String , $ 定长用 String*n (n- 长度 )
货币型 Currency , @ 8 在 ±2 63×10 - 4 之间
* 均指二进制的位,尾数和指数都含 1 位符号位。* 尾数在(- 1, 1)之间。
Visual Basic
程序设计
■
基本数据类型 ( 续 )类型 声明类型 字节数 范围
布尔型 Boolean 2 True (-1) 或 False (0)
日期型 Date 8 公元 100.1.1 ~ 9999.12.31
字节型 Byte 1 0 ~ 255
定长字符型
String * n 2 * n注:赋值时不足时用空格补,超长时截尾
变体型 Variant ( 可省 )
任何类型数据
对象型 Object 4 任何对象引用 ( 指针 )
Visual Basic
程序设计
■
常量直接常量 数值常量,如 : 3.12 , -5 , 1.3E-8 日期时间常量,如: #10/12/2002 10:30# 字符串常量,如: "I'm fine" , "99.9" 逻辑常量: True , False 用符号表示的 VB 常量,如:
vbCrLf 回车换行 chr(13) & chr(10)vbYesNo =4 ,在消息框 msgbox 中显示
Yes 和 No 按钮
Visual Basic
程序设计
■
常量符号常量分 VB 已定义的符号常量和自定
义符号常量。VB 常量,如:
vbCrLf 回车换行 chr(13) & chr(10)vbYesNo =4 ,在消息框 msgbox 中显示
Yes 和 No 按钮好处:便于记忆,便于程序阅读查阅定义:在对象管理器中
Visual Basic
程序设计
■
自定义符号常量-声明
声明常量的好处 :
便于识别(使用有意义的符号,如 P
I ) 便于修改(只需修
改定义部分) 减少差错:避免输
入错误,便于查错
例:
Const PI=3.1415926
Const VB as string _
= “Visual Basic“
Public Const conMax=99
Const PI2=PI*2
Const T911= #2001-9-11#
[Public|Private] Const [as < 类型 >] < 常量名 >=< 常量表达式>
Visual Basic
程序设计
■
枚举类型-定义符号常量集合 语法[Public|Private] Enum 类型名 < 成员名 > [= 常量表达式 ]
< 成员名 > [= 常量表达式 ]
……
End Enum 如果没有常量表达式,则第
一个成员等于 0 ,后一个成员等于前一个成员加 1 。
常量表达式为 Long 类型 类型定义后,可以用在变量
声明语句中
例如:Enum Season
Spring =1
Summer
Fall
Winter
End Enum
结果: Season 是个符号常量集合,其中包含 4 个符号常量:Spring = 1 , Summer = 2
Fall = 3 , Winter = 4
使用: Dim jd As Season
在对象浏览器中观察自定义的类型
Visual Basic
程序设计
■
变量及其命名规则 变量分内存变量和属性变量。 属性变量即对象的属性,其名称与类型是确定不
变的,例如 Caption 属性,其变量名是对象名 .Caption ,而其类型为 String 。
一般变量即指内存变量,其名称与类型是由程序员定义的。
变量名不能以数字开始,不能用 VB 的保留字 变量名只能由字母、数字和下划线组成 变量名可以使用中文,但较少见。
Visual Basic
程序设计
■
变量的声明 变量的声明语句:
Dim|Public|Static < 变量名 > [as < 类型 >] 显式声明语句: Option Explicit
该语句强制变量必须先声明才能使用 例 : Dim x As Double
Dim i As Integer, j As Single, s As String
或 : Dim i%, j!, s$
注意:如声明 Dim x,y As Single
则 x 为 Variant 型(变体型), y 才是 Single 型
Visual Basic
程序设计
■
表达式 常量、变量、函数用运算符连接而成 单独一个常量,或变量,或函数都可以
看作是一个表达式 运算结果称为表达式的值,该值的数据
类型即为表达式的类型。
Visual Basic
程序设计
■
运算符 数值运算: + - * / (加减乘除) \ ( 整除 ) , 如 : 10\3= 3
mod ( 求余数 ), 如 : 12 mod 5 = 2
^ ( 幂 ), 如 : 3^4 =81 ( 34) 比较运算 : < <= = >= > <> 连接运算 : & ( 或 +) 逻辑运算 : not and or xor equ imp VB 内置函数
Visual Basic
程序设计
■
数值运算 算术运算: + - * / (加减乘除) 整除: \ 如 11\3 ,结果为 3
求余数: mod 如 14 mod 5 ,结果为 4
幂运算: ^ 如 3^4 即 34 ,结果为 81
注意:整除( \ )和模运算符( mod )两侧遇小数点时,先四舍五入,再运算。如 :10.5\3.5=11\4=27.2 mod 3.5=7 mod 4=3
Visual Basic
程序设计
■
数值运算的精度 数值表达式的运算结果一般为 Double 或 L
ong 类型。但如果含 Single 类型的变量或常量,则可能降低其运算精度。
数值常量也可以使用类型后缀 (%,&,!, # ) ,从而改变其参加运算的表达式的运算精度。例如:? 1/3 输出 .333333333333333? 1/3! 输出 .3333333
其中 3! 表示单精度常数 3 ,不是 3 的阶乘!
Visual Basic
程序设计
■
日期型数据的运算 日期型数据可以加减天数(可含小数),结果仍
为日期型。例如: #2005-9-25# - 10
两个日期型数据之差为两个日期之间相隔的天数。例如: #2005-9-25# - #1986-5-20#
日期型数据可以看作一个数值型数据,即该日期与 #1899-12-30 00:00# 之间相差的天数,其中的整数部分为日期,小数部分为时间。该数值称为日期的 “系列数”。例如,用单精度数显示 #1900-1-1 6:00# :? Csng(#1900-1-1 6:00#) 输出 : 2.25
Visual Basic
程序设计
■
比较运算 运算 : < <= = >= > <>
比较结果为 True 或 False 双字符运算符( <= 、 >= 和 <> )两字符之间不能
有空格,也不能写成 =< 、 => 、 > < 字符型数据按其内码( Unicode )大小比较
Unicode : 2 字节无符号整数,国际通用码。 ASCII 码表中的符号,码值不变,位长 16 。
注意:对浮点(单精度、双精度)数不要进行 =(等于)比较,如
?1/3 显示 .333333333333333?1/3= .333333333333333 显示 False
Visual Basic
程序设计
■
字符串的连接运算字符串的连接运算: & ( 推荐使用)
或: + ( 尽量不用)例如:1. “安徽“ & “ 合肥“ = “安徽合肥“2. 在文本框 Text1 和 Text2 中分别输入
3 和 4 ,则表达式 Text1.Text+Text2.Text 的值为“ 34” 而不是 7 。这是因为 Text 属
性的类型是字符型,而不是数值型。
Visual Basic
程序设计
■
逻辑运算A B Not A A And B
A Or B A Xor B A Equ B A Imp B
F F T F F F T T
F T T F T T F T
T F F F T T F F
T T F T T F T T
注: 1. A 、 B均为逻辑表达式。如果是数值,则其值非零时看作 True ,值为零时看作 False 。例如:表达式 4>3 And 5>4 的值为 True
2. F - False , T - True
Visual Basic
程序设计
■
按位运算A B not A A and B A or B A xor B
0 0 1 0 0 0
0 1 1 0 1 1
1 0 0 0 1 1
1 1 0 1 1 0
例: A 1010 not A 0101 A or B 1110
B 1100 A and B 1000 A xor B 0110
Visual Basic
程序设计
■
运算的优先级
算术运算^ → - (负)→ * / →
\ → mod →+ - (加减)
连接运算 &
比较运算 < <= = > >= 均同级
逻辑运算 not→and→or → xor→equ→imp
Visual Basic
程序设计
■
例表达式 值 表达式 值
5+3^2 20\7
2*3=6 and 5>2*2
#8/1/2008# +7
“6=“ & “1+2+3“
Len(“Let’s go!”)
8=5 or not 3>2
“abc”>”ABC”
Int(7.65432) 8 mod 3
14
True
6=1+2+3
False
7
2
2008-8-8
9
True
2
Visual Basic
程序设计
■
VB 内置函数 VB 内置函数是可以直接使用的函数 内置函数是调用内部子程序后 返回的
结果,称为函数的值。此值的类型称为函数的类型。
不同的函数有不同的参数,要注意每种函数所带参数的个数和类型。
函数可以直接放在表达式中,为数据处理带来很大方便。
Visual Basic
程序设计
■
数学函数 三角函数 : 用弧度
Cos(x), Sin(x), Tan(x), Atn(x) 单位:弧度sin2 35° 表示为 sin(35*3.1416/180)^2
对数 :Log(x), 指数 :Exp(x) ( 以 e 为底 ) 平方根 : Sqr(x) 绝对值 : Abs(x) | x-y | 表示为 : abs(x-y) 取整 : Int(x) 取≤ x 的最大整数
Fix(x) 取 x 的整数部分
符号函数 Sgn : Sgn(x)=
VB 内置函数
{-1 当 x < 00 当 x = 01 当 x > 0
Visual Basic
程序设计
■
数学函数的应用实例1. ∵ Tan(π/4)=1
π∴ = 4*Atn(1) = 3.14159265358979可用于定义常量:Const PI= 4*Atn(1)
2. e = exp(1) = 2.71828182845905
π = 4 * Atn(1)
e = Exp(1)
Visual Basic
程序设计
■
随机函数 (伪)随机函数 Rnd : 产生 0~ 1 之间
的 1 个随机数, 0 < Rnd < 1 随机函数在测试、模拟、游戏等程序中有 广泛应用。例如,要产生一个1~ 6 之间的随机整数,可以用表达式:
Int(Rnd*6)+1 Randomize 语句:产生随机数的种子,
从而改变随机数序列。
VB 内置函数
Visual Basic
程序设计
■
日期时间函数 不带参数:
日期函数 Date 和 Date$ 取系统日期 时间函数 Time 和 Time$ 取系统时间 日期和时间函数 Now 取系统日期和时间当天已过时间总秒数 Timer
带参数(日期型表达式): Year , Month , Day 分出年月日 Weekday 算出星期几 Hour , Minute , Second 分出时分秒
VB 内置函数
Visual Basic
程序设计
■
字符串函数( 1 )
取子字符串 : Left 函数:取左边 n 个字符,如
Left(“Basic”,3)=“Bas” Right 函数:取右边 n 个字符,如
Right(“Basic”,2)=“ic” Mid 函数:取中间 n 个字符,如 :
Mid(“Basic”,2,3)=“asi” , Mid(“Basic”,2)=“asic”
取长度(字符数)函数 Len ,如 Len(“Go!”)=3
VB 内置函数
Visual Basic
程序设计
■
字符串函数( 2 ) 求子串位置 InStr ,如
InStr(“Welcome” ,” come”) = 4
转换函数: 求值 Val ,取前面可作数值的字串转换,如
val(“1.23mm”)=1.23而 val(“1.23e2abc”)=1.23e2=123
数值转字符 Str : Str(12.3)=“12.3”代码→字符 Chr :例如 Chr$(65)=“A” 字符→代码 Asc : 例如 Asc(“A”)=65
注:中文 VB 使用双字节的 Unicode码
VB 内置函数
Visual Basic
程序设计
■
字符串函数( 3 ) 空格函数 Space(n) ,返回 n 个空格 字符重复函数 String(n,c) ,返回 n 个
字串 c 的第一个字符大小写转换函数: Lcase(s) 转换为小写 Ucase(s) 转换为大写
VB 内置函数
Visual Basic
程序设计
■
转换函数和判断函数转换函数 Cint , CLng , CSng , CStr ,…
注意其命名法: C+ < 类型缩写 >判断函数
IsNumeric( 表达式 ) 判是否数值,布尔型 IsEmpty( 变量 ) 判是否空值,布尔型 IIf(条件,值 1 ,值 2)Typename( 表达式)返回表达式的类型名 IsDate ( 表达式)判是否日期,布尔型
VB 内置函数
Visual Basic
程序设计
■
格式转换函数 函数格式:
Format(< 表达式 >,< 格式字串 >)功能:将表达式的值按指定格式进行转
换。 例:
Format(1.2,”00.000”) =” 01.200”Format(Date,”yy.m.d”) =” 05.3.8”
VB 内置函数
Visual Basic
程序设计
■
语句的书写格式 一般情况下,每行一条语句 一行多条语句之间用冒号 ( : ) 作分隔符,如
a=1 : b=2 : c=3 长语句分多行书写是,可在换行前加续行符
(下划线 _ ),例如:MsgBox “Sum Of 1 , 2 , 3 ,…, 100 is “ _
& vbcrlf & x , vbInformation 注释部分以单引号 ( ‘ ) 开头,止换行