配色: 字号:
《Visual Basic程序设计教程(第3版)》第2章VisualBasic编程基础
2023-05-24 | 阅:  转:  |  分享 
  
第2章 Visual Basic编程基础第2章 Visual Basic编程基础 22.1 数据类型2.2 变量与常量2.3 运算
符和表达式2.4 基本语句2.5 数组2.6 过程与函数2.7 编写代码基础2.8 应用案例与设计—购货折扣计算器的设计2
.1 数据类型Visual Basic 6.0支持丰富的数据类型,不同类型的数据,所占的存储空间不同,并且对其处理方法也不一样。
只有相同(相容)类型的数据之间,才能进行操作,否则就会出现错误。Visual Basic 6.0的数据类型主要可分为标准数据类型和
自定义数据类型两大类。标准数据类型 1.数值(Numeric)型数据 整型Integer、长整型Long 、单精度浮点型Singl
e、双精度浮点型Double 、字节型Byte 、货币型Currency 2.字符String型数据变长字符串 定长字符串 Dim
Empstring As String203布尔(Boolean)型数据 布尔型数据只有True和Flase两个值,常用于表示
逻辑判断的结果。4对象(Object)型数据 对象型数据可用来表示应用程序中的对象,可以用Set语句来指定一个被声明为Object
的变量,去引用应用程序中的任何实际对象,例如,Sub Form_Click() Dim Temp As Object
Set Temp=Form1End Sub5日期(Date)型数据 Date型数据用来表示日期和时间,用8个字节的浮点数来存储,其
表示的日期范围从100年1月1日到9999年12月31日,而时间可以从00:00:00到23:59:59。 6变体(Variant
)型数据 变体型也称为通用类型,是一种通用的、可变的数据类型,它可以表示所有系统定义类型的数据。如果将一个变量定义为Variant
型,那么,在该变量中,可以存放任何类型的数据,例如,Dim Temp As VariantTemp=5.5  ''赋值
一个实数Temp="Visual Basic" ''赋值一个字符串Temp=#22/12/2000# ''赋值一个日期
自定义数据类型 自定义数据类型由若干个标准数据类型组成,使用Type语句来定义。它的一般形式为:Type 自定义类型名
元素名 As 类型  ...  元素名 As 类型End Type2.2 变量与常量 在程序运行期间,变量用
于临时存储数据。因数据类型不同,变量所占用的存储空间也有所不同。常量是在程序运行期间不变的量,常量的引入可提高程序的可读性和可维护
性。变量名的命名规则 在Visual Basic 6.0中,命名一个变量的规则如下:① 变量必须以字母开头。② 变量所用的字符只能
由字母、数字和下划线组成,不能含有标点、空格等字符。③ 字符个数不得超过40个字符。④ 不得使用Visual Basic 6.0的
保留字。变量声明 1.用Dim语句声明变量Dim语句声明变量格式如下:Dim 变量名 As 数据类型一条Dim语句可以同时声明多个
变量,但每个变量必须有自己的数据类型声明,数据类型声明不能共用 Dim X As IntegerDim Name As Strin
gDim Count As Integer,Sum As Single 2.用Static语句声明变量Static语句声明变量格式
如下:Static 变量名 As 数据类型使用Static声明的变量称为静态变量,它与Dim语句声明的变量不同之处在于,执行一个过
程结束时,过程中用Static声明的变量值仍保留,下次再调用此过程时,变量的初值是上次调用该过程结束时被保留的值。而用Dim语句声
明的变量在过程结束时,变量值不保留,每次调用时都重新初始化。 3.用Public语句声明变量 Public语句声明变量格式如下:P
ublic 变量名 As 数据类型Public语句声明变量只能在全局模块中使用,它所声明的变量,工程中的所有模块都可以引用。
如果一个过程或函数使它的值发生了改变,那么使用它的其他过程和函数也会受到相应的影响。 4.隐式声明使用变量时,Visual Bas
ic 不要求对变量都事先声明,不加声明的变量的数据类型系统默认为变体(Variant)型。也可使用类型符隐式声明变量的数据类型,例
如,x%是一个整型变量,s$是一个字符型变量。 变量的作用域 每一个变量都有它的有效作用范围,在Visual Basic中,变量按
它们的有效作用范围不同,可分为局部变量窗体和模块级变量全局变量变量的作用域(续)1.局部变量在一个过程内部定义的变量称为局部变量,
它只能在本过程内有效。 2.模块级变量(窗体变量)如果一个窗体中的不同过程,要使用同一个变量,就应该把它声明为模块级变量。 3.全
局变量全局变量是在模块文件中用Public(或Global)语句定义的变量,它可以被工程中的所有模块引用。常量 常量是在程序过程中
,其值始终保持不变的量。在Visual Basic 6.0中常量有两类:一类是用户定义的常量;另一类是系统提供的常量。 常量(续)
1.用户定义的常量在应用程序中,用户可根据需要创建自己的符号常量。定义常量使用Const语句,其格式如下:[Public/Priv
ate]Const 常量名[As 数据类型]=表达式常量(续)2.系统提供的常量除了用户可以通过定义创建常量外,在Visual B
asic中,还提供了系统定义的常量,这些常量在程序代码中可以直接使用它们。 2.3 运算符和表达式运算符 ? 算术(Ari
thmetic)运算符。 ? 连接(Conterminous)运算符。 ? 比较(Comparative)运算符。 ?
逻辑(Logical)运算符。表达式 运算符 1.算术运算符^乘方-负号、/乘除\整除Mod取模+、-加减运算符(续)2.连
接运算符连接运算符有两个:“&”和“+”,它们都可以将两个字符串连接起来。 连接符“&”与“+”的区别如下:(1)“+”连接符两边
的操作数,若一个是数学字符串(如“123”),而另一个为数值,则执行数值相加运算。(2)“&”连接符两边的操作数不管是字符型还是数
值型,进行连接操作前,系统先将操作数转换成字符型数据,然后再连接。运算符(续)3.比较运算符比较运算符的作用是将两个操作数进行比较
,若关系成立,则返回True,否则返回False。 表2.3列出了Visual Basic 6.0中的比较运算符。 4.逻辑运算符
逻辑运算符的作用是将操作数进行逻辑运算,结果是逻辑值True或False。表2.4列出了Visual Basic 6.0中的逻辑运
算符及其优先级。如果对数值进行逻辑运算,则以数字的二进制值逐位进行逻辑运算 表达式 表达式由变量、常量、运算符、对象和圆括号按一定
的规则组成,每一个表达式都产生惟一的运算结果,运算结果的类型由数据和运算符共同决定。在Visual Basic 6.0中有4类运算
符,对应也有4类表达式:算术表达式,字符串表达式,关系表达式和布尔表达式。2.4 基本语句 2.4.1 赋值语句 2.4.2
条件语句 2.4.3 循环语句赋值语句 赋值语句是程序设计中最基本、最常用的语句,它的格式为:变量名=表达式在Visual B
asic应用程序中,常用赋值语句给变量赋值或在程序中为对象的属性设置属性值。为对象的属性设置属性值的一般格式如下:对象名.属性=属
性值条件语句 (1)If条件Then语句(2)If条件Then 语句块 End If(3)
If 条件Then 语句块1 Else 语句块2
End If(4)If 条件1 Then 语句块1Else If 条件2 Then 语句块2……Else If 条件N T
hen 语句块NElse 语句块N+1End If 循环语句 在Visual Basic 6.0中提供的循环语句有:Do……Loo
p For……NextWhile……WendFor Each……Next循环语句(续)(1)Do……Loop语句。Do……Loop
语句用于循环次数未知的循环结构。该语句有4种语法格式。 ① Do While……Loop ② Do……Loop While ③ D
o Until……Loop ④ Do……Loop Until 循环语句(续)(2)For……Next 语句 For……Next语句
用于循环次数已知的循环结构。语句格式如下:For 循环变量 = 初值To终值 [Step 步长] 循环体Next 循环变量循环语
句(续)【例2.3】 分别用上述几种格式循环语句编写求1+2+3 +…+100和的程序。 2.5 数组 数组是一组按一定顺序排
列,且具有相同类型变量的集合。静态数组动态数组控件数组静态数组 1.一维数组声明一维数组格式如下:Dim 数组名([下界To]上界
)[As 类型]2.多维数组声明多维数组的格式如下:Dim 数组名([下界1 To]上界1,[下界2 To]上界2,……) [As
类型]动态数组 动态数组在声明时只定义数组名,不指定数组的大小(省略括号中的下标。使用Redim 语句定义数组大小的格式:Red
im数组名(下标1[,下标2……]) 其中,下标可以是常量,也可以是有了确定值的变量。控件数组 控件数组由一组相同类型的控件组成,
它们共用一个控件名,具有相同的类型,并共享同样的事件过程。当建立一个控件数组时,系统自动给每个元素赋一个惟一的下标索引号(Inde
x)。 建立控件数组常用以下步骤来实现:(1)在窗体上画出控件数组的第一个控件,并设置其Name等相关属性。(2)选中该控件,并选
择“编辑”菜单中的“复制”命令。(3)在“编辑”菜单中,选择“粘贴”命令,此时将显示一个“询问”对话框,询问是否要建立一个控件数组
。选择“是”之后,就建立了一个控件数组元素控件数组(续),其 Index 属性值为1,而画出的第一个控件的 Index 属性值为0
。(4)多次进行“粘贴”操作,建立所需个数的控件元素。(5)建立共享的事件过程。在运行时,可用Load语句添加控件数组元素,也可用
Unload语句删除控件数组中的某一个控件。但是,添加控件元素,必须在设计时创建一个Index属性值为0的控件,然后在运行时,才能
使用Load语句添加数组元素。Load语句和Unload语句的语法格式如下:Load 控件数组名(Index)Unload 控件数
组名(Index)控件数组 (续)【例2.4】 建立有5个命令按钮的控件数组,当单击某个命令按钮时,在文本框中分别显示每个法定节
假日的休息时间,如图2.5所示。控件数组 (续)图2.5 控件数组应用示例 2.6 过程与函数过程是完成某种特定功能的一组独立
的程序代码。在Visual Basic 6.0中,过程一般可分为子过程(Sub)和函数过程(Function)两大类,函数过程是带
返回值的特殊过程。 子过程 1.事件过程当某个对象对一个事件的发生做出响应时,Visual Basic会自动地调用与该事件相关的
事件过程。事件过程名是由对象的实际名字(在Name属性中规定)、下划线“_”和事件名组合起来构成的。Private Sub 对象名
_事件名([形参表]) 语句组End Sub 子过程(续)2.通用过程通用过程与事件过程不同,它不是由对象的某个事件来激活
的,也不依附于某一对象,它只能由别的过程来调用。它可以放在窗体或标准模块中。定义通用过程的一般格式如下:[Public|Priva
te|Static]Sub 过程名([形参表]) 语句组End Sub函数过程 函数过程是过程的另一种形式,它与子过程不同
的是,函数过程可以返回一个值给调用程序。 函数过程与内部函数一样,可以在程序中嵌套使用。定义函数过程的一般格式如下:[Public
|Private|Static]Functon函数名(形参表)[As类型] 语句 函数名=表达式
语句 End Function过程和函数的定义 在应用程序中建立子过程或函数过程有两种方法 :1.用代码窗口直接定
义 2.利用“工具”菜单下的“添加过程”命令定义过程的调用 1.子过程的调用在Visual Basic中,调用子过程有两种方法(1
)使用Call语句调用子过程 Call 子过程名([实参表])(2)直接使用子过程名调用子过程 子过程名[实参[,实参]…
…]过程的调用(续)2.函数过程的调用由于函数过程是由函数过程名来返回一个值,所以函数过程不能作为单独的语句加以调用。 变量名=函
数过程名(实参表)【例2.5】 求1到5的阶乘之和。参数传递 1.按地址传递参数2.按值传递参数【例2.6】 编写求数累加和的
过程,Test1子过程按值传递参数,Test2按地址传递参数,试分析Print语句的输出结果。Public Sub Test1(B
yval i As Integer) i=i+1End Sub Public Sub Test2(i As Integer)
i=i+1End Sub2.7 编写代码基础 Visual Basic 和任何程序设计语言一样,编写程序代码都要遵循一定的规则,
其主要约定如下: (1)将单行语句分成多行。 (2)在一行上可以书写多个语句。 (3)不区分大小写字母。 (4)数制系统。 (5)
注释。 2.8 应用案例与设计—购货折扣计算器的设计 1.应用案例要求2.应用案例分析与设计3.程序的调试与运行 1.应用案例要求
简单的折扣计算器,其功能分为以下2个:⑴输入用户所购商品价格,确定后累计用户所购商品个数及总金额;⑵系统自动利用如下所示的折扣规则
计算用户打折后的总金额。折扣规则如下:2.应用案例分析与设计 ⑴应用案例控件选择及属性设置 为了实现案例要求窗体应包含各文本框控件
、标签控件和命令按钮控件。程序界面设计如图2.9 所示。图2.9 程序运行界面2.应用案例分析与设计(续)主要控件属性设置如表2
.8所示。 2.应用案例分析与设计(续)⑵应用案例代码设计①在窗体中用到一些公共变量,所以在窗体代码窗口中“对象”列表框中选择“通
用”,在“过程”列表框中选择“声明”。Dim sum1 As Single ''折扣前总金额Dim sum2 As Single ''
折扣后总金额Dim jiage(50) As Single ''记录用户输入单个商品价格,用户最多可输入50个商品价格Dim i A
s Integer ''累计商品个数 2.应用案例分析与设计(续)②单击“确定”按钮,则累计商品个数,同时计算商品总金额和折扣后总金
额,并在相应的文本框中显示出来,此时应在按钮的“Click”事件编程。Private Sub Command2_Click()
i = i + 1 ''累计商品个数加1 jiage(i) = Val(Text1.Text) ''将每个商品价格存入数组jia
ge Text2.Text = i ''显示累计商品个好素 sum1 = sum1 + Val(Text1.Text) ''价
格累计 Text3.Text = sum1 ''显示商品总金额 sum2 = zhekou(sum1) ''调用折扣函数,计算
折扣后总金额 Text4.Text = sum2 ''显示折扣后总金额End Sub2.应用案例分析与设计(续)③单击“清空”按
钮,则将所有公共变量值置为0,将所有显示清除,此时应在按钮的“Click”事件编程。Private Sub Command3_Cl
ick() i = 0 sum1 = 0 sum2 = 0 Text1.Text = "" Text
2.Text = "" Text3.Text = "" Text4.Text = "" For j = 0 To
50 jiage(j) = 0 NextEnd Sub 2.应用案例分析与设计(续)④单击“核对”按钮,则所有输
入的商品价格核对一遍,此时应在按钮的“Click”事件编程。Private Sub Command4_Click() Dim
ss As Single ss = 0 For j = 1 To i MsgBox "第" & j & "个商品
价格:" & jiage(j) ''逐一显示输入的商品价格 ss = ss + jiage(j) 2.应用案例分析与设
计(续)Next If ss = Val(Text3.Text) Then''判断与目前显示价格是否相等 MsgBox
"核对完成,结果正确!", , "系统提示"Else MsgBox "核对完成,结果不正确!", , "系统提示" En
d IfEnd Sub2.应用案例分析与设计(续)⑤由于折扣规则是固定的,每次计算完商品总金额后,均需要计算折扣后总金额,这部分代
码功能相同,为了提高代码的重用度,且减少代码长度,折扣计算函数单独给出Public Function zhekou(x As Si
ngle) ''过程功能:根据输入x值,根据折扣规则计算折后值 Dim y As Single If x < 500
Then y = x ElseIf x >= 500 And x < 1500 Then y = 0.95
x 2.应用案例分析与设计(续)ElseIf x >= 1500 And x < 2500 Then y = 0.9 x Else y = 0.8 x End If zhekou = yEnd Function 3.程序的调试与运行 运行程序,在输入用户商品金额文本框中输入一个商品价格“1000”,单击“确定”按钮,累计商品个数文本框中显示为“1”,无折扣总金额文本框中显示为“1000”,由于1000介于500~1500之间,折扣率为0.95,所以又折扣总金额文本框中显示“950”,程序运行界面如图2.9所示。单击“核对”按钮,则一次显示输入的商品价格。 单击“清空”按钮可以清空各文本框中的内容,而且将各初始值置0。实训二 简单程序设计 1、编写一个程序,计算某学生奖学金的等级。2、利用冒泡排序法将随机得到的五个整数进行排序。3、编写一个过程,对文本框中输入的英文字母和数字(0-9)字符串进行分类统计。【提示】:编写程序时涉及到的函数和相关内容包括:⑴ Mid(Str,n,m)函数的功能是由Str的第n个字符读起,读取后面的m个字符。 ⑵ 大写字母的ASCII是65-90;小写字母的的ASCII是97-122。
献花(0)
+1
(本文系src862tekto...首藏)