版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 Visual Basic程序设计概述1.1 概述1.2 运行环境、安装和启动1.3 集成开发环境1.1 概述VB简介VB功能特点VB6新功能特点VB简介 1991年Microsoft公司推出VB1.0 1992年、1993年、1995年、1997年、1998年相继推出VB2.0、 VB3.0、 VB4.0、VB5.0 、VB6.0 VB5.0 的三个版本 学习版(Learning) 专业版(Professional) 企业版(Enterprise)VB功能特点 具有面向对象的可视化设计工具 事件驱动的编程机制 提供了易学易用的应用程序集成开发环境 结构化的程序设计语言 支持多种数据库的
2、访问 支持DDE、DLL、OLE技术 完备的Help联机帮助功能VB6.0新功能特点 新增控件(CoolBar,ADO Data, ImageCombo DateTimePicker, MonthView等) 语言新功能(新增较多的字符串函数,函数可返回数组,增加了文件系统对象) 数据库功能的增强(新增了ADO技术) 增强网络功能(提供了DHTML设计工具) 新增了多个应用程序向导(数据向导,数据窗体向导,IIS应用程序等)1.2 运行环境、安装和启动运行环境安装启动与退出运行环境 硬件环境:486以上处理器、16MB以上内存、50MB以上的硬盘空间、CD-ROM驱动器、鼠标等 软件环境:Wi
3、ndows95或 indowsNT3.51以上版本安装 初次安装: 启动Windows95 插入具有VB6.0系统的光盘 运行VB6.0安装程序Setup.exe 选择“典型安装”或“自定义安装”或“最小安装” 添加或删除VB6.0部件: 插入具有VB6.0系统的光盘 运行“开始/设置/控制面板” 双击控制面板中的“添加/删除程序”图标 选择其中的“Visual Basic 6.0”选项启动与退出 启动 桌面:开始/程序/Visual Basic 6.0 建立快捷方式,双击图标 退出 选择文件菜单下的退出命令 单击窗口关闭按钮1.3 集成开发环境(I DE)主窗口窗体(Form)窗口属性(Pr
4、operties)窗口工程资源管理器(Project Explore)窗口代码(Code)窗口窗体布局(Form Layout)窗口对象浏览器(Object Browser)窗口工具箱(Tool Box)窗口第二章 VB简单的程序设计2.1 程序设计方法的发展初期的程序设计结构化程序设计面向对象的程序设计2.2 VB中对象的概念对象对象的建立和对象的命名对象的属性、事件和方法 属性(Property)事件、事件过程和事件驱动 方法(Method)2.3 建立简单的应用程序例2.1 编程对输入的字符进行转换建立用户界面的对象 对象属性的设置对象事件过程及编程对象txtInput对应的KeyPre
5、ss事件过程对象cmdClear对应的Click事件过程对象cmdEnd对应的Click事件过程程序的运行保存文件2.4 窗体和基本控件例2.8 便笺板例子例2.8 属性设置例2.2 Font等属性运行效果例2.3 颜色和对齐属性设置效果例2.3 属性设置基本属性Name(名称)属性、Caption(标题)属性、Height,Width,Top,Left属性、Enabled属性Visible属性、Font属性、ForeColor(前景颜色)属性、BackColor (背景颜色)属性BackStyle (背景风格)属性、BorderStyle (边框风格)属性、Alignment属性AutoSi
6、ze属性、WordWarp属性、TabIndex属性、控件默认属性标签(Label)文本框(TextBox)例2.6 文本框的例子例2.6 代码例2.7 数据过滤例2.7 代码Text文本属性、MaxLength属性、MultiLine多行属性、ScrollBars属性、Locked属性SelStart、SelLength和SelText属性、Change事件、KeyPress事件、LostFocus事件SetFocus方法命令按钮Caption(标题)属性、Default(确认)属性、Cancel(功能取消)属性Value(检查按钮状态)属性、Style属性、Picture(图片)属性、To
7、olTipText(工具提示)属性常用方法例2.10 移动图形示例例2.10 移动图形示例(续)Print 方法、Cls方法、Move方法例2.9 用Print方法输出窗体(Form)1 窗体的属性 2 事件 3 方法 窗体的属性 基本属性 Caption属性 MaxButton属性 MinButton属性 ControlBox属性 BorderStyle属性 Icon属性 Picture属性 WindowsState属性事件 Click事件 DblClick事件 Load事件 此事件是在一个窗体被装载时发生。该事件通常用来在启动应用程序对属性和变量进行初始化。 Activate事件 当一个窗
8、体成为活动窗口时所触发的事件。方法 Print方法 Cls方法 Move方法应用举例2.5 工程的管理及环境的设置工程的组成创建、打开和保存工程添加、删除和保存文件环境设置2.6 生成可执行文件和制作安装盘生成可执行文件制作安装盘 2.7 使用帮助功能帮助主题”命令的使用使用“联机手册”从Internet上获得帮助第三章 VB语言基础3.1 编码规则 3.2 数据类型 3.3 变量与常量 3.4 运算符和表达式 3.5 基本语句 3.6 数组 3.7 过程 3.8 常用算法举例3.9 程序调试3.1 编码规则VB代码中不区分字母的大小写语句书写自由注释有利于程序的维护和调试保留行号与标号举例V
9、B代码中不区分字母的大小写 为了提高程序的可读性,VB对用户程序代码进行自动转换 对于VB中的关键字,首字母总被转换成大写 若关键字由多个英文单词组成,自动将每个单词首字母转换成大写 对于用户自定义的变量、过程名,VB以第一次定义的为准,以后输入的自动向首次的定义转换语句书写自由 在同一行上可以书写多条语句,语句用“:”分隔 单行语句可分若干行书写,在本行后加入续行符(空格和下划线“ _”) 一行允许多达255个字符注释有利于程序的维护和调试 注释以Rem开头,也可以用撇号“ ”引导注释内容,用撇号“ ”引导的注释可以直接出现在语句后面 在VB5.0中新增了“块注释/取消块注释”功能块,使得将
10、若干行语句(或文字)设置为注释或取消注释十分方便保留行号与标号 VB源程序也接受行号与标号,但这不是必须的。标号是以字母开始而冒号结束的字符串,一般用在转向语句中。对于结构化程序设计方法,应限制转向语句的使用。举例Rem This is a exampleDim AnotherVar As String, Choice As _续行 Boolean, BirthDate As Datex = 15 : y=10z = (x-y)*33.2 数据类型标准数据类型自定义类型 标准数据类型 数值(Numeric)数据类型 日期(Date)数据类型 逻辑(Boolean)数据类型 字符(String)
11、数据类型 对象(Object)数据类型 变体(Variant)数据类型数值(Numeric)数据类型 Integer为整型( i, 2B) Long为长整型(l,4B) Single为单精度型(s,4B) Double为双精度型(dbl,8B) Currency为货币型(c,8B) Byte为字节型(b,1B)日期(Date)数据类型 按8字节的浮点数存储 表示范围 100年1月1日9999年12月31日 日期型常量 任何字面上可被认作日期和时间的字符,只要用#括起来,都可以作为日期型数值 举例数值数据转化为日期的例子Private Sub Form_Click()Dim T As DateT
12、 = -2.5Picture1.Print TEnd Sub逻辑(Boolean)数据类型 只有True与False两个值 逻辑型转换为整型 True -1,False 0 其它类型转换为逻辑型 非0 True,0 False字符(String)数据类型 变长字符串 Dim s1 As String 定长字符串 Dim s2 As String*50 赋予s2的字符若少于50个,则右部补空格;若赋予的字符超过50个,则多余部分截去。对象(Object)数据类型 对象变量通过32位(4个字节)地址来存储,该地址可引用应用程序中的对象 用Set语句指定一个被声明为Object的变量去引用应用程序所
13、识别的任何实际对象变体(Variant)数据类型 VB中所有未定义的变量的缺省数据类型,它可以包括数值型、日期型、对象型、字符型的数据 它还可以包括四种特殊的数据 Empty(空):未指定确定的数据 Null(无效):数据不合法 Error(出错):指出过程中出现一个错误条件 Nothing(无指向):数据没指向一个具体对象自定义类型Type 自定义类型名 元素名(下标) As 类型名 元素名(下标) As 类型名End Type3.3 变量与常量变量或常量的命名规则变量声明 常量变量或常量的命名规则 必须以字母、汉字开头,由字母、汉字、数字或下划线组成,长度40个字符 不能使用VB中的关键字
14、 不区分变量名的大小写 为增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型变量声明 用Dim语句声明变量 Dim 变量名 As 类型 用类型说明符直接声明变量 变量名类型符 隐式声明 所有隐式声明的变量都是Variant类型用Dim语句声明变量的例子Dim iCount As IntegerDim sAllsum As SingleDim strS As String*100或 Dim iCount As Integer, sAllsum As Single用类型说明符声明变量的例子iTem%声明整型变量sHight!声明单精度型变量strName$声明字符串变量cXyz声
15、明货币型变量常量 用户声明常量 Const 常量名 As 类型 = 表达式 系统提供的常量 VB系统提供了应用程序和控件的系统定义常量,系统定义常量位于对象库中。用户声明常量的例子Const PI = 3.14159声明了常量PI, 代表3.14159,单精度型Const MAX As Integer = &O144声明 了常量MAX,代表八进制数144,整型Const COUNTS# = 45.67声明了常量COUNTS,代表45.67,双精度型系统提供的常量的例子3.4 运算符和表达式运算符 表达式 常用内部函数运算符 算术运算符 -(负号) * / Mod + - 字符串运算符
16、+ 或 & 关系运算符 = >= > < <= <> 逻辑运算符 Not And Or Xor Eqv Imp字符比较算术运算符的优先级逻辑运算符的优先级与真值表 运算符示例 本示例使用 运算符来表示某数的乘方的指数值。Dim MyValueMyValue = 2 2' 返回 4MyValue = 3 3 3' 返回 19683MyValue = (-5) 3' 返回 -125* 运算符示例本示例使用 * 运算符来计算两数的乘积。Dim MyValueMyValue = 2 * 2' 返回 4MyValue = 459
17、.35 * 334.90 返回 153836.315 + 运算符示例本示例使用 + 运算符来计算数值的和。+ 运算符也可以用来做字符串的串接操作。Dim MyNumber, Var1, Var2MyNumber = 2 + 2' 返回 4MyNumber = 4257.04 + 98112' 返回 102369.04Var1 = "34": Var2 = 6' 初始化混合变量的值MyNumber = Var1 + Var2' 返回 40Var1 = "34": Var2 = "6"' 用字符串初
18、始化混合变量的值MyNumber = Var1 + Var2 返回 “346”(字符串被串接起 来) - 运算符示例本示例使用 - 运算符来计算两数值的差。Dim MyResultMyResult = 4 - 2' 返回 2MyResult = 459.35 - 334.90 返回 124.45 / 运算符示例本示例使用 / 运算符来计算浮点数除法。Dim MyValueMyValue = 10 / 4' 返回 2.5MyValue = 10 / 3' 返回 3.333333 运算符示例本示例使用 运算符来计算整型除法。Dim MyValueMyValue = 11 4
19、' 返回 2MyValue = 9 3' 返回 3 MyValue = 100 3' 返回 33 Mod 运算符示例 本示例使用 Mod 运算符来对两数作除法运算,但返回其余数而非商数。如果两数中有一数为浮点数,该数会先被四舍五入成整型后再进行运算。Dim MyResultMyResult = 10 Mod 5' 返回 0MyResult = 10 Mod 3' 返回 1MyResult = 12 Mod 4.3' 返回 0MyResult = 12.6 Mod 5' 返回 3 & 运算符示例本示例使用 & 运算符将字符串
20、串接起来。Dim MyStrMyStr = "Hello" & " World" ' 返回 "Hello World"MyStr = "Check " & 123 & " Check“ ' 返回 "Check 123 Check" 关系运算符示例本示例示范各种“关系运算符”的用法。Dim MyResult, Var1, Var2MyResult = (45 < 35)' 返回 FalseMyResult = (45 = 45)
21、9; 返回 TrueMyResult = (4 <> 3)' 返回 TrueMyResult = ("5" > "4")' 返回 TrueVar1 = "5": Var2 = 4' 设置变量初值。MyResult = (Var1 > Var2)' 返回 TrueVar1 = 5: Var2 = EmptyMyResult = (Var1 > Var2)' 返回 TrueVar1 = 0: Var2 = EmptyMyResult = (Var1 = Var2)
22、9; 返回 True Not 运算符示例 本示例使用 Not 运算符来做两个表达式结果的逻辑非(logical negation)。Dim A, B, C, D, MyCheckA = 10: B = 8: C = 6: D = Null 设置变量初值。MyCheck = Not(A > B)' 返回 False。MyCheck = Not(B > A)' 返回 True。MyCheck = Not(C > D)' 返回 Null。MyCheck = Not A' 返回 -11(位比较的结果) And 运算符示例 本示例使用 And 运算符来做
23、两个表达式结果的逻辑合取(a logical conjunction)。Dim A, B, C, D, MyCheckA = 10: B = 8: C = 6: D = Null 设置变量 初值。MyCheck = A > B And B > C' 返回 TrueMyCheck = B > A And B > C' 返回 FalseMyCheck = A > B And B > D' 返回 NullMyCheck = A And B' 返回 8(位比较的结果) Or 运算符示例 本示例使用 Or 运算符来做两个表达式结果的逻辑
24、析取(logical disjunction)。Dim A, B, C, D, MyCheckA = 10: B = 8: C = 6: D = Null' 设置变量初值。MyCheck = A > B Or B > C' 返回 True。MyCheck = B > A Or B > C' 返回 True。MyCheck = A > B Or B > D' 返回 True。MyCheck = B > D Or B > A' 返回 Null。MyCheck = A Or B' 返回 10(位比较的结果
25、) Xor 运算符示例 本示例使用 Xor 运算符来做两个表达式结果的逻辑异或(logical exclusion)。Dim A, B, C, D, MyCheckA = 10: B = 8: C = 6: D = Null' 设置变量初值MyCheck = A > B Xor B > C' 返回 FalseMyCheck = B > A Xor B > C' 返回 TrueMyCheck = B > A Xor C > B' 返回 FalseMyCheck = B > D Xor A > B' 返回 Nu
26、llMyCheck = A Xor B' 返回 2(位比较的结果) Eqv 运算符示例 本示例使用 Eqv 运算符来做两个表达式结果的逻辑等价(logical equivalence)。Dim A, B, C, D, MyCheckA = 10: B = 8: C = 6: D = Null' 设置变量初值MyCheck = A > B Eqv B > C' 返回 TrueMyCheck = B > A Eqv B > C' 返回 FalseMyCheck = A > B Eqv B > D' 返回 NullMyChe
27、ck = A Eqv B' 返回 -3(位比较的结果) Imp 运算符示例本示例使用 Imp 运算符来做两个表达式结果的逻辑隐含式(logical implication)。Dim A, B, C, D, MyCheckA = 10: B = 8: C = 6: D = Null' 设置变量初值。MyCheck = A > B Imp B > C' 返回 True。MyCheck = A > B Imp C > B' 返回 False。MyCheck = B > A Imp C > B' 返回 True。MyCheck
28、 = B > A Imp C > D' 返回 True。MyCheck = C > D Imp B > A' 返回 Null。MyCheck = B Imp A' 返回 -1(位比较的结果) 表达式 由变量、常量和运算符按一定规则组成的一个字符序列为表达式 不同数据类型的转换 Integer<Long<Single<Double<Currency 优先级 算术运算符>=字符运算符>关系运算符>逻辑运算符常用内部函数 常用数学函数 常用转换函数 字符串函数 日期函数 格式输出函数 Shell函数常用数学函数
29、常用转换函数字符串函数日期函数格式输出函数Shell函数 VB中,不但可以调用内部函数,还可以调用应用程序,这是通过Shell函数来实现的。Shell函数的格式如下:Shell(命令字符串,窗口类型)命令字符串:要执行的应用程序名,包括路径,它必须是可执行文件。窗口类型:表示执行应用程序的窗口大小,为整数值。3.5 基本语句赋值语句 与用户交互函数和过程 选择结构 循环结构 其他辅助控制语句赋值语句 LET变量名=表达式LET:表示赋值,通常省略表达式:其类型应与变量名的类型一致例:iA%=3.5 sRate!=0.1 Text1.Text=“” Text1.Text=“欢迎使用VB5.0”与
30、用户交互函数和过程 InputBox函数 InputBox$(提示,标题,缺省,x坐标,y坐标 MsgBox函数和MsgBox过程 MsgBox函数形式如下: 变量%= MsgBox(提示,按钮,标题) MsgBox语句形式如下: MsgBox 提示,按钮,标题例3.2 帐号和密码输入检验编一帐号和密码输入的检验程序 帐号为不超过6位数字,密码为4位字符 密码输入时在屏幕上不显示输入的字符,而以“*”代替 当输入不正确时,显示有关信息InputBox函数选项 “$”:有此选项,返回的数据类型是字符串型;省略此项,返回的数据类型是变体型。 “提示”:字符串表达式,不能省略该项,在对话框中作为信息
31、显示。 “标题”:字符串表达式,在对话框标题显示;若省略,则把应用程序名放入标题栏中。 “缺省”:字符串表达式,当在输入对话框中无输入时,则该缺省值作为输入的内容。MsgBox函数和MsgBox过程选项 “提示”和“标题”:意义与InputBox函数中对应的参数相同。 “按钮”:整型表达式,决定信息框按钮的数目、类型及出现在信息框上的图标类型。选择结构 IfThen语句(单分支结构) If Then Else语句(双分支结构) If Then ElseIf语句(多分支结构) If 语句的嵌套 Select Case 语句(情况语句) 条件函数循环结构 For循环语句 Do WhileLoop循
32、环语句 Do Loop While循环语句 循环的嵌套循环的嵌套(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉例3.7 打印九九乘法表Private Sub Picture1_Click() Dim se As String Picture1.Print Tab(35); "九九乘法表" Picture1.Print Tab(35); "_" For i = 1 To 9 For j = 1 To 9 se = i & "*" & j & "=" &
33、i * j Picture1.Print Tab(j - 1) * 9 + 1); se; Next j Picture1.Print Next iEnd Sub例3.6 求最小公倍数、最大公约数Private Sub Form_Click() n = Val(Text1) m = Val(Text2) If n <= 0 Or m <= 0 Then Print "数据出错" End End If mn = m * n If m < n Then t = m: m = n: n = t '使得m>n Do While (n <>
34、 0) '用do while.loop结构实现求最大公约数 r = m Mod n m = n n = r Loop Print "最大公约数=", m, Chr(13) + Chr(10) Print "最小公倍数=", mn / mEnd Sub其他辅助控制语句 Goto 语句 形式如下: Goto 标号|行号 End 语句 形式如下: End例3.8 求100以内的素数Private Sub Command1_Click() Dim i As Integer, m As Integer For m = 2 To 100 For i = 2
35、To m - 1 If (m Mod i) = 0 Then GoTo notnextm Next i Print mnotnextm: Next mEnd Sub例3.6 求最大公约数、最小公倍数 求最大公约数的基本思想 一个求最大公约数的实例 求两个自然数的最大公约数的算法 求最小公倍数 程序求二个正整数m和n的最小公倍数 求得最大公约数以后,将原两数相乘并除以最大公约数,就得到了最小公倍数。 求二个正整数m和n的最大公约数基本思想: 设m = na0 + r1 (0 r1 n) 就是说m是n的a0倍还多r1那么m和n的最大公约数与r1的最大公约数相同。若r1=0,则n就是m和n的最大公约
36、数。若r10,则再对n和r1重复上面的操作,直到求出rn=0为止。求525和231的最大公约数(1)求525和231的余数 525 mod 231=63 由于63不等于0,所以,525与231的最大公约数等于231与63的最大公约数求231和63的最大公约数(2)求231和63的余数 231 mod 63=42 由于42不等于0,所以,231与63的最大公约数等于63与42的最大公约数求63和42的最大公约数(3)求63和42的余数 63 mod 42=21 由于21不等于0,所以,63与42的最大公约数等于42与21的最大公约数求42和21的最大公约数(4)求42和21的余数 42 mod
37、21=0 所以,42和21的最大公约数等于21。 因此525与231的最大公约数是21求两个自然数的最大公约数的算法 S1:输入两个自然数M、N S2:求M 除以N 的余数R S3:使M=N,即用N 代换M S4:使N=R,即用R 代换N S5:若R0,则重复执行S2、S3、S4(循环),否则转S6 S6:输出M,M 即为M 和N 的最大公约数3.6 数组静态数组动态数组数组的基本操作 控件数组 数组的应用静态数组 一维数组 声明一维数组形式如下: Dim 数组名(下标)As 类型 多维数组 声明多维数组形式如下: Dim 数组名(下标1,下标2)As 类型动态数组及声明 建立动态数组的方法:
38、 在过程外用Dim,Private或Public语句声明括号内为空的数组 在过程中用ReDim语句指明该数组的大小 ReDim语句的形式如下: ReDim 数组名(下标1,下标2) 过程中可多次使用ReDim语句来改变数组的大小或维数 可以在ReDim语句后加Preserve参数来保留数组中的数据Dim a() As IntegerPrivate Sub Picture1_Click() Dim i As Integer, j As Integer ReDim a(3, 2) For i = 0 To 3 For j = 0 To 2 a(i, j) = i * 2 + j Picture1.
39、Print "a(" i; "," j; ")=" a(i, j); "" Next j Picture1.Print Next i ReDim Preserve a(3, 4) Picture1.Print "_" For j = 3 To 4 a(3, j) = j + 20 Picture1.Print "a(3," j - 2; ")=" a(3, j - 2), '显示原来的最后2个元素 Picture1.Print "a(3,
40、" j; ")=" a(3, j) '显示新增加的最后2个元素 Next j End Sub数组的基本操作 数组元素的初始化 数组的输入 数组的输出 求数组中最大元素及其下标 将数组中各元素交换控件数组 控件数组的概念 控件数组是由一组相同类型的控件组成。他们共用一个控件名,具有相同的属性。 控件数组的建立 在设计时建立 运行时添加控件数组 例3.13 1.统计(例3.10)2.大量数据的输入(例3.11) 利用Array函数来解决数组初始值的输入 利用文本框或InputBox函数解决少量数据的输入3.数组排序 选择法排序 选择法排序 选择法排序的思想是:
41、 对有n个数的序列,从中选出最小的数(递增),与第一个数交换位置; 除第一个数外,其余n-1个数再按(1.)的方法选出次小的数,与第二个数交换位置; 重复这个过程n-1遍,最后构成递增序列。选择法排序交换过程原始数据869327第1趟交换后269387第2趟交换后239687第3趟无交换236987第4趟交换后236789第5趟无交换236789 假定iA数组有n 个元素,下标为1n,数组元素已赋值,排序程序段如下:For i=1 To n-1iMax=iFor j=i+1 To nIf iA(j)<iA(iMax) Then iMax=jNext jt=iA(i)iA(i)=iA(iM
42、ax)iA(iMax)=tNext i3.7 过程自定义过程的种类过程的定义 过程的调用 参数传递 变量、过程的作用域 递归 自定义过程的种类 以“Sub”保留字开始的子过程 以“Function”保留字开始的函数过程 以“Property”保留字开始的属性过程 以“Event”保留字开始的事件过程过程的定义 利用“工具”菜单下的“添加过程”命令定义 利用代码窗口直接定义过程的调用 子过程的调用 子过程名 参数列表或 Call 子过程名(参数列表) 函数过程的调用 被调用函数必须是表达式的一部分,如: 变量名=函数过程名(参数列表) 注意事项例3.15 计算级数部分和的例子 级数为 x2 xn
43、 1 + x + + + + 2! n! 精度为|xn | < eps|n! | 编写子过程和函数过程,并分别调用。计算级数部分和的子过程Sub jishu2(s#, x!, eps#) Dim n%, t# n = 1: s = 0: t = 1 Do While (Abs(t) >= eps) s = s + t t = t * x / n n = n + 1 LoopEnd Sub计算级数部分和的函数过程Function jishu1(x!, eps#) As Double Dim n%, s#, t# n = 1: s = 0: t = 1 Do While (Abs(t)
44、 >= eps) s = s + t t = t * x / n n = n + 1 Loop jishu1 = sEnd Function主调程序调用函数过程和子过程Private Sub Command1_Click() Dim f1#, f2# f1 = jishu1(2#, 0.000001) Call jishu2(f2, 2#, 0.000001) Print "f1=" f1 Print "f2=" f2End Sub调用过程的注意事项 “参数列表”称为实参或实元,它必须与形参保持个数相同,位置与类型一一对应。 调用时把实参的值传递给
45、形参称为参数传递。参数传递有两种方式:传值与传址。 当参数为数组时,形参与实参在参数声明时应省略其维数,但括号不能省。 调用子过程的形式有两种,用Call关键字时,实参必须用圆括号括起,反之则全无。参数传递 传址与传值 传址的结合过程 传值的结合过程 例3.16 数组参数的传递 例3.17 例3.17 求一维数组各元素的积 编一函数过程,求任意一维数组各元素的积,再分别调用该函数计算 5 8t1 = ait2 = bi i=1 i=3 函数过程 主调过程函数过程Function tim(a() As Integer) Dim t#, i% t = 1 For i = LBound(a) To
46、UBound(a) '求数组的上下界 t = t * a(i) Next tim = t End Function主调过程Private Sub Command1_Click() Dim a%(1 To 5), b%(3 To 8), i%, t1#, t2# For i = 1 To 5 a(i) = i Next For i = 3 To 8 b(i) = i Next t1 = tim(a() t2 = tim(b() Print "t1=" t1, "t2=" t2 End Sub例3.16 交换两个数的过程 Swap1用传值传递,Swa
47、p2用传址传递,哪个过程能真正实现两个数的交换? Swap1过程 Swap2过程 主调过程Swap1过程Public Sub swap1(ByVal x As Integer, ByVal y As Integer) Dim t As Integer t = x: x = y: y = t Print "x=" x, "y=" y End SubSwap2过程Public Sub swap2(x As Integer, y As Integer) Dim t As Integer t = x: x = y: y = t Print "x=&qu
48、ot; x, "y=" y End Sub主调过程Private Sub Command1_Click() Dim a As Integer, b As Integer a = 10: b = 20 x = a: y = b swap1 x, y Print "a1=" a, "b1=" b a = 10: b = 20 x = a: y = b swap2 a, b Print "a2=" a, "b2=" b Print "x=" x, "y=" yE
49、nd Sub传址的结合过程当调用一个过程时,它将实参的地址传递给形参。因此在被调过程体中对形参的任何操作都变成了对相应实参的操作,于是实参的值就会随形参的改变而改变。当参数是字符串或数组时,使用传址传递直接将实参的地址传递给过程,会使程序的效率提高。传值的结合过程当调用一个过程时,系统将实参的值复制给形参,实参与形参断开了联系。被调过程中的操作是在形参自己的存储单元中进行,当过程调用结束时,这些形参所占的存储单元也同时被释放。因此在过程中对形参的任何操作不会影响但实参。数组参数的传递 数组一般通过传址方式进行传递,在传递数组时要注意以下事项: 在实参列表和形参列表中放入数组名,忽略维数的定义,
50、但圆括号不能省略。 如果被调过程不知道实参数组的上下界,可用Lbound和Ubound函数确定实参数组的下界和上界。Lbound和Ubound函数 Lbound和Ubound函数的形式如下:L|Ubound(数组名,维数)其中:维数指明要测试的是第几维的下 标值,默认是一维数组。传址与传值在调用过程时,一般主调过程与被调过程之间有数据传递,即将主调过程的实参传递给被调过程的形参,完成形参与实参的结合(虚实结合),然后执行被调过程体。实参与形参的结合有两种方法:传址和传值,其中传址又称为引用,是默认方法,而传值则在形参前加“ByVal”。变量、过程的作用域 VB应用程序的组成 过程的作用域 变量
51、的作用域 例3.18 静态变量 例3.19例3.18Public Pa As integer全局变量Private Mb As string*10窗体/模块级变量Sub F1()Dim Fa As integer局部变量End SubSub F2()Dim Fb As Single 局部变量 End Sub例3.18(续)Public Temp As integer全局变量Sub Form_Load ()Dim Temp As Integer局部变量Temp = 10访问局部变量Form1.Temp = 20访问全局变量Print Form1.Temp,Temp显示 20 10End Sub例3.19Private Sub Form_Click() Dim i As Integer, isum As Integer For i = 1 To 5 isum = sum(i) Print "isum=" isum NextEnd Sub例3.19(续)Private Function sum(n As Integer) Static j As Inte
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 尾水渠浆砌专项施工方案
- 家属陪护住院制度
- 2026日照市辅警招聘面试题及答案
- 水浒传的竞赛题目及答案
- 2026年幼儿园家乡特产
- 2026年蒸馒头课件幼儿园
- 2026年幼儿园剪纸故事
- 2026年幼儿园开车去旅行
- 2026年幼儿园神奇的汉字
- 2026年幼儿园种植区案例
- 生态牛肉营销方案(3篇)
- 建设项目火灾应急演练脚本
- 2025年大学生提干选拔考试历年真题试卷及答案
- 传染病知识培训试题及答案
- 2026年重大事故隐患判定标准专项培训试卷及答案
- 2025-2026学年统编版(新教材)小学道德与法治三年级下册《少让父母操心》教学课件
- 2025年中国邮政经济金融笔试及答案
- 2024-2025学年广东省部分高中高二下学期期中考试历史试题(解析版)
- 钢结构劳务分包施工方案
- 市政工程项目分包与管理案例分析
- 2026年《必背60题》法官助理高频面试题包含答案
评论
0/150
提交评论