第三章 Visual Basic 语言基础
description
Transcript of 第三章 Visual Basic 语言基础
江苏省计算机等级考试
Visual Basic 程序设计
第三章
Visual Basic 语言基础
2 江苏计算机等级考试
Visual Basic 程序设计
了解过程和模块的概念 掌握程序书写规范和程序注释方法 掌握各种数据的定义、使用及表示范围 掌握各种运算符和表达式的使用 掌握常用的标准函数
教学要求
江苏计算机等级考试
Visual Basic 程序设计
3
3.1 VB程序代码的组织结构
3.2 代码行的书写规则
3.3 VB的数据类型
3.4 运算符与表达式
3.5 VB公共函数
教学内容
4 江苏计算机等级考试
Visual Basic 程序设计3.1 VB 程序代码的组织结构
VB 程序是由界面和程序代码两部分组成,而程序代码又是由说明部分和过程两部分组成的,要编写控制程序执行的代码,必须先了解过程这个概念。
5 江苏计算机等级考试
Visual Basic 程序设计3.1.1 过程3.1.1 过程
所谓过程,就是由 Sub 开头, End Sub 结尾的,包含若干条语句的有特定书写格式的代码组合。
根据过程执行的方式,可分为事件过程和通用过程两类。
6 江苏计算机等级考试
Visual Basic 程序设计
事件过程
定义:由事件驱动而执行的,用于响应用户或系统引发的事件的代码过程。如窗体的 Load 过程、命令按钮的 Click 过程等。 特点:缺省情况下,事件过程是 Private 的,即仅在所属的窗体范围内有效。 存储:事件过程是存储在窗体模块文件中,扩展名为 .frm 注意:事件过程的过程名及参数是系统定义好的,其参数不得随意改变。
7 江苏计算机等级考试
Visual Basic 程序设计通用过程:
定义:可以被多个窗体和过程调用执行的代码过程。 特点:缺省情况下,通用过程是 Public 的,即可被所有窗体共享,但也可以定义成 Private 。 存储:
在窗体中定义的通用过程直接存储在窗体模块文件中;在标准模块中定义的通用过程是存储在扩展名为 .Bas 的标准模块文件中。
注意:通用过程的过程名及参数由用户自行定义。
8 江苏计算机等级考试
Visual Basic 程序设计
3.1.2 模块3.1.2 模块
模块是组织过程代码的一种结构。 VB 提供了三种类型的模块:窗体模块、标准模块和类模块。
窗体模块:和每个窗体相对应的模块,包含窗体及其中所有控件的属性设置、相关说明和所有事件过程。
标准模块:存放为多个窗体所共享的通用过程的独立代码模块,不属于任何一个窗体,主要在大型应用程序中使用,保存在扩展名为 .Bas 的文件中。
类模块:存放开发者自行创建的类的属性、方法等。
9 江苏计算机等级考试
Visual Basic 程序设计
VB 应用程序
窗体文件
标准模块文件
声明部分
事件过程
通用过程
全局声明部分
模块声明部分
通用过程
类模块文件
10 江苏计算机等级考试
Visual Basic 程序设计3.2 VB 程序的书写规范和程序注释
一、语句 VB 程序的最基本的成分 格式: <语句定义符 > [ 语句体 ] 按行书写 ;
一个语句可通过续行符号“ _”(一个空格加一个下划线)分成多行写; 多个语句也可以通过分行符号“:”(冒号)写在一行上。
11 江苏计算机等级考试
Visual Basic 程序设计二、书写规范
字母无大小写区分
一行代码输入完毕,按回车键进入下一行
一般采取阶梯型书写格式,使程序可读性好,便于查找错误(严格执行)
代码中除了中文字外,所有的符号都必须在英文状态下输入
三、程序注释语句[ 格式一 ]: Rem < 注释字符 >
[格式二 ]:’ < 注释字符 >
[说明 ]:给程序加注释,增强程序的可读性,该语句为非执行语句。
江苏计算机等级考试
Visual Basic 程序设计
12
3.3 VB 数据类型3.3 VB 数据类型
3.3.1 数据类型
3.3.2 常量
3.3.3 变量
13 江苏计算机等级考试
Visual Basic 程序设计取值范围见 P43 表 3-1
3.3.1 数据类型 Integer: 整型数, 2 个 Byte
Long : 长整型数, 4 个 Byte
Single : 单精度数, 4 个 Byte 7位有效位Double : 双精度数, 8 个 Byte 15位有效位Currency: 货币型, 8 个 Byte 精度高, 15 个整数和 4 个小数Byte : Byte 型数, 1 个 Byte (一般存储二进制信息)Boolean: 逻辑型, 2 个 Byte True 或 False
String : 字符串型,分为定长和不定长两种Date : 日期型, 8 个 Byte
Object : 对象型, 4 个 Byte 保存对某对象的引用(内存地址) Variant : 变体型, 16 个 Byte
存放无小数的整数
存放有小数的实数
14 江苏计算机等级考试
Visual Basic 程序设计 3.3.2 常量( Constant )
指在程序运行过程中值保持不变的量 ,分为直接常量和符号常量两种。
1 、 数值常量•由正负号、数字和小数点组成,正数的正号可以省略•科学计数法
•格式: < 尾数 >e/d<指数 >
•说明:幂为 10, e为单精度, d为双精度•八进制和十六进制常量
•表示无符号整数•八进制: &O•十六进制: &H
12, -3,32767
174567, -456789
1.5, -7.891, 1e6, 2.33455e-3
3.1415926535,1.2d4
&O137,&H127
15 江苏计算机等级考试
Visual Basic 程序设计2 、字符常量
•用双引号将一串字符括起来,构成字符常量•字符长度:字符串中字符的个数,不包括双引号•字符串的长度最多可达 65535个•注意区别空格串和空串•输入双引号必须用“””•字符串常量区分大小写,如字符串 "A"和字符串 "a"是两个不同的常量•字符串比较:从字符串的左端开始,一一对应比较至不同的字符,字符的 ASCII码值大的字符串大, ASCII码值小的字符串小。 如:“欢迎进入 VB”,“ Visual Basic”, “123”,“ A”
16 江苏计算机等级考试
Visual Basic 程序设计3 、逻辑常量
•只有两个取值, True 和 False•无界定符•Vb 中通常用 0表示 False ,其他数值均表示 True
4、日期时间型常量•即可以表示日期,也可以表示时间•一般表示形式是 mm/dd/yy, hh:mm:ss•用 # 作为界定符
例: #1/2/1999# #1999-1-2# #Jan 2,1999#
#January 2,1999# #12:00:00 AM#
#12:00:00 PM# #8:20:20 PM# #2:00:00 PM# 都合法
17 江苏计算机等级考试
Visual Basic 程序设计
•符号常量•是指以符号形式,即常量名来标识的常量
•若一个常量在程序中使用频率较高,可以将其定义为一个符号常量,如圆周率•常量名长度不超过 255个字符,由字母开头,只能包含字母、数字和下划线,且不区分大小写•符号常量必须先说明后使用
符号常量
18 江苏计算机等级考试
Visual Basic 程序设计
说明语句格式:[Public|Private] Const < 常量名 > [As Type]=< 表达式>
在模块通用声明中, Public 和 Private 用于定义常量的使用范围,缺省为 Private(窗体模块级 )
在窗体模块中不能用 Public 定义全局符号常量 表达式中不能包括函数,可使用除 IS外所有算术和逻辑运算符,也可以使用其他常量例: Const pi as Single=3.14159
Private Const ch=“CPU” Public Const x as Integer=3*5 ’在标准模块中定义全局级常量,但若出现在窗体的通用声明中则出错。
注意 符号常量定义后,在程序中只能读不能修改。 如: ch=“CMOS” ‘ 错误
符号常量
19 江苏计算机等级考试
Visual Basic 程序设计3.3.3 变量 (Variable)
-在程序运行时,其值可以改变的数据。
- 例: Dim X As Integer
X(变量名) ——内存单元
X=2666
X
X=0
X
2666 (变量值)
0
20 江苏计算机等级考试
Visual Basic 程序设计一、变量名的命名规则
必须以字母开头 不超过 255个字符 在作用域内必须唯一 字符串内不得包含点号和用于隐性类型说明的符号 不得使用系统保留字(如 End Private Sub )
注意 :在代码编辑器中 ,若定义的变量名不合法 , 则有出错提示 , 且变量名显示为红色 .
21 江苏计算机等级考试
Visual Basic 程序设计二、变量的作用域与变量说明语句
1. 变量的作用域
局部变量:在过程中说明的变量,只在该过程中有效;
窗体 /模块变量:在模块中说明的 Private 变量,在该窗体或模块中有效 ;
全局变量:在模块中说明的 Public 变量,在整个应用程序中有效。
22 江苏计算机等级考试
Visual Basic 程序设计2. 变量说明语句
- 过程级变量(局部变量)——在过程中声明
Dim|Static < 变量名 > [As < 类型 >]
- 模块级变量——在模块的“通用”中“声明”
Private|Dim < 变量名 > [As < 类型 >]
- 全局变量——在模块的“通用”中“声明”
Public < 变量名 > [As < 类型 >]
例: Dim a1 As Integer Public strName As String Private dtBirthday ‘ 变体型
23 江苏计算机等级考试
Visual Basic 程序设计
隐式说明——类型声明符,见 P47,表 3-4例: k&=1 Country$=“China”
变量初值:当一个变量说明之后,系统自动为其赋一个初始值。数值型数据的初值为 0;字符型数据的初值为空串“”;逻辑型数据的初值为 False;日期型数据的初值为 1899-12-30, 0: 00: 00
变量的赋值——赋值语句 [形式 ] 变量名 =表达式 例: a=1:b=2:x=a+b ‘x的值为 3
几点注意
24 江苏计算机等级考试
Visual Basic 程序设计
一条语句声明多个变量Private|Dim|Static|Public < 变量名 > [As < 类型 >] , <变量名 > [As < 类型 >]…
例: Dim x,y,z as Integer,s as string
’x和 y是变体型, z是整型, s是字符串型
字符串的定长说明: Private|Dim|Static|Public < 变量名 > As String *<长度 >
例: Dim Number As String*7注意 :不能在窗体模块中定义全局定长字符
串 .
几点注意
Dim x As Single
Static y%
模块 1
Public iA As Integer
Public ib as string
Dim b1 As String Private b2 As Integer
Dim sum As Single
Dim x As String
窗体级变量
局部变量
过程 4
窗体1
过程2
过程1
过程 3
窗体2
窗体级变量
局部变量
全局变量
26 江苏计算机等级考试
Visual Basic 程序设计
Dim a As Integer,b &,c As Integer
Dim a%,b%,c As Integer
Dim a ,b,c As Integer
判断以下定义的各变量的数据类型
练 习
27 江苏计算机等级考试
Visual Basic 程序设计三、强制显式说明语句
格式: Option Explicit功能:要求每一个变量都必须经过显式说明才能使用,否则产生出错信息。
强制显式说明的好处:一个变量如果不定义,会被当作变体类型来进行处理,从占据的内存空间看,势必会造成浪费;变量定义之后,若输入变量名正确,系统会自动按定义时的格式转换输入的变量名,否则提示输入错误。
注意:为养成良好的变成习惯 , 在我们今后的程序中,都要求对使用的变量进行说明 .
28 江苏计算机等级考试
Visual Basic 程序设计
Option Explicit 语句应在模块的通用说明部分输入; 系统能够自动产生 Option Explicit 语句,设置如下:
执行“工具”菜单的“选项” 在“选项”对话框中选取“编辑器”标签 选中“要求变量声明”项 单击“确定”按钮返回 此后系统会在新建的下一个工程中自动在代码窗口产生强制说明语句
江苏计算机等级考试
Visual Basic 程序设计
29
3.4 运算符与表达式3.4 运算符与表达式
3.4.1 算术运算符与算术表达式
3.4.2 关系运算符与关系表达式
3.4.3 逻辑运算符与逻辑表达式
3.4.4 运算规则
30 江苏计算机等级考试
Visual Basic 程序设计 3.4.1 算术运算符与算术表达式
算术运算符乘方( ^ )、加( + )、减( - )、乘( * )、除( / )、整除( \ )、取余( Mod )、字符串连接( & )优先级: ^ - (单目减) * 和 / \ Mod + 和 - &
举例: 13+3 ‘16
13*3 ‘3913/3 ‘4.3333333333333313\3 ‘4 13 mod 3 ‘1“13” & “3” ‘133“a” & “b” ‘ab#1/2/2001#+1 ’1/3/2001
& 前后必须留有空格
31 江苏计算机等级考试
Visual Basic 程序设计3.4.1 算术运算符与算术表达式
算术表达式:将常量、变量、函数等用算术运算符连接起来的式子说明:括号的优先级大于任何运算符例:
a
acbb
2
42
表达式为: (-b+Sqr(b^2-4*a*c))/(2*a)
注意:括号要一一对应,分子分母部分应该用括号括起来,只能使用小括号乘法要用乘号分隔,除法写在同一行
32 江苏计算机等级考试
Visual Basic 程序设计 3.4.2 关系运算符与关系表达式
关系运算符小于( < )、小于等于( <= )、大于( > )、大于等于( >= )、不等于( <> )、等于( = )、比较对象的引用变量( Is )
关系表达式:将常量、变量、函数或算术等其他表达式用关系运算符连接起来的式子如果关系运算符的两端是表达式,则先计算表达式的值,然后进行比较关系运算符两端必须是同类变量、表达式,否则出错关系表达式的结果必然是逻辑值
例: a<=32 b^2-4*a*c>0 “ABC” >“ACB” ’ 结果为 false #1/1/2000#<#1/2/2000# ’结果为 True
33 江苏计算机等级考试
Visual Basic 程序设计 3.4.3 逻辑运算符与逻辑表达式
逻辑运算符非( Not )、与( And )、或( Or )、异或( Xor )优先级: Not And Or Xor
逻辑表达式:将逻辑量用逻辑运算符连接起来的式子如果逻辑运算符的两端是关系表达式,则先计算关系表达式的值,然后进行逻辑运算逻辑表达式的操作数是逻辑值,结果是逻辑值
例: 判断 0<x<10 的逻辑表达式为: x>0 And x<10 判断点( X,Y)是否位于第一象限的单位圆内的表达式为 : X>0 And Y>0 And X*X+Y*Y <1
34 江苏计算机等级考试
Visual Basic 程序设计3.4.4 各种运算的优先级
运算符的优先级:先算术运算,再关系运算,最后逻辑运算遵循某类运算符内的优先次序可以用()改变运算的优先顺序,注意,表达式中无[ ] 、 { },()可嵌套,但必须成对出现
表达式的写法:注意与代数表达式的区别 ±、×、÷、≤、≥、≠ 都不合法
表达式的运算溢出: 例: Dim x As Integer
x = 19000 + 19000 表达式计算的数据类型转换:
例: “ 20” + 46 ’结果为 66, 将“ 20”转换为20
“ab” + 46 ‘出错 200 + True ’结果为 199,将 True转换为 -1
35 江苏计算机等级考试
Visual Basic 程序设计练 习
a=11: b=6: c=4: x=false
写出此表达式的值:
(b+c)>a or c<b and x
为了检验和掌握表达式(包括标准函数)的使用
在窗体的 Click 事件中加入 Print 语句,执行时查看运行结果。
打开“视图”“立即窗口”,用 Print 或 ? 来检验执行结果
36 江苏计算机等级考试
Visual Basic 程序设计3.5 Visual Basic 公共函数
公共函数: VB 已预先定义好的完成某特定功能的程序段——通过过程,编程者可直接调用。
- 函数名
- 参数
- 函数的返回值
37 江苏计算机等级考试
Visual Basic 程序设计
3.5.1 算术函数Sqr(x): 返回 X 的平方根, X 非负,返回值为 Double 型 。Log(x): 返回 X 的自然对数,即 Ln(x) , X>0 。Exp(x): 返回 ex 。Abs(x): 返回 X 的绝对值。Sgn(x): 判断 X 的符号:Sin(x) 、 Cos(x) 、 Tan(x) 、 Atn(x) :分别返回 X (单位为弧度)的正弦余弦、正切和反正切函数值,返回值为 Double型 Rnd(x): 返回一个( 0 , 1 )之间的 Single 类型随机数。 X决定产生随机数的结果,具体情况请查阅 Help 。 Randomize语句可帮助产生真正意义上的随机数。
01
00
01
)(
x
x
x
xSgn
38 江苏计算机等级考试
Visual Basic 程序设计
3.5.2 字符函数Len(x): 返回字符串 x 中字符的个数。Left(x,n): 返回从字符串 x 的左边开始的 n 个字符形成的子串。Right(x,n): 返回从字符串 x 的右边的 n 个字符形成的子串。Mid(x,n1,n2): 返回从字符串 x 的第 n1 个字符开始的 n2 个字符。Ucase(x) 将 x 中小写字母转换成大写字Lcase(x): 将 x 中大写字母转换成小写字母Ltrim(x) 、 Rtrim(x) 、 Trim(x) : 分别去掉 x 左边的所有空 格、右边的所有空格和两边的所有空格。Instr(n,x,y): 返回 y 在 x 从第 n 位开始出现的位置,不存在返回0String(n,y): 返回由 n 个字符 y 组成的字符串,若 y 是一个字符 串,则取其第一个字符。Space(n): 返回由 n 个空格组成的字符串。
X=“Visual Basic”
39 江苏计算机等级考试
Visual Basic 程序设计 3.5.3 转换函数
Str(x): 将数值型数据 x 转换成相应的字符串,保留正数符号位CStr(x): 将 x 转换成字符串,如 X 为数值型,不保留正数符号位Val(x): 将字符串 X 最左端开始的数字字符串转换成数值。遇到不能转换的字符为止。若字符串无法被转换时,返回 0 。 Val(-16.6those) ’ 结果为 -16.6Chr(x): 返回以 x 为 ASCII 码值的字符。 Chr(97) 为“ a” , Chr(65) 为“ A” , Chr(13) 为回车符Asc(x): 返回字符 x 的编码值。Fix(x) 、 Int(x): 当 X≥0 时,都返回 X 的整数部分而删除小数, 当 X<0 时, Int 返回小于等于 x 的最大整数。 Fix 返回大于等于 X 的最小整数。 Int(-5.1) ‘-6 fix(-5.1) ‘-5
40 江苏计算机等级考试
Visual Basic 程序设计3.5.4 日期函数
Date: 返回系统日期。Time: 返回系统时间。Now: 返回系统日期和时间。Year(x): 返回 x 的年份。Month(x): 返回 x 的月份。Day(x): 返回 x 的日期。Weekday(x,[c]) :返回 x 的星期号。
? Year(date)
2005 思考题:求系统日期的年份?
41 江苏计算机等级考试
Visual Basic 程序设计3.5.5格式化函数 Format$
[功能 ] :将数值、日期和时间按指定格式输出。
[格式 ]: format (< 算术表达式 >,fmt$)
fmt$用于格式输出的字符串;省略,则类似于 CStr 函数
[格式控制字符 ]:
数位控制符: #、 0
标点控制符: . 、 ,
指数输出控制符: E+、 E-
符号控制符: %、 $、 -、 +
42 江苏计算机等级考试
Visual Basic 程序设计
设 x=123456.78 ,Print Format(x,”0000000000.0000”) 结果: 0012345678.7800 ‘x 的位数少于控制字符串的位数,自动在前后补 0Print Format(x,"############") 结果为: 123457 ‘x 的位数少于控制字符串的位数,自动在前后补空格Print Format(x,"###,###,###.#") 结果为: 123,456.8
‘ 增加千分位分隔符和小数点,使 x 四舍五入到一位小数Print Format(x,“########%”) 结果为: 12345678% ‘ 以百分比的形式表示, x 乘 100 后再加上百分号Print Format$(x,"0.00E+00") 结果为: 1.23E+05
‘ 用指数形式表示数值
举例
43 江苏计算机等级考试
Visual Basic 程序设计
1. 写出表达式( 1 ) XY 都是正整数或都是负整数
( 2)
2. 求表达式的值( 1 ) str(32.345)=cstr(32.345)
( 2 )“ 14” & 32
(X+sqr(x^2+1))^(1/3)
X=fix(x) and y=fix(y) and x*y>0
练 习
3 2 1 xx
false
1432