1、第二章 VB语言基础,2.1 基本数据类型2.2 变量与常量2.3 运算符和表达式2.4 常用内部函数2.5 VB程序书写格式,2.1 基本数据类型,数据类型是高级语言的一大特点,不同类型的数据具有不同的存储形式,允许各自的运算方式,具有不同的取值范围。VB允许使用的数据类型有两大类:基本数据类型系统定义数组和自定义类型(记录)用户定义,1.基本数据类型,1.数值型(Numeric)Integer、Long、Single、Double、Currency、ByteInteger、Long和Byte按定点形式存储的纯整数,准确表示Single、double按浮点形式存储,包括尾数和阶码,近似表示C
2、urrency按定点形式存储,再除以10000,4位小数,近似表示,2.日期型(Date)日期型按8字节浮点形式存储,能表示的最小日期为100年1月1日,最大日期为9999年12月31日表示:用#围住的日期和时间字符#January,1997#;#1 Jan,97#;#5/12/98#;#1998-5-12 12:30:25 PM#等实数小数点左边为日期,右边为时间。负数表示1899年12月31日之前;中午12时为0.5 3.逻辑型(Boolean)True -1 (非0数视为True)False 0(0视为False),4.字符型(String)存储:按Unicode码形式存储,每个字符占2
3、字节表示:用双引号括住的0个或多个字符,若字符串中含有双引号,则用两个双引号表示一个双引号“abcd” “26669543” “I say ”Good Morning” 5.对象型(Object)用4字节表示对象的地址,可用Set语句引用对象 6.变体型(Variant)所有未定义变量的缺省数据类型,根据上下文确定其类型,用varType()检查其真实类型,2.2 变量与常量,1.变量和符号常量的命名规则,以字母或下划线开头,后跟字母、数字或下划线,长度小于等于255个字符(汉字视为字母); 不能与VB中的关键字(保留字)同名; VB中不区分变量名的大小写; 为了增加程序的可读性,可在变量名前
4、加一个缩写的前缀来表明该变量的数据类型,前缀并不代表变量的数据类型,只为了便于阅读。 例: strMystring,iCount,sngMax,lX_y_z,dtYear,fTorF,变量名,(1)用Dim语句显式定义变量形式: Dim 变量名 AS 类型 Dim 变量名类型符 例 Dim iCount As integer, sngAllsum As variantDim iCount%, sngAllsum! (2)隐式说明变量在使用前不事先定义,称为隐式说明。隐式说明的变量可以用类型后缀来说明其数据类型若隐式说明的变量也未加类型后缀,则默认Variant型 例: print b% b%被
5、认为是integer型的,输出0print a a被认为是variant型的,无输出 注意:(1)variant型变量根据上下文识别其数据类型,使用中可能出现意想不到的错误。为此,可在通用说明处加 Option Explicit 语句来强制显式定义变量(2)凡显式定义或隐式定义的有类型的变量,其初值为0,凡variant型变量均没有初值。,2.变量定义,(1)直接常量:其类型和值由书写形式确定例:1 32% 123& 整型常量&Hab 十六进制常量&0123 八进制常量1.23 123! 1e-3 单精度常量123.5# 1.2D-3 1e-3# 双精度型常量123.45 124 货币常量”1
6、2ABC” 字符串常量 True False 逻辑常量#2001/3/10# #1/2/2003 13:25# 日期时间常量 (2)符号常量用户定义的符号常量形式:Const 常量 AS 类型 = 常量表达式若省略 AS 类型 ,常量的类型由表达式值的类型决定例: Const PI As Single = 3.14159 或 Const PI = 3.14159,3.常量,实数示例,系统定义的符号常量系统定义常量位于对象库中,可查看“对象浏览器”中的Visual Basic、Visual Basic for Application、Microsoft Project等。例:窗体控件的Windo
7、wsState属性设置vbNormal 表示正常窗口(等价0)vbMinimized 表示极小化窗口(等价1)vbMaximized 表示最大化窗口(等价2)表示颜色的符号常量QB():符号常量 十六进制表示 含义vbBlack &H0& 黑色 vbRed &HFF& 红色vbGreen &HFF00& 绿色vbYellow &HFFFF& 黄色vbBlue &HFF0000& 蓝色vbMagenta &HFF00FF& 紫红色vbCyan &HFFFF00& 青色vbWhite &HFFFFFF& 白色,2.3 运算符和表达式,2.3.1 运算符2.3.2 表达式,2.3.1 运算符,1.
8、算术运算符(设ia=3),运算符,注:乘方运算优于取负运算-62=-36 (-6)2=36 表示整除,低于乘除 52=2 5/2=2.5 Mod运算低于乘除和整除:a Mod b = a-(ab)+b6 mod 4=2 6 mod (-4)=2 -6 mod (-4)=-2 -6 mod 4=-2 2. 日期运算符 + -两个日期相减表示这两个日期之间相差的天数例如: #02/11/2004# - #02/10/2004# =1 一个日期加减一个整数,表示从该日期向后或向前推算后的日期#02/11/2006# - 1 结果为#02/10/2006# #02/11/2006# + 1 结果为#0
9、2/12/2006#,3. 字符串运算符& 运算符强制进行字符串连接,即总是先将运算符两边的数据转换成字符串,然后进行连接例如: “abcdef“ & 12345 结果为 “abcdef12345“123 & 456 结果为 “123456“+ 运算符根据两边的数据类型确定是字符串连接还是数字相加当+连接两个字符串时,进行连接运算;当+连接两个数值量或一个数字字符串和一个数值量时,进行加法运算;当+连接一个非数字字符串和一个数值量时,出错。例如: “123“ + “456“ 结果为 “123456“123“ + True 结果为122“123“ + 123 结果为246“abcdef“ + 1
10、2345 出错,4关系运算符 将两个操作数进行大小比较,结果为逻辑量 所有的关系运算符处于同一优先级。,5. 逻辑运算符 将操作数进行逻辑运算,结果为逻辑值或数值,当两个操作数均为数值时,按二进制值进行位逻辑运算。例:用c1 And 7可以取c1变量中的最后3位;用c1 or 7可以将c1最后三位置1,用运算符连接运算量得到的合理的式子。表达式中可包含变量、常量、函数、运算符和圆括号 1.不同数据类型的转换算术运算中,不同类型的操作数进行运算时,运算结果的数据类型向精度高的数据类型转换:Byte字符运算符关系运算符逻辑运算符 3. 书写规则所有运算符和运算量写在同一行,乘号不能省略 只能用圆括
11、号,可以嵌套,但必须配对使用x2*3/4+y4 Mod 6,2.3.2 表达式,2.4 常用内部函数,1.数学函数(函数参数为数值量)2.转换函数3.字符串编码及操作函数4.日期函数5.格式输出函数6.Shell函数,1. 数学函数,2. 转换函数,对Round(N,N1)的说明:若N1=0或省略N1,表示舍入为整数?Round(25.536,0) 结果为26?Round(25.496) 结果为25?Round(24.536,0) 结果为25通常采用四舍五入的原则?Round(4.51) 结果为5 (四舍五入)?Round(3.51) 结果为4 (四舍五入) 但当舍去的部分正好是5时,则根据它
12、前面的数是偶数或奇数,采用“偶舍奇入”的原则。这样作的优点是减少舍入误差。?Round(12.125,2) 结果为12.12 (偶舍)?Round(12.135,2) 结果为12.14 (奇入)?Round(4.5) 结果为4 (偶舍)?Round(3.5) 结果为4 (奇入),DBCS码(双字节字符集):西文用ASCII码,占1字节,在计算字符个数时按1个字符计数;中文用2字节编码,在计算字符个数时按2个字符计数(Windows系统采用的编码) Unicode码(ISO字符标准):所有字符均占2字节,在计算字符个数时均按1个字符计数。为了保持与ASCII码兼容,西文字符的首字节为0(VB系统
13、采用的编码) (1) 字符串编码转换函数 StrConv(C1,VbFromUnicode)将字符串C1中的字符由Unicode码转换成DBCS码 StrConv(C1,VbUnicode)-将字符串C1中的字符由DBCS码转换成Unicode码s1$=“VB教程”: ? s1 VB教程s2$=strconv(s1,vbfromunicode): ? S2: ? (乱码)s3$=strconv(s2,vbunicode): ? S3 VB教程,3.字符串编码及操作函数,(2) 字符串操作函数,4.日期函数,增减日期:DateAdd(日期形式,增减量,日期变量) 间隔日期:DateDiff(日期
14、形式,日期1,日期2) 日期形式 yyyy q m y|d|w ww h n s 含义 年 季 月 日 周 时 分 秒,Print Now 2006-3-10 Print DateAdd(“ww”,2,Date) 2006-3-24 Print DateAdd(“m”,2,Date) 2004-5-10 Print DateAdd(“q”,1,Date) 2004-6-10 Print DateAdd(“yyyy”,2,Date) 2008-3-10 Print DateDiff(“d”,Date,#2007/6/30#) 477,形式:Format$(表达式,格式字符串) 作用:用在prin
15、t语句中,将数值、日期、字符串、货币等数据按指定的格式输出。 (1) 数值格式输出 符号 作用 数值表达式 格式字符串 显示结果 0 实际数字小于符号位数, 1234.567 “00000.0000” 01234.5670数字前后加0 1234.567 “000.00” 1234.57 # 实际数字小于符号位数, 1234.567 “#.#” 1234.567数字前后不加0 1234.567 “#.#” 1234.57 . 加小数点 1234 “0000.00” 1234.00 , 千分位 1234.567 “#,#0.0000” 1,234.5670 % 数值乘以100,加“%” 1234.
16、567 “#.#%” 123456.7% $ 在数字前强加“$” 1234.567 “$#.#” $1234.57 + 在数字前强加“+” -1234.567 “+#.#” +-1234.57 - 在数字前强加“-” 1234.567 “-#.#” -1234.57 E+ 用指数表示 0.1234 “0.00E+00” 1.23E-01 E- 用指数表示 1234.567 “.00E-00” .12E04,5.格式输出函数,(2) 日期和时间格式输出 符号 作用 符号 作用 d 显示日期(131,个位前不加0) w 显示星期(数字17) dd 显示日期(0131,个位前加0) ww 显示一年中
17、的第几星期(153) ddd 显示星期缩写(SunSat) q 显示第几季度(14) dddd 显示星期全名(SundaySaturday) h 显示小时(023,个位前不加0) ddddd 显示完整日期(年-月-日) hh 显示小时(0123,个位前加0)相当于格式yyyy/m/d m 显示分(059,个位前不加0) m 显示月份(112,个位前不加0) mm 显示分(0059,个位前加0) mm 显示月份(0112,个位前加0) s 显示秒(059,个位前不加0) mmm 显示月份缩写(JanDec) ss 显示秒(0059,个位前加0) mmmm显示月份全名(JanuaryDecembe
18、r) y 显示处于一年中的第几天(1365) AM/PM(am/pm) 显示12小时时钟 yy 显示年份(二位数) A/P(a/p) 显示12小时时钟 yyyy 显示年份(四位数) ttttt 显示完整时间(时、分、秒)相当于格式hh:mm:ss 说明:格式说明符中表示年月日的分隔符可以是-或/,但显示时,年月日固定用-分隔,表示时间的分隔符是:。若用其他符号分隔,则照原样显示。,(3)字符串格式输出 符号 作用 字符串表达式 格式字符串 显示结果强迫以大写显示 “Hello” “” HELLO 实际字符位数小于符号位数时,字符前加空格 “ABCDEF” “” ABCDEF & 实际字符位数小
19、于符号位数时,字符前不加空格 “ABCDEF” “&” ABCDEF,格式显示演示,【例3.1】利用Format函数显示有关的日期和时间 Private Sub Form_CLICK() FontSize=12MyTime = #9:21:30 PM#MyDate = #7/21/97#Print Format(MyDate, “m/d/yy“)Print Format(MyDate, “mmmm-yy“)Print Format(MyTime, “h-m-s AM/PM“)Print Format(MyTime, “hh:mm:ss A/P“) 显示系统当前日期和时间Print Format
20、(date,“yyyy年m月dd日 hh:mm“) 以系统预定义的格式 显示系统当前时间Print Format(Date,“dddd,mmmm,dd,yyyy“) End Sub,在VB环境中,用Shell函数可以直接调用能在DOS或Windows下运行的应用程序(.bat、.com或.exe文件)。形式: Shell(命令字符串,窗口类型)命令字符串是可执行文件名,包括路径窗口类型:通常取04及6,表示打开程序窗口的状态0(vbHide) 窗口被隐藏,且焦点会移到隐式窗口1(VbNormalFocus) 正常窗口,有焦点2(VbMinimizedFocus ) 窗口被最小化为图标,有焦点3
21、(VbMaximizedFocus) 窗口被最大化,有焦点4(VbNormalNoFocus) 正常窗口,没有焦点6(VbMinimizedNoFocus)或缺省 窗口被最小化为图标,没有焦点函数的返回值是调用程序的标识号(整数)调用形式: Shell(命令字符串,窗口类型),Shell示例,6.Shell函数,j=Shell(“c:program filesmicrosoft officeoffice10winword.exe“,1),i=Shell(“c:winntsystem32calc.exe“,1),1.语句书写自由一行可书写几条语句,各语句之间用冒号分隔一条语句可分若干行书写,用续
22、行符(空格+下划线)连接一行=255个字符 2.不区分字母的大小写系统保留字(所有的命令动词、数据类型说明符、函数名、运算符等)自动转换每个单词的首字母大写用户自定义的变量或过程名,以第一次定义为准 3.注释行用于程序的阅读、维护和调试形式:Rem 注释字符串 注释字符串 4.可以使用行号(数字)与标号(以字母打头,冒号结束)。,程序书写,3.5 VB程序书写格式,本章重点,1. 掌握不同类型数据的表示方法(类型关键、类型符、各种类型直接常数的书写)2. 掌握变量和符号常量的命名规则3. 掌握表达式(算术、字符、日期、关系、逻辑)的书写规范和计算规则4. 初步掌握常用内部函数的使用(数学、日期、字符串、转换、格式输出、Shell函数),