460 likes | 725 Vues
第2章 程序设计基础. 2.1 如何学习 Visual Basic 2.2 数据类型 2.4 常量 2.5 变量 2.6 Print 语句、赋值语句 2.7 运算符、表达式、常用内部函数. 2.1 如何学习 Visual Basic. 1 .语言规则要熟记 学习 Visual Basic 首先要做到熟记 Visual Basic 语言的规则。. 2.1 如何学习 Visual Basic. 2.编程实验对能力提高最重要
E N D
第2章 程序设计基础 • 2.1 如何学习Visual Basic • 2.2 数据类型 • 2.4 常量 • 2.5 变量 • 2.6 Print语句、赋值语句 • 2.7 运算符、表达式、常用内部函数
2.1 如何学习Visual Basic • 1.语言规则要熟记 • 学习Visual Basic首先要做到熟记Visual Basic语言的规则。
2.1 如何学习Visual Basic • 2.编程实验对能力提高最重要 • 在学习的各个不同的阶段,编程练习可以采取下列不同方式:(1) 开始以模仿为主。 (2) 理解熟记常用算法、方法、属性。 (3) 尝试设计自己的选题。 (4) 严格按照规定的格式书写程序。
类 型 名 称 字节数 取值范围和有效位数 整 型 Integer 2 精确表示-32768~32767范围内的整数 长整型 Long 4 精确表示-2147483648~2147483647范围内的整数 单精度浮点型 Single 4 -3.402823×1038~-1.401298×10-45 1.401298×10-45~3.402823×1038 7位有效位数 双精度浮点型 Double 8 -1.79769313486232×10308 ~ -4.94065645841247×10-324 4.94065645841247×10-324 ~ 1.79769313486232×10308 15位有效位数 字节型 Byte 1 0~255 变长字符串 String 每个字符占1个字节,每个字符串最多可存放约20亿个字符 定长字符串 String*size size是小于65535的无符号整常数,为字符串长度 逻辑型 Boolean 2 True或False 2.2.1 数据类型 表2-1 Visual Basic 6.0的常用数据类型
类 型 名 称 字节数 取值范围和有效位数 货币型 Currency 8 -922337203685477.5808~922337203685477.5807 日期型 Date 8 100.1.1~9999.12.31 对象型 Object 4 任何对象的引用 变体型 Variant 若存放数值类型数据,占16个字节,最大可达Double的范围; 若存放字符串类型数据,字符串长度与变长字符串相同 2.2.1 数据类型 • 表中,“名称”用以标识变量的类型,“字节数”表示该类型数据所占内存空间大小。 表2-2 Visual Basic 6.0的其他数据类型
2.2.2 数值类型数据的存储格式 • Visual Basic中的字节型数、整型数、长整型数、单精度浮点数、双精度浮点数、货币型数,统称为数值型数据。 • 1.Byte类型 • Visual Basic用1个字节(8个2进制位),该类型数据的最大值为255。 • 2.Integer类型 • Visual Basic用2个字节(16个2进制位)存储Integer类型的数据,首位为符号位(正数为0、负数为1),因此其最大值为即32767。
2.2.2 数值类型数据的存储格式 • 3.Long类型 • Visual Basic用4个字节(32个2进制位)存储Integer类型的数据,首位为符号位(正数为0、负数为1),因此其最大值为大约为21.47亿。 • 4.Single类型 • Single(单精度浮点)类型数据,占用4个字节的存储空间。 • Single数据的有效位数总可以达到7位。
2.2.2 数值类型数据的存储格式 • 5.Double类型 • Double(双精度浮点)类型数据用8个字节表示:有效位数为15位。 • 此外,还有Currency(货币)类型数据,它支持15位整数和4位小数,适用于货币计算。
2.4 常量 • 常量是直接写在程序中的数据,常量的类型由它们的书写格式决定。 • 1.数值常量 • (1) 可以用所学算术、数学中的惯常写法书写数值常量。 • (2) 浮点数还可以用指数形式表示。 • 3.14159e0 0.314159E1 0.0314159e2 314.159e-2 • (3) 数值类型数据取值在其有效范围之外,会出现“溢出”(Overflow)错误。 • (4) Visual Basic中的常量一般采用十进制数,但有时也使用十六进制数(数值前加前缀&h)或八进制数(数值前加前缀&o)。
2. 4 常量 • 2.字符串常量 • 字符串常量是用双引号括起来的一串字符,格式为:"h1h2h3...hn"。每个字符占1个字节。 • 3.逻辑常量 • 逻辑常量只有两个值:真(True)和假(False)。当把数值常量转换为Boolean时,0为False,非0值为True。 • 4.日期常量 • 日期常量用两个“#”把表示日期和时间的值置于其间,如:#08/18/2001#、#08/18/2001 08:10:38 AM#,等等。
2. 4 常量 • 5.符号常量 • 符号常量的定义格式为: Const <符号常量名> = <常量> • 例 Const pi = 3.1416
2.5 变量 • 常量的类型由书写格式决定,而变量的类型由类型声明决定。 • 1.变量的命名规则 • 变量名由首字符为英文字母、不超过255个字符的字母、数字、下划线符组成。 • 2.变量命名的几点说明 • (1) 不能使用Visual Basic的关键字作为变量名。 • (2) 变量名不能与过程名或符号常量名相同。 • (3) Visual Basic不区分变量名的大小写。 • (4) 变量取名尽量做到“见名知义” 。
2.5 变量 • 3.变量声明 • 用Dim语句可以强制声明变量类型: DIM <变量名> [AS <数据类型>][,<变量名> [AS <数据类型>]...] • Dim yb As Byte, yc As Byte, nk As Integer • 不可以将语句“Dim m As Integer, n As Integer”写作“Dim m, n As Integer”。
2.5 变量 • 例 变量的作用域及应用。 • Option Explicit • Dim ss as String • Private Sub Form_Load() • ss = "欢迎使用VB6.0" • End Sub • Private Sub Form_Click() • Print ss • End Sub
2.5 变量 • 如果将程序修改如下,看看结果如何? • Private Sub Form_Load() • Dim ss as String • ss = "欢迎使用VB6.0" • End Sub • Private Sub Form_Click() • Print ss • End Sub
2.5 变量 • 4.变量的初始值 • 在程序中声明了变量以后,Visual Basic自动将数值类型的变量赋初值0,变长字符串被初始化为零长度的字符串(""),定长字符串则用空格填充,而逻辑型的变量初始化为False。
2.6.1 语句、命令的语法描述规则 • 为便于解释语句、方法和函数,本书在各语句、方法和函数的语法格式和功能说明中采用统一的符号约定。 • DIM <变量名> [AS <数据类型>][,<变量名> [AS <数据类型>]...] • 各语法描述符号及它们的含义如下: • (1)“< >”为必选参数项,尖括号中的中文提示说明,必须由使用者根据问题的需要提供具体的参数。如果缺少必选参数,则发生语法错误。 • (2) “[ ]”为可选参数项,方括号中的项目由使用者根据具体问题决定选与不选。如省略,则为缺省值。 • (3) “{ }”和“|”,包含多中取一的各项,竖线分隔多个选择项,必须选择其中之一。 • (4) “…”表示同类项目的重复出现。 • 特别要注意在书写具体的命令时,不能出现这些语法描述符号。
2.6.2 Print语句 • Print语句格式为: • [<对象名称>.] Print [<输出项>[[{,|;}][<输出项>]]...] • <对象名称>可以是窗体/图片框或屏幕。
2.6.2 Print语句 • 例 Print语句的输出格式及应用。 • Private Sub Form_Click() • Print "123456789012345678901234567890“ • print • Print 123, 4 + 5 • Print "123", "4+5" • Print 1 + 2; 456 • Print "1+2"; "456" • Print 1; 2, -4; "78" • Print • Print 12, 88, • Print 6, 7 • Print 5, 6; • Print 7, 8 • End Sub 图2-1 例的输出结果
2.6.2 Print语句 • 从该例的输出结果可知: • (1) 无论是分段格式还是紧凑格式,数值数据输出后都会尾随一个空格,输出正数时正号不显示、前面还需输出一个空格。 • (2) 字符串数据原样显示引号内的内容,逻辑类型数据直接输出True或False。
2.6.3 赋值语句 • 格式:<变量名>=<表达式> 或 • <控件名>.<属性名>=<表达式> • 说明: • (1) 为数值变量赋值时,表达式的值不得超过数值变量的数值范围,否则显示错误信息。 • (2) 值为浮点类型的表达式四舍五入后向整型变量赋值。 • (3) 任何类型表达式都可以向字符串变量赋值。 • (4) 赋值号不是数学中的等号。
2.6.3 赋值语句 • 例 编写一个实现两个变量值交换的程序。 • 我们可以把两个变量A、B设想成分别装有牛奶和咖啡的两只杯子,现在要把牛奶倒到咖啡杯里,而将咖啡倒到牛奶杯里。可以这样来做:另取一只杯子(同类型变量)C,将A中的牛奶倒入杯子C,再将B中的咖啡倒入杯子A,最后将杯子C中的牛奶倒入杯子B。 • 程序如下: • Private Sub Form_Click() • Dim a as Integer, b as Integer, c as Integer • a=5: b=8 • Print a,b '显示交换前的值 • c=a: a=b: b=c '交换 • Print a,b '显示交换后的值 • End Sub • 显然,将交换的过程写作“a=b: b=a”是错误的。
运算符 名 称 实 例 ^ 乘 方 2^3值为8,-2^3值为-8 * 乘 法 5*8 / 除 法 7/2,计算结果为3.5 \ 整 除 7\2值为3,12.58\3.45值为4(两边先四舍五入再运算) Mod 求余数 7 mod 2值为1,12.58 Mod 3.45值为1(两边先四舍五入再运算) + 加 法 1+2 - 减法、取负 5-8, -3 2.7.1 算术运算符与算术表达式 • 1.算术运算符 • 如表2-3所示,Visual Basic共有7个算术运算符,除了负号是单目运算符,其他都是双目运算符。 表2-3 算术运算符
2.7.1 算术运算符与算术表达式 • 2.算术运算符的优先级 • 算术运算符之间的运算优先级从高到低如下所示。 • (指数运算 ^)→(取负 -)→(乘 *、除 /)→(整除 \)→(求余Mod)→(加 +、减 -) • 其中,整除和求余运算中,如果其两边的任一个操作数为实型(Single、Double),则Visual Basic自动将其四舍五入、再用四舍五入后的值作整除或求余运算。 • 乘、除为同级运算符,加、减为同级运算符,同级运算从左向右进行。在表达式中加括号,可以改变表达式的求值顺序。
2.7.1 算术运算符与算术表达式 • 3.算术表达式 • 书写Visual Basic的算术表达式,应注意与数学表达式在写法上的区别。例如: • (1) 不能漏写运算符,如3xy应写作3*x*y。 • (2) Visual Basic算术表达式中使用的括号都是圆括号。 • 例 由下列数学式写出相应的Visual Basic算术表达式。 • 写作:1/(1+1/(1+x)) • 写作:(-a^(b^c)+b^0.5)*(a-b)^-0.5
2.7.2 字符串运算符与字符串表达式 • 字符串运算符有两个:“+”和“&”,均为双目运算符,用于连接两边的字符串表达式。 • "ABCD" & "efg" , 计算后所得表达式的值为"ABCDefg" • “杭州” & “西湖” ,计算后所得表达式的值为"杭州西湖" • 字符串连接符“&”具有自动将非字符串类型的数据转换成字符串后再进行连接的功能,而“+”则不能。 • 如:"xyz" & 123 ,计算后所得表达式的值为"xyz123“ • "xyz" + 123 ,出现类型不匹配错误
2.7.3 关系运算符与关系表达式 • 关系运算符也称为比较运算符,包括 <、<=、>、>=、=、<> 6种,用于比较两边的表达式是否满足条件,运算结果为True或False。
运算符 名 称 实例说明 And 与 8 Mod 2=0 And 8 Mod 3=0,值为False。 Or 或 8 Mod 2=0 Or 8 Mod 3=0,值为真(True)。 Not 非 Not 1>0,值为False,由真变假;Not 1<0,值为True,由假变真 2.7.4 逻辑运算符与逻辑表达式 • 常用的逻辑运算符有3种,如表2-4所示。 • 逻辑运算符的优先级是:先Not,次And,后Or。 表2-4 逻辑运算符
2.7.4 逻辑运算符与逻辑表达式 • 例 由下列条件写出相应的Visual Basic逻辑表达式。 • 条件“-3<x<3”写作逻辑表达式为:-3<x and x<3 • 判断整型变量k是正的奇数的逻辑表达式为:k>0 and k mod 2=1
2.7.5 运算符的优先顺序 • 算术运算符 • 字符串运算符 • 关系运算符 • 逻辑运算符
2.7.6 常用内部函数 • 1.数学函数 • 下列函数的参数均为数值类型。 • (1) 三角函数:Sin(x)、Cos(x)、Tan(x),反正切函数Atan(x) ◆以上函数分别返回正弦值、余弦值、正切值和反正切值。 ◆Visual Basic没有余切函数,求x弧度的余切值可以表示为1/Tan(x)。 ◆函数Sin、Cos、Tan的自变量必须是弧度,如数学式sin30º,写作Visual Basic的表达式为Sin(30*3.1416/180)。
2.7.6 常用内部函数 • (2) Abs(x):返回x的绝对值。 • (3) Exp(x):返回e的指定次幂,即ex。 • (4) Log(x):返回x的自然对数。 • (5) Sgn(x):符号函数,当x>0时,Sgn(x)的值为1;当x=0时,Sgn(x)的值为0;当x<0时,Sgn(x)的值为-1。 • (6) Sqr(x):返回x的平方根,如Sqr(16)的值为4,Sqr(1.44)的值为1.2。 • (7) Int(x):返回不大于x的最大整数,如Int(7.8)值为7,Int(-7.8)值为-8。 • (8) Fix(x):返回x的整数部分,如Fix(7.8)值为7,Fix(-7.8)值为-7。
2.7.6 常用内部函数 • 2.字符串函数 • (1) Ltrim(x):返回删除字符串x前导空格符后的字符串。 • 如Ltrim(" abc")的计算结果为字符串"abc"。 • Rtrim(x):返回删除字符串x尾随空格符后的字符串。 • 如Rtrim("abc ")的计算结果为字符串"abc"。 • Trim(x):返回删除字符串x前导和尾随空格符后的字符串。 • 如Trim(" abc ")的计算结果为字符串"abc"。 • (2) Left(x,n):返回字符串x前n个字符所组成的字符串。 • Right(x,n):返回字符串x后n个字符所组成的字符串。 • Mid(x,m,n):返回字符串x从第m个字符起的n个字符所组成的字符串。
2.7.6 常用内部函数 • (3) Len(x):返回字符串x的长度,如果x不是字符串,则返回x所占存储空间的字节数。 • 如函数Len("abcdefg")的返回值为7,而函数Len(k%)的返回值为2。 • (4) Lcase(x)和Ucase(x):分别返回以小写字母、大写字母组成的字符串。 • (5) Space(n):返回由n个空格字符组成的字符串。 • (6) Instr(x,y):字符串查找函数,返回字符串y在字符串x中首次出现的位置。如果y不是x的子串,即y没有出现在x中,则返回值为0。 • 如字符串a已赋值"abcd efg cd_xy",则函数Instr(a,"cd")的计算结果为3。
2.7.6 常用内部函数 • 3.日期和时间函数 • (1) Date:返回系统当前日期。 • (2) Time:返回系统当前时间。 • (3) Now:返回系统当前日期、时间。 • (4) Minute(Now)、Minute(Time):返回系统当前时间“hh:mm:ss”中的mm(分)值。 • (5) Second(Now)、Second(Time):返回系统当前时间“hh:mm:ss”中的ss(秒)值。 • 4.转换函数 • (1) Str(x):返回把数值型数据x转换为字符型后的字符串。 • (2) Val(x):把一个数字字符串x转换为相应的数值。 • (3) Chr(x):返回以Ascii值为x的字符,如Chr(65)返回"A"。 • (4) Asc(x):返回字符串x首字符所对应的ASCII值,是函数Chr的逆运算。如Asc("ABcde")返回数值65。
2.7.6 常用内部函数 • 5.随机数语句和函数 • (1) Randomize语句:该语句的作用是初始化Visual Basic的随机函数发生器(为其赋初值)。 • (2) Rnd函数:产生0~1之间的随机数。[0,1) • 一般地,要得到[a,b]之间的随机整数,可用公式“Int(Rnd*(b-a+1))+a”。
2.7.6 常用内部函数 • 6.与Print方法有关的函数 • (1) Tab(n):将输出项定位到从第n列开始显示输出,Tab函数与输出项之间用分号隔开。 • 如执行语句Print Tab(10); 123,则在当前输出行的第10列起输出123。 • (2) Spc(n):输出n个空格。 • 如执行语句“Print "abc"; Spc(3); "def"”后输出:abc def
2.7.6 常用内部函数 • 例 由下列条件写出相应的Visual Basic表达式。 • 求变量x之绝对值的平方根,算术表达式为:Sqr(Abs(x)) • 判断变量k的整数部分是否为两位数的逻辑表达式为:Int(Abs(k))>9 And Int(Abs(k))<100 • 数学式写作算术表达式为:Sqr(s*(s-a)*(s-b)*(s-c)) • 将大于0的单精度变量k四舍五入至小数点后两位的表达式为:Int(k*100+0.5)/100 • 数学式cos25º+ctg32º写作算术表达式为:cos(25*3.14159/180)+1/Tan(32*3.14159/180) • 数学式e12.6·loge3-8.6写作算术表达式为:exp(12.6)*log(3)-8.6 • 数学式(ex-log10y)·cos35º写作算术表达式为: • (exp(x)-log(y)/log(10))*cos(3.14159*35/180) • N是大于0的整数,求N的位数的表达式为:Len(Str(N))-1
2.7.6 InputBox函数和MsgBox函数 • 1.InputBox函数 • InputBox函数也称为输入对话框,返回用户在对话框中输入的信息。格式: <变量名>=InputBox([<提示信息>][,[<对话框标题>][,<默认值>]] • 其中: • (1) <提示信息> 指定在对话框中出现的文本信息。 • (2) <对话框标题> 指定对话框的标题信息。 • (3) <默认值> 可以指定文本框中显示的默认信息。 • 系统默认用该函数输入的数据为字符串类型。
2.7.6 InputBox函数和MsgBox函数 图2-2“数据输入”对话框
2.7.6 InputBox函数和MsgBox函数 • 2.MsgBox函数 • MsgBox函数也称为消息对话框,用户单击按钮后返回一个整数以标明单击了哪个按钮。格式: [<变量名>] = MsgBox([<提示信息>][,[<对话框类型>][,<对话框标题>]]) • 其中: • (1) <提示信息> 指定在对话框中出现的文本信息。 • (2) <对话框类型> 指定对话框中出现的按钮和图标样式。 • (3) <对话框标题> 指定对话框的标题信息。
值 值 Visual Basic常量 Visual Basic常量 按钮样式 图标样式 0 16 vbOKOnly VbCritical “确定”按钮 停止图标 32 1 vbOKCancle VbQuestion “确定”和“取消”按钮 问号(?)图标 2 48 vbAbortRetryIgnore vbExclamation “终止”、“重试”和“忽略”按钮 感叹号(!)图标 64 vbInformation 消息图标 3 vbYesNoCancle “是”、“否”和“取消”按钮 4 vbYesNo “是”和“否”按钮 5 vbRetryCancle “重试”和“取消”按钮 2.7.6 InputBox函数和MsgBox函数 表2-7 按钮样式 表2-8 图标样式
值 Visual Basic常量 说 明 0 vbDefaultButton1 第一按钮为默认按钮 256 vbDefaultButton2 第二按钮为默认按钮 512 vbDefaultButton3 第三按钮为默认按钮 2.7.6 InputBox函数和MsgBox函数 表2-9 默认按钮 如,执行语句“n=MsgBox("请确认输入的数据是否正确!",3+32+0,"数据检查")”后,则弹出如图2-3所示的对话框。 参数“3+32+0”中:按钮样式为3,在对话框中显示“是”、“否”和“取消”按钮;图标样式为32、显示问号;默认按钮为0,将第1按钮“是(Y)”作为默认按钮。 图2-3 消息对话框
返回值 按 钮 返回值 按 钮 1 “确定”按钮 5 “忽略”按钮 2 “取消”按钮 6 “是”按钮 3 “终止”按钮 7 “否”按钮 4 “重试”按钮 2.7.6 InputBox函数和MsgBox函数 • 命令中的参数“3+32+0”就是“35”,Visual Basic会自动分解为合适的参数组合,如此写法只是为了阅读程序方便,直观地看出按钮样式、图标样式以及缺省按钮。 • (4) 函数MsgBox对用户在消息对话框中所单击的不同按钮,将返回产生1个不同的数值,其对应关系如表2-8所示。 表2-10 单击消息对话框中不同按钮导致的不同返回值
2.7.6 InputBox函数和MsgBox函数 • 应根据函数MsgBox的不同返回值编程,实现编程者的设计意图。 • 如下列程序段中的MsgBox函数,显示的对话框有“确定”、“取消”两个按钮(由按钮样式1决定),图标样式为问号(由图标样式32决定),默认按钮为第一按钮“确定”(由默认按钮0决定)。 • n=MsgBox("是否终止运行!",1+32,"") • If n=1 Then End • 如果用户要求终止运行,按了“确定”按钮,则函数返回值为1(见表2-8)。此后,判断n值是否为1来决定是否终止程序运行。
小结 • 本章首先介绍了Visual Basic的基本数据类型、不同类型常量的书写方式及不同类型变量的声明语句,目的是为了在程序设计时,根据所要解决问题的实际需要,选择合适的数据类型、书写常量和定义变量。然后介绍了Visual Basic的算术、关系、逻辑运算符和常用Visual Basic内部函数,读者应熟记这些运算符及其优先级、内部函数的书写形式和用法,以便能正确书写Visual Basic表达式。