第 四 章 数据类型、运算符和表达式
DESCRIPTION
第 四 章 数据类型、运算符和表达式. 数据类型 常量和变量 变量的作用域 常用内部函数 运算符与表达式 枚举类型. 数据类型. 基本数据类型( P 51 表 4-1 ) 1 、字符串( string ) ASC Ⅱ 码字符表示(注意 1 个汉字占两个字节) 2 、数值型 整数: 整型 integer ( 2 )、长整型 long ( 4 ) 浮点数(实型数): 单精度 single ( 4 )、双精度 double ( 8 ) 3 、货币型 currency ( 8 ). 数据类型. 4 、变体 型( Variant ) - PowerPoint PPT PresentationTRANSCRIPT
第四章 数据类型、运算符和表达式
• 数据类型• 常量和变量• 变量的作用域• 常用内部函数• 运算符与表达式• 枚举类型
数据类型基本数据类型( P51 表 4-1 )1 、字符串( string )ASCⅡ 码字符表示(注意 1 个汉字占两个字
节)2 、数值型整数:整型 integer ( 2 )、长整型 long
( 4 )浮点数(实型数):单精度 single ( 4 )、双精度 double ( 8 )3 、货币型 currency ( 8 )
数据类型4 、变体 型( Variant )5 、其他类型字节 byte ( 1 )布尔型 boolean ( 2 )日期型 date ( 8 )对象型 object ( 4 )Decimal 型 ( 12 )
数据类型6 、用户定义的数据类型 ( 记录类型 , 一般用于标准模块)Type 数据类型名 (窗体模块中定义,须加上 private) 数据类型元素名 AS 类型名 ….End type举例如下Type Employee
Name as string*6Age as integerSex as string*2Nationality as string*4
End type
常量和变量 常量在程序执行期间值保持不变的量叫常量1 、文字常量
字符常量,如“ Visual Basic “,”23”
数值常量 , 有整型数、长整型数、浮点数、货币数① 整型数,有十进制数、十六进数、八进制数十进制数 如 12 , -13 (范围 -32768~32768 )十六进制数,如 &h76,&h34f( 前面冠以 &h)
范围( &h0~&hffff)
常量和变量八进制数,如 &o347 (前面冠以 &o 或 & )范围 &o0~&o177777
②长整型数十进制数,如 34556
范围 -2147483648~2147483647
十六进制数,如 &h567&( 以 &h 开头, & 结尾)八进制数,如 &o347&( 以 &o 开头, & 结尾)③ 货币型数 8 字节数值型
常量和变量④浮点数由尾数、指数符号、指数部分三部分组成,如235.988E-7 (单精度)相当于
0.000000235988
2.345d+39 (双精度)还可以用类型说明符来表示% 整型数 & 长整型数! 单精度浮点数 # 双精度浮点数@ 货币型数 $ 字符串
常量和变量• 符号常量定义: const 常量名 = 表达式注意: 1 、定义时,常量名后要加上类型说明符,如 const xx%=100
const pai!=3.1415926
2 、使用时直接写常量名,不写类型说明符,如:
s=pai*5*5
3 、程序中变量名不能与常量名同名
常量和变量• 变量1 、命名规则 只能由字母、数字和下划线组成 名字的第一个字符必须是英文字母 名字的有效字符为 255 个 不能用 VB 的保留字作为变量名,但可以嵌入其中举例: sub; m1; q(w); a4 b5; a4b5_1
4ab; sin; ssub; *r1
常量和变量2 、变量定义① 用类型说明符标示②declear 变量名 as 变量类型Declear 可以是:Dim (用于标准模块、窗体模块或过程)Static (用于过程)静态变量Public (用于标准模块)全局变量Private (用于私有过程)局部变量③ 用 def type 字母范围如 defdbl l-p
数据类型记录类型变量定义同前,但使用要用“变量 . 元素”格式引用,如可以在程序中使用自定义类型 Employee 的变量
wang
Dim wang as Employee
Wang.Name=“ 王大力”Wang.Age=20
Wang.Sex=“ 男”Wang.Nationality=“ 汉”
变体类型变量1 、变体变量的定义显示定义或默然定义,如Dim x as variant
Dim x
2 、变体变量的赋值根据赋值不同,自动更改数据类型X=8 ; x=“abcd” ; x=3.14 ; x=#04/3/2014#
3 、变体变量的内部表示 可用 vartype() 函数测定,如: vartype(x)
变量的作用域
变量的作用域P58 表 4.3 变量的作用域
名称 作用域 声明位置 使用语句
局部变量 过程 过程中 Dim 或 static
模块变量 窗体模块及标准模块
模块的声明部分
Dim 或private
全局变量 整个应用程序
标准模块的声明部分
Public 或global
变量的作用域模块级的变量声明的方法是:在代码窗口的“对象”框中选“通用”,“过程”框
中选“声明”局部变量可以采用默然声明的办法① 不用 dim 定义直接使用② 用类型说明符( % ,&,!,#,$,@ )来表示默然声明有时会造成歧义全局变量、模块级变量必须显式声明通过“选项”可以强制用户对变量进行显式声明
常用内部函数部分转换函数
函数 功能
chr(x) 把 x 的值转化为字符
val(x$) 把 x$ 转化为数字
cint(x) 把 x 的小数部分四舍五入,化成整数
clng(x) 把 x 的小数部分四舍五入,化成长整型数
csng(x) 把 x 的值化成单精度数
常用内部函数部分数学函数
函数 功能
sin(x) 返回 x 的正弦值
cos(x$) 返回 x 的余弦值
abs(x) 返回 x 的绝对值
sgn(x) 返回 x 的符号,即 当 x 为正时,函数为 1 ; x 为负时,函数为 – 1; x 为 0 时,函数为 0
sqr(x) 返回 x 的平方根, x 必须 >=0
常用内部函数部分字符串函数
函数 功能
left(x$,n) 取 x$ 左部的 n 个字符
right(x$,n) 取 x$ 右部的 n 个字符
mid(x$,p,n) 从 p 开始,取 x$ 左部的 n 个字符
len(x$) 取 x$ 的字符长度
instr(p,x1$,x2$) 从 p 开始 , 查找 x2$ 在 x1$ 中出现的位置
常用内部函数部分其他函数
函数 功能
day(now) 返回当前的日期
weekday(now) 返回当前的星期
month(now) 返回当前的月份
year(now) 返回当前的年份
Rnd((x) 产生一个单精度的随机数( 0 到 1 之间)
运算符与表达式算术运算符及级别① 指数( ^) ②取负( - ) ③乘、浮点除( *,/ )④ 整除( \ ) ⑤取模( mod )⑥加、减( +,-)⑦字符连接( & )注意:按级别计算,括号优先 指数运算用来计算乘方和方根,如 8^(1/3) 浮点除同标准除法 整除的结果被截断为整数,不进行舍入处理,如操作
数 有小数,先舍入为整数后再操作。 算术运算符“ +”也可以字符串连接,最好用 &
运算符与表达式关系运算符=, <>,<,>,<=,>=,like,is运算结果为布尔类型的值,真或假, VB 中用 -1,0 表示注意: 1 )小心浮点数的关系运算。如 1.0/3.0*3.0=1.0 结果为 ? Abs(1.0/3.0*3.0-1.0)<1e-5 结果为 ? 2 )数学上的 a<=x<b 应该写成下面的形式 a<=x and x<b 3) 同一程序在 .exe 文件中和 VB集成环境中运行结果有可能因为精度问题而结果不同。
运算符与表达式4 )字符串数据按其 ascⅡ码值比较,先比较
第 1 个字符,如相同,再比较第 2 个,余此类推。逻辑运算符1 ) not ( 非 ) (口诀:取反)如 Not (3>8) 结果为 – 12 ) and ( 与) (口诀:全真才是真),如 ( 3>8) and (5<6) 结果为 03 ) or (或) (口诀:有真即是真),如 (3>8) or (5<6) 结果为 -1
运算符与表达式4 ) xor (异或) (口诀:全真全假才是假),如 (3<8)x or (5<6) 结果为 05 ) eqr (等价) (口诀:全假全真才是真),如 (3<8)x or (5<6) 结果为 -16 ) imp (蕴含) (口诀:一真二假才是假),如 (3<8)x or (5<6) 结果为 0 逻辑运算的运算顺序:Not ;and;or; xor; eqr; imp 数值进行逻辑运算时,要化成( 16 位或 32 位)二
进制进行,如 63 and 16 结果为 16
运算符与表达式表达式的运算顺序 先“算术”,后“比较”,再“逻辑”注意: 1 )括号改变执行顺序; 2 )字符串连接运算符 & 在算术运算之后; 指数和负号相邻时,负号优先; 3 )乘号不能省略, ab 应写成 a*b
4 )运算符不能相连,应用括号分开 5 )表达式中只能用圆括号 6 )指数运算中注意用括号,如 (3*a)^(c/d)
枚举类型 当一个变量只有几种可能的值时,可以定义为枚举类型,如星期,月份,职称。定义格式如下:[Public| private] Enum 类型名称 成员名 [= 常数表达式 ] …….End Enum 常数表达式可以省略,默认情况下,枚举中的第 1
个常数被初始化为 0 ,其后的常数比前一个常数的值大 1 ,但也可以用赋值语句显式地初始化常数。
枚举类型一个枚举变量 workdays 的例子Public enum workdays
Saturday ‘休息日Sunday=0 ‘休息日MondayTuesdayWednesdayThursdayFridayInvalid =-1
End enum
第四章窗体与输入输出• 语句• 窗体• 数据输出• INPUTBOX 函数• MSGBOX 函数和 MSGBOX 语句• 字形• 打印机输出• 源程序代码打印
语句多句一行 用冒号 (:)隔开多行一句 用下划线 (_) 作为续行符1 、赋值语句目标操作符 =源操作符先计算右边的源操作符值,然后把结果赋值给左边的目标操作符Text1.Text=str$(total)
X1=val(Text1.Text)
目标操作符和源操作符的数据类型必须一致2 、注释语句’注释内容 一般放在语句的右边 或 REM 注释内容 一般单独作为一句注释语句不能放在续行符的后面
语句3 、暂停语句格式 STOP
暂停程序的执行,类似于运行菜单中的“中断”命令注意:在解释系统中,该语句保持文件打开,不退出
VB环境。在可执行文件( .exe )中,该语句将关闭所有文件
4 、结束语句格式: END
结束一个程序的执行程序中没有 END 语句或者没有执行到 END 语句,程序不能正常结束,需要执行”运行“菜单中的”结束“命令
窗体• 窗体的结构与属性窗体 ----FORM
系统菜单 ----ControlBox
标题栏 ------Caption
最大化 -----MaxButton
最小化 -----MinButton
窗体属性的设置有的只能通过属性窗口设置 -------“ 只读属性”有的只能通过程序代码设置窗体的部分属性:1 、 autoredraw( 自动重画 )
2 、 backcolor( 窗体背景 )
窗体3 、 borderstyle(边框类型 )
只读属性4 、 caption( 标题 )
5 、 controlbox(控制框 )
6 、 enabled(允许 ) 窗体是否可以被激活7 、字体属性设置8 、 forcolor( 前景颜色 )
9 、 height,width(高、宽 )
10 、 icon(图标 )
设置窗体最小化时( windowstate=1) 显示的图标,一般用图标文件( .ico 格式)
用程序代码设置时,用 loadpicture() 函数
窗体11 、 maxbutton,minbutton(最大化、最小化按钮)这两个属性只在运行期间起作用12 、 name( 名称 ) 只读属性13 、 picture(图形 )
在对象中显示一个图形,注意它与 icon属性的区别14 、 top,left(顶边,左边位置 )
15 、 visible (可见性)这个属性只在运行期间起作用16 、 windowstate (窗口状态)设置值 0 , 1 , 2
设置标准状态,程序运行时,窗体实际大小取决于width,height
窗体• 窗体事件1 、单击事件( click )2 、双击事件( dblclick )3 、装入事件( load)
用于初始化,窗体装入后自动触发该事件。4 、卸载事件( unload)
从内存中清除窗体或关闭窗体时触发该事件5 、活动事件、非活动事件( activate,deactivate)
窗体变为活动或非活动窗口时,分别执行上述事件6 、绘画事件( paint ) 窗体被移动或放大时,或者窗体移动时覆盖了一个窗体时,触发该事件
数据输出• Print 方法格式: [ 对象名称。 ]print [ 表达式 ][ , | ; ]
数值表达式,打印出表达式的值;字符串则照原样输出多个表达式要用分隔符隔开采用逗号,按分区输出格式显示( 14 个字符位置);采用分号或空格,按紧凑输出格式显示输出数值数据时,数值的前面有一符号位,后面有一空格该方法具有计算和输出双项功能在同一行显示时加逗号,下一个分区段显示;加分号,紧接着显示
数据输出• 与 print 方法有关的函数1 、 TAB 函数格式: TAB ( N )在 PRINT 语句中使用,将光标移动到指定列号 N 位置打印2 、 SPC 函数格式: SPC ( N )在 PRINT 语句中使用,将光标跳过 N 个空格后打印3 、空格函数格式: SPACE$(N)
在当前位置输出 N 个空格注意三者的区别
数据输出4 、格式输出函数格式: format$( 数值表达式,格式字符串 ) 功能:按“格式字
符串”指定的格式输出“数值表达式”的值格式字符串是由格式说明符组成,见下表
字符 作用 字符 作用# 数字,不在前后补
0% 百分比符号
0 数字,在前后补 0 $ 美元符号
. 小数点 -+ 负、正号
, 千分分隔逗点 E+E- 指数符号
数据输出• 其他方法和属性1 、 CLS 方法格式: [ 对象。 ]clsCls清除由 print 方法显示的文本或在图片框中显示的图形2 、 move 方法格式: [ 对象 .]move 左边距离 [ ,上边距离 [ ,宽度 [ ,高
度 ]]]应用该方法时要特别注意对象,以谁为基准3 、 textheight 和 textwidth 方法返回文本字符串的高度和宽度CurrentX CurrentY 返回和设置下一次输出位置的水平或垂直坐标Scalewidth scaleheight 窗体宽度和高度Screen.width screen.height 屏幕的宽度和高度
Inputbox 函数该函数用于产生一个对话框,作为输入数据的界面,等待用户输入数据,并返回所输入的内容。
格式:inputbox$(prompt[,title][,default][,xpos,ypos]
[,helpfile,context])
Prompt 输入提示Title 对话框标题Default 预输入的默认值Xpos,ypos 对话框的左角坐标,要么全部给出,要么全部省
掉 Helpfile 帮助文件的名字,要么全部给出,要么全部省掉 Context 帮助目录号,要么全部给出,要么全部省掉
举例
Msgbox 函数和 Msgbox 语句1 、 Msgbox 函数
格式: msgbox(msg[,type,][,titls][,helpfile,context])
( 1 ) Msg 对话框中的显示字符(最大 1024 个),自动换行
( 2 ) Type
由四类数值(表 4-4 )相加产生,确定对话框中显示的按钮类型、图标种类和活动按钮的位置
0~5 为第 1 类; 16 , 32 , 48 , 64 第 2 类;0 , 256 , 512 , 768 第 3 类
( 3 ) Title
对话框的标题• Helpfile,context
帮助文件的名字及帮助目录
Msgbox 函数和 Msgbox 语句2 、 Msgbox 语句
格式: msgbox 字符串
举例Msgbox” 文件已保存“注意:出现这种信息框后,必须作出选择,否则不能进行其他操
作,这种窗口叫做“模态窗口”
字体和打印1 、字体( 1 )字体类型和大小设置( 2 )字体其他属性2 、打印机输出( 1 )直接输出( 2 )窗体输出 printform
3 、源程序代码打印( 1 )直接打印( 2 )间接打印