null第4章 数据、表达式与简单程序设计第4章 数据、表达式与简单程序设计本章主要内容本章主要内容
4.1 Visual Basic 程序代码的组织方式
4.2 代码行的书写规则
4.3 Visual Basic的数据类型
4.4 运算符与表达式
4.5 Visual Basic 公共函数4.1 Visual Basic 程序代码的组织方式4.1 Visual Basic 程序代码的组织方式VB 程序由窗体界面和程序代码组成
程序代码的作用:将窗体界面的各个对象以及应用中的其他元素联系在一起
程序代码的组成:由若干个被称为 “过程” 的代码行以及向系统提供某些信息的
组成。过程及说明又被组织在所谓的“模块”之中。
程序代码的目标:就是将设计的过程及相关说明合理地组织到不同的模块之中,形成所需要的实际代码的结构null一、过程
所谓"过程",就是具有特定书写格式,包含若干可被作为一个整体执行的代码行的一个代码组。
根据执行的方式,过程可以分为 “事件过程” 和 "通用过程"两类。null1﹒事件过程
是VB程序中最基本的过程,由VB中的事件调用
为窗体以及窗体上的各种对象编写的用来响应由用户或系统引发的各种事件的代码行就是“事件过程”。事件过程存储在 "窗体模块" 文件中 (扩展名为 .frm),缺省情况下是 "私有的" (Private)
VB系统自动提供事件过程的代码框架
2﹒通用过程
一个应用中的多个窗体可以共享一些代码,或者一个窗体内不同的事件过程可共享一些代码。这些可被共享的代码构成的过程被称为“通用过程”。
通用过程是由事件过程或其他通用过程调用而执行的
通用过程在缺省情况下,是"公有的" (Public),通用过程可以被所有窗体共享null二、模块
模块是VB用于将不同类型过程代码组织到一
起而提供的一种结构。
VB具有三种类型的模块:
窗体模块
模块
类模块null1﹒窗体模块
应用程序的每个窗体都有一个对应的窗体模块
2﹒标准模块
标准模块中存放可被应用程序中多个窗体共享的代码
标准模块文件的扩展名是.bas
标准模块中保存的过程都是通用过程
3﹒类模块
类模块包含用于创建新的对象类的属性、方法的定义
等4.2 代码行的书写规则4.2 代码行的书写规则一、语句
语句是构成VB程序的最基本成分
语句的功能是:
向系统提供必要的信息
规定系统应该执行的操作
语句的一般形式是:
〈语句定义符〉 [语句体]
其中,语句定义符规定语句的功能;
语句体提供语句所要说明的具体内容或者要执行的具体操作null二、书写
VB 程序按行书写
一条语句可以写在一行上,也可以通过在行的末尾加上“续行标志”( _),而分写在多行上
在一个代码行上可以写多个语句,但语句之间需要用冒号“:”分隔。
VB 在输入代码时,可以不区分大小写字母null三、程序注释
1.Rem 语句
一般形式为: Rem <注释>
2.单引号
一般形式为: ′<注释>
例1:
Rem this is a example ‘注释
Dim x As Integer, y As Integer, _
z As Integer ‘续行
x = 15: y = 10: z = (x - y) * 34.3 Visual Basic 数据类型4.3 Visual Basic 数据类型数据是程序处理的对象
常量和变量是 VB 中最常见的两种数据
在 VB 中,凡是与数据有关的东西就与数据类型有关
VB 不仅可以处理各种数制的数据,而且具有丰富的数据类型null一、数据类型
VB支持的数据类型有12种(教材P43表4-1)
变体型数据是VB的缺省数据类型,它可以存储各种
类型的数据
既要合理使用数据类型,也要防止数据溢出null二、常量
常量是在程序中取值始终保持不变的数据
常量可以是具体的数值,也可以是专门说明的符号
VB中常量有如下五种:
数值常量
字符常量
逻辑型常量
日期常量
符号常量null1.数值常量
数值常量:由正负号、数字和小数点组成,正数的 正号可省略
不带小数点的数称为 "整数" 带小数点的数称为 "实型数" 或 "浮点数"
整数:整数和长整数
整数的八进制及十六进制表示方法:&O,&H
实型数(浮点数) :单精度数和双精度数
浮点数的指数形式 :mmmEeee, mmmDeee数值常量示例数值常量示例123 -227 32742 (整数)
1758624 -3765410 (长整数)
123.4 -752.678 0.000352 -0.01234 1.234E5 -9.654E6 1.234E-5 -9.654E-6 (单精度数)
3.1415926535 -5732.12345 3.14159265D8 -8.573264907D-15(双精度数)
&O137 表示这是一个八进制数137,它相当于十进制数95;
&H137 表示这是一个十六进制数137,它相当于十进制数311。null
2.字符常量
VB 中的字符常量由用引号括起的一串字符构成
字符常量容纳的字符数 (长度) 最多可达65535个
例如: "Visual Basic"、"How are you!"、"aBb"等都是合法的字符常量。
3.逻辑型常量
逻辑型常量(布尔型常量)只有两个取值:True (真) False (假)
4.日期常量
日期常量的一般表示形式是:#mm/dd/yyyy#
注意:为了与字符串型常量相区分,日期常量要用“#”括起来。如2003年2月15日可表示为: #2/15/2003#
null5 .符号常量
以符号形式表示的常量称为 "符号常量"
代表常量的符号称为 "常量名"
常量名的命名规则:只能由字母、数字和下划线组成且首字符必须是字母的字符串。 (长度 <= 255;不区分大小写)
自定义符号常量,应先用 Const 语句先行说明:
[Public|Private] Const <常量名> [As Type] = <数值>
如:const tax as single=1.05
public const country$=“china”,fax_num&=36134484null三、变量
变量是以符号形式出现在程序中,且取值可以发生 变化的数据
变量的作用是在程序执行期间保存数值
程序中的变量在任一时刻都有一个确定的值
变量有名字和数据类型:
变量名是用来引用该变量所含的值的名字
变量的数据类型确定变量可以存储的数据的种类null 变量名的命名规则:
首字符必须是字母;
长度不超过255个字符;
在作用域内必须唯一;
作为变量名的字符串内不得包括点号和用于类型 说明的字符 %、&、!、#、@、$以及运算符;
不得使用系统保留字 有时为了提高程序的可读性,可在变量名之前加上一个约定的前缀,用于表示变量的数据类型。nullnull
变量在使用之前,最好用变量说明语句说明其类型。
根据变量说明方式的不同,变量的有效作用范围也不同。变量的有效作用范围称为变量作用域。
1.变量的作用域
局部:在过程中说明,仅在说明它的过程中有效;
窗体/模块:在窗体和模块中说明,在定义该变量 的模块或窗体的所有过程内均有效;
全局(公有):在模块或窗体中说明,在工程内的 所有过程中都有效;
null2.变量的说明
变量在使用前必须在代码中进行说明,即创建该变量
说明变量有两种方式:显式说明和隐式说明
(1)显式说明:用说明语句来说明变量的类型null VB 提供四种说明语句来显式说明变量的类型:
Dim <变量名> As <类型> [, <变量名> As <类型> ] ···
Public <变量名> As <类型> [, <变量名> As <类型> ] ···
Private <变量名> As <类型> [, <变量名> As <类型> ] ···
Static <变量名> As <类型> [, <变量名> As <类型> ] ···
其中,Dim 语句用于各种场合
Public 语句用于说明全局变量
Private 语句用于说明窗体/模块级变量
Static 语句用于说明静态变量null显式说明的注意点:
显式说明变量之后,系统自动为该变量赋予一个初 始值
用Dim语句说明一个变量后,系统自动为该变量赋予一个初
始值。数值型初始值为0;字符串型变长初始值为空串,定长
字符串初始值为长度个空格。;逻辑型初始值为False。
在窗体模块中,定长字符串只能说明为 Private
null2)隐式说明:在变量名后加上一个用于规定变量类型的说明字符,来规定变量的类型
null(3)强制显式说明:Option Explicit 语句
在模块中使用该语句,当遇到未经说明的变量 时,就会发出错误警告
说明变量帮助使用者输入和使用正确的变量名
Option Explicit语句可使用以下方法输入:
激活代码编辑器窗口;
从对象列表中选“General”或(通用);
从过程列表中选“Declarations”或(声明);
在代码编辑栏中输入:
Option Explicit
4.4 运算符与表达式4.4 运算符与表达式VB中的运算符可以分为三类:
算术运算符(包括字符串连接运算符)
关系运算符
逻辑运算符
VB中的表达式也可以分为三类:
算术表达式(包括字符串表达式)
关系表达式
逻辑表达式null一、 算术运算符与算术表达式
1﹒算术运算符
VB的算术运算符有如下几种:
^(乘方) +(加)
-(减 (负号) ) *(乘)
/(除) \ (整除)
Mod(取余) & 和 + (字符串连接运算)
算术运算符的运算次序如下:
^ → – → * 和 / → \ → Mod → + 和 – → & 和 +负号连接整除null8\6=1;20\2.6=6;3.6\1.2=4;32.5\3.5=8
(操作数一般为整形,当操作数为小数时,VB先四舍五入为整形,再整除,结果只取整数部分,不作舍入)
8 Mod 6=2;20 mod 2.6=2;5 mod –2=1
(操作数若是整形,直接运算,当操作数为小数时,VB先四舍五入为整形,再求模,结果的符号取决于左操作数的符号) 32.5 MOD 3.5=0
& 字符串连接运算 例:"Visual" & "Basic" 结果是VisualBasic
null2﹒算术表达式
算术表达式:将常量、变量等运算元素用算术运算符 连接起来的式子
在算术表达式中,可用圆括号来改变运算次序
使用说明:
带有括号的算术表达式在运算时将优先进行括号内的运算
如有多层括号,则先进行最内层括号内的运算
计算时按照运算符的优先级从高到低进行计算;并列优先级的运算,则自左向右进行null a*b/(c*d)
3.14159265*r^2
(p*(p-a)*(p-b)*(p-c))null3﹒字符串连接运算符与字符串表达式
字符串连接运算:VB 中的字符串连接运算是将两个 表达式 (一般是字符串表达式) 连接 起来,生成一个新的字符串
(1)字符串连接运算符
VB中的字符串连接运算符包括 + 和 &
在使用 + 作为字符串连接时操作数必须为字符串;
而使用 & 作为字符串连接时则无此限制
(2)字符串表达式:值为一连串字符的表达式null"ab" + "cd“ abcd
"4" + "56" 456
4 + 56 60
"4" + 56 60
"4" & "56“ 456
4 & 56 456null二、关系运算符和关系表达式
关系运算(比较运算)用来比较两个表达式的大小
关系运算的结果为逻辑值 True 或 False
1﹒关系运算符
VB常用的关系运算符如下:
< 小于 | > 大于 | <= 小于等于 | >= 大于等于
< > 不等于 | = 等于 | Is 用来比较两个对象的引用变量
所有关系运算符的优先次序都相同 null2﹒关系表达式
关系表达式:用关系运算符把两个比较对象连接起来 的式子
a < 32,x + y >= z / 2,b$ <> "Basic“,object1 Is object2 等都是合法的关系表达式。
关系比较的对象可以是变量、常量和算术表达式
关系表达式的运算是采用 “按值比较” 的方法
字符型数据的关系运算是依照字符的ASCII代码,自左至右按照“逐个比较、遇大则大、长大短小,完全相同,才是相等”的原则进行。例如:
“aBcd” > “abc”的运算结果是False,因为字母“B”的ASCII代码小于字母“b”null三、逻辑运算符与逻辑表达式
逻辑运算(布尔运算)用于逻辑值之间的运算
1﹒逻辑运算符
Not :逻辑非
And :逻辑与
Or :逻辑或
Xor :逻辑异或
逻辑运算的优先次序是:
Not → And → Or → Xor
2﹒逻辑表达式
逻辑表达式:用逻辑运算符把关系表达式、逻辑变量和逻辑值连接起来的式子例如:
a >= 2 * 3.14159 * r AND x <> 5 OR NOT b (设b为逻辑变量)
x > 2 OR Text1.Text = "Microsoft"
等都是合法的逻辑表达式。null四、运算规则
1. 表达式运算的优先顺序:
括号→算术运算符→连接运算符→关系运算符→逻辑运算符
2. 运算结果的数据类型取决于两个运算对象的数据类型
如果进行运算的两个运算对象的类型相同,它们的运算结果也将是同一类型
如果进行运算的两个运算对象的类型不同,它们的运算结果是存储长度较长的类型
Long 数据和 Single 型数据运算,结果是 Double 型
除法运算的结果总是 Double型的4.5赋值语句4.5赋值语句赋值语句的一般形式是:
其中var表示某个变量名或属性名。当系统执行一个赋值语句时,将先求出赋值操作符”=”右边表达式的值,然后再把该值保存到”=”左边的变量中。这就是所谓的“赋值”。
使用赋值语句可使变量或某个对象的某属性获得一个新值。
使用赋值语句还可以获取一个对象返回的当前属性值。例如: var = object.propety var = <表达式> 赋值语句示例赋值语句示例x = "This is a flower"
number% = 72
Lable1.caption= "Filename is:"
Text1.Font.Size = 12 '改变字号
Y = (a + b )/2
不同数据类型数据的赋值不同数据类型数据的赋值图4-3 一个简单程序示例 图4-3 一个简单程序示例 null选择题(一):
1、窗体 Form1 的名称属性为 frm,它的 Load 事件过程名为___。
A. Form_Load B. Form1_Load
C. Frm_Load D. Me_Load
2、下面所列数据中,全部是正确的 VB 常数的是___。
A. 32768,1.34D2, "ABCDE",&O1767
B. 3276, 123.56, 1.2E-2, #True#
C. &HABCE, 02-03-2004,False, 3D-3
D. ABCDE, #02-04-2004#,2E-2
3、表达式 6.5*5 Mod 28 \ 8 的值是___。
A. 0 B. 1 C. 2 D. 3null4、表示“X>Y>Z”,正确的 VB 逻辑表达式是 。
A. X > Y And >Z B. X > Y > Z
C. X > Y Or Y > Z D. X > Y And Y > Z
5、下列语句中错误的是 。
A. M1% = x% \ 3 B. M2& = x% \ 3
C. M3& = "x%\3" D. M4$ = x% \ 3
6、窗体上有一个文本框控件 Text1,假设已存在三个 整型变量 a, b 和 c,且 a=5, b=7, c=12。以下的语句 可以使文本框内显示的内容为:5+7 = 12。
A. Text1.Text = a+b = c B. Text1.Text = "a+b=c"
C. Text1.Text = a & "+" & b & "=" & c
D. Text1.Text = "a" & "+" & "b" & "=" & "c"4.6 Visual Basic 公共函数4.6 Visual Basic 公共函数
公共函数:又称为内部函数,是由系统提供的,可在任何一个VB程序中随时使用的程序段。
每个公共函数都有系统规定的函数名
使用函数称为函数调用。函数调用
<函数名> (p1, p2, · · · )
其中,p1, p2, ...是调用函数时的自变量序列,自变量的个数、排列次序和数据类型,应和函数规定的参数相同1. 算术函数1. 算术函数用于完成各类算术运算
使用说明:
注意函数的定义域以及函数与自变量的数据类型
三角函数的自变量单位是弧度
Print Sqr(2.5)
Print Sqr(4)
X = 2.5 : Y = Log(Y)
X = 30 : Print Sin(X*3.14159/180)null2. 字符函数2. 字符函数用于实现字符处理
使用说明:
注意函数与自变量的数据类型
Left(x,n)是从x字符串左边以自左向右的顺序取n个字符;Right(x,n)是从x字符串右边以自左向右的顺序取n个字符
Mid函数的第3个参数可省略;并且Mid函数可以出现在赋值号的左边
Trim(x)去掉x左右的空格
null3. 转换函数3. 转换函数用于实现不同类型数据的转换
使用说明:
注意函数的定义域以及函数与自变量的数据类型
Str与CStr函数的区别
Val函数
Chr函数与Asc函数
Int函数与Fix函数
Cint函数与CLng函数
null例题nullSt = Str(25.14)
A = Val("25.48fab")
Print Chr(65), Asc("b")
Print Int(3.7), Int(3.4), Int(-4.8), Int(-4.3)
Print Fix(3.7), Fix(3.4), Fix(-4.8), Fix(-4.3) Print CInt(3.51),CInt(3.49)
Print CInt(2.5),CInt(3.5)
X=18.75348
Int(x*1000+0.5)/1000
CInt(x*1000)/10004. 日期与时间函数4. 日期与时间函数用于实现日期与时间的处理
使用说明:
注意函数的定义域以及函数与自变量的数据类型
Date()、Time()、Now()函数中的括号可以省略
Print Now
Print Year(Now)
Print Month(Now)
Print Day(Now)
Print Weekday(Now)
Print Weekday(Now,2)null使用函数时的注意事项使用函数时的注意事项每个公共函数都有系统规定的函数名,都有独特的功能,必须正确使用
自变量的个数、意义、排列次序和数据类型应和函数规定的参数相同
函数优先:在对一个包含有函数的表达式进行运算时,系统将优先进行函数调用(运算)
例:x+y*z-Sqr(x+y)
格式化函数Format$格式化函数Format$格式化函数Format[$]是专门用于将数值、日期和时间数据按指定格式输出的函数。该函数一般用于Print方法中。它的一般形式是:
式中的fmt$是用于格式控制的字符串。
格式控制字符有:
#、0、.、,、%、$、-、+、(、)、E+、E-
其中,#、0是数位控制符;.、,是标点控制符;E+和E-是指数输出控制符;其它是符号控制符。
Format函数仅用于控制数据的外部输出形式,不会改变数据在计算机内部的存储形式。 Format[$](<算术表达式>,fmt$) nullx =123456.78
Print Format (x, "00000000.0000 ")
Print Format $ (x, "############")
Print Format $ (x, " ###,###,###.# ")
Print Format $ (x, " ########%") null选择题(二):
7、下列表达式中,值为 True 的是 。
A. Ucase("ABcD") >= "abcd"
B. 14 / 2 \ 3 < 10 MOD 4
C. Mid("ABCD", 2, 2) > Left("ABCD", 2)
D. Not (Sqr(4) – 3 >= – 2)
8、设 M1 = "ABCDEFGHIJKL", M2 = “g”,则下列关系表达式中结果为 True 的是 。
A. Mid (M1,7,1) > M2
B. Len (M1) < > 2*InStr (M1, "F")
C. Chr (65) + Right (M1,5) = "AHIJKL"
D. InStr (Left (M1,6), "C") + 60 > Asc (Ucase (M2))null9.函数 Int ( Abs ( 99-100 ) / 2 )的值为_____。
A. 1 B. 0 C. "1" D. "0"
10. 函数 CInt、Int、Fix 都返回整数值,以下能正确地 描述它们返回整数值大小关系的是_____。
A. CInt(-4.51) = Int(-4.51) < Fix(-4.51)
B. Int(-4.51) < CInt(-4.51) < Fix(-4.51)
C. CInt(-4.51) < Fix(-4.51) < Int(-4.51)
D. Int(-4.51) < Fix(-4.51) = CInt(-4.51)4.7InputBox函数和MsgBox函数4.7InputBox函数和MsgBox函数InputBox函数用来接受用户通过键盘输入的数据。InputBox函数使用的形式是:
式中,v可以是变体变量或字符串型变量,也可以是数值型变量。
在调用InputBox函数时,屏幕上将产生一个带有提示信息的对话框,用户输入数据后按回车键,即可把输入的数据赋给变量;按Esc键或单击“Cancel”按钮,则返回0值或空串。 4.2.2v = InputBox(Prompt[,title][,defsult][,x,y][,helpfile,context]) InputBox函数的各个参数的意义 InputBox函数的各个参数的意义 Prompt:提示用的文字信息;
title:对话框标题(字符型),缺省时,为空白;
default:显示在用户编辑框中的缺省值,缺省时,返回空值;
x,y:对话框在屏幕上显示时的位置,单位是特维,(x,y)是对话框左上角点的坐标;
helpfile,context:帮助文件名及帮助主题号。有本选项时,在对话框中自动增加一个帮助按钮。InputBox函数应用示例InputBox函数应用示例Private Sub Cmd1_Click()
Dim N_student As String
N_student = InputBox("请输入你的学号:", "程序示例", 230001)
If Left(N_student, 2) = "23" Then
Print "你是工程系的学生!"
Else
Print "你不是工程系的学生!"
End If
End SubnullMsgBox函数MsgBox函数MsgBox函数用于向用户发布提示信息,并要求用户作出必要的响应。MsgBox函数的形式是:
4.2.3MsgBox(Prompt[,button][,title][,helpfile,context]) 式中各个参数的意义 式中各个参数的意义 Prompt:提示用的文字信息;
button:这是一个由4个数值常量组成的式子,形式为c1+c2+c3+c4,用于决定信息框中按钮的个数和类型以及出现在信息框中的图标类型,各个参量的可选值及其功能如表4-10(a)、表4-10(b)、表4-10(c)、表4-10(d)(0值为缺省值)
title:信息框标题(字符型),缺省时,为应用程序名;
helpfile,context:帮助文件名及帮助主题号。有本选项时,在信息框中自动增加一个帮助按钮。 表4-10(a) 表4-10(a) 表4-10(b)表4-10(b)表4-10(c)表4-10(c)表4-10(d)表4-10(d)表4-11
MsgBox函数根据用户选择单击的按钮而返回不同的值:
表4-11
MsgBox函数根据用户选择单击的按钮而返回不同的值:
MsgBox函数的几种使用方法MsgBox函数的几种使用方法MsgBox函数有以下几种使用方法:
使用赋值语句。如:
ans = MsgBox(“非法数据!”,48,”提示信息”)
使用Print方法。例如:
Print MsgBox(“非法数据!”,48,”提示信息”)
也可以把它等同为一个方法使用。如:
MsgBox “非法数据!”,48,”提示信息”
三种方法在执行时都可以获得如图所示画面。但第二、三种用法将得不到用户点击不同按钮的返回值(或没有返回值)。