VisualBasic程序设计(第二版) 丁爱萍 第8章 过程

上传人:E**** 文档编号:89353999 上传时间:2019-05-23 格式:PPT 页数:125 大小:1.10MB
返回 下载 相关 举报
VisualBasic程序设计(第二版) 丁爱萍 第8章  过程_第1页
第1页 / 共125页
VisualBasic程序设计(第二版) 丁爱萍 第8章  过程_第2页
第2页 / 共125页
VisualBasic程序设计(第二版) 丁爱萍 第8章  过程_第3页
第3页 / 共125页
VisualBasic程序设计(第二版) 丁爱萍 第8章  过程_第4页
第4页 / 共125页
VisualBasic程序设计(第二版) 丁爱萍 第8章  过程_第5页
第5页 / 共125页
点击查看更多>>
资源描述

《VisualBasic程序设计(第二版) 丁爱萍 第8章 过程》由会员分享,可在线阅读,更多相关《VisualBasic程序设计(第二版) 丁爱萍 第8章 过程(125页珍藏版)》请在金锄头文库上搜索。

1、第8章 过程,8.1 Sub过程 8.2 Function过程 8.3 参数传递 8.4 键盘与鼠标事件过程 习题八,8.1 Sub 过 程,8.1.1 事件过程与通用过程 1. 事件过程 事件过程由VB自行声明,用户不能增加或删除。 当用户对某个对象发出一个动作时,Windows会通知VB产生了一个事件,VB会自动地调用与该事件相关的事件过程。,控件事件过程的语法为 Private Sub控件名_事件名(形参表) 语句组 End Sub 窗体事件过程的语法为: Private Sub Form_事件名(形参表) 语句组 End Sub,图8.1 “代码编辑器”窗口,图8.2 设置对象的Nam

2、e属性,2. 通用过程 通用过程不与任何特定的事件相联系,只能由别的过程来调用,它可以存储在窗体或标准模块中。,8.1.2 通用过程的创建 1. 在“代码”编辑窗口中输入 在“代码”编辑窗口中,把光标定位在已有过程的外面。然后按如下格式输入通用过程: Private | Public Static Sub过程名( 形参表 ) 语句列 Exit Sub 语句列 End Sub,2. 使用“添加过程”对话框 使用“添加过程”对话框建立过程的方法为 (1) 打开要添加过程的代码编辑窗口。 (2) 执行“工具”菜单中的“添加过程”命令, 打开“添加过程”对话框, 如图8.3所示。 (3) 在“名称”文

3、本框中输入过程名。从“类型”组中选择过程类型。从“范围”组中选择范围,相当于使用Public或Private关键字。 (4) 单击“确定”按钮,在代码窗口中显示情况如图8.4所示。,图8.3 “添加过程”对话框,图8.4 代码编辑窗口,8.1.3 通用过程的调用 每次调用过程都会执行Sub和End Sub之间的语句列。Sub过程以Sub开始,以End Sub结束。当程序遇到End Sub时,退出过程,立即返回到调用语句的后续语句。 调用过程有诸多技巧,它们与过程的类型、位置以及在应用程序中的使用方式有关。,调用Sub过程有两种方法: (1) 使用Call语句:Call过程名( 实参表 ) (2

4、) 直接使用过程名:过程名实参表,【例8-1】 编写一个计算矩形面积的Sub过程,然后调用该过程计算矩形面积。 设计步骤如下: (1) 建立应用程序用户界面并设置对象属性,如图8.5所示。,图8.5 建立计算矩形面积的用户界面,(2) 在代码窗口中直接输入通用事件代码。 Sub recarea(rlen, rwid) Dim area area = rlen * rwid 计算矩形面积 MsgBox “矩形的面积是:“ & area 用消息框输出矩形面积 End Sub,(3) 编写窗体Form的单击Click事件代码。 Private Sub Form_Click() Dim a, b a

5、= InputBox(“请输入矩形面积的长度:”) 用输入框输入矩形的长 b = InputBox(“请输入矩形面积的宽度:”) 用输入框输入矩形的宽 recarea a, b 调用recarea过程,也可以改为Call recarea(a, b) End Sub 如图8.6所示,编写子过程与窗体的事件过程代码。,图8.6 子过程与窗体的事件过程代码,(4) 运行工程。 单击标准工具栏中的“启动”按钮,运行工程,单击窗体,依次输入矩形的长、宽,如图8.7所示,求得矩形面积如图8.8所示。,图8.7 输入矩形的长、宽,图8.8 矩形面积的计算结果,【例8-2】 编写一个用来延迟指定时间(秒)的S

6、ub过程。通过调用该过程,按指定的时间间隔显示若干行信息。,设计步骤如下: (1) 为了简化操作,直接在窗体上输出。 (2) 编写通用事件过程代码: Static Sub delayloop(delaytime) Const secinday = 24& * 60& * 60& 一整天的秒数 loopfinish = Timer + delaytime 计算完成时间 If loopfinish secinday Then 如果延迟时间从午夜前开,loopfinish = loopfinish - secinday Do While Timer loopfinish 利用空循环实现延迟 Loop

7、 End If Do While Timer loopfinish 利用空循环实现延迟 Loop End Sub,一般情况下,Timer比loopfinish要小,因此可以用 Do While Timer loopfinish Loop 来控制时间延迟。,用上面的delayloop过程可以延迟指定的时间,调用时用需要延迟的时间(秒)作为实参。例如,延迟3秒可以用下面的代码实现: delayloop 3,(3) 编写窗体Form的Click事件代码: Private Sub Form_Click() Print “ 输出第一行内容。“ Print Print “ 请等3秒。“ delayloop

8、 3 调用通用过程,延迟3秒 Print Print “ 输出第二行内容。“,Print Print “ 请等6秒。“ Call delayloop(6) 调用通用过程,延迟6秒 Print Print “ 输出第三行内容。“ End Sub 运行程序。单击窗体,显示第一部分内容,等待3秒后,显示第二部分内容,再过6秒显示第三部分内容,如图8.9所示。,图8.9 时间延迟示例,8.2 Function 过 程,8.2.1 Function过程的定义 与Sub过程一样,Function过程也是一个独立的过程,可读取参数、执行一系列语句并改变其参数的值。与Sub过程不同的是,Function过程可

9、返回一个值。Function过程的语法是:, Private | Public Static Function函数名( 形参表 ) As类型 语句列 函数名=表达式 Exit Function 语句列 函数名=表达式 End Function,图8.10 定义函数过程,【例8-3】 编写求矩形面积的自定义函数。 在代码窗口中直接输入下面的代码: Public Function area(a As Integer, b As Integer) As Long area = a * b 计算并返回函数值 End Function,【例8-4】 计算任意整数n的阶乘的Function过程fact:

10、Function fact(x As Integer) As Long Dim p As Long, i As Integer p = 1 For i = 1 To x p = p * i 累乘 Next i fact = p 返回函数值 End Function,8.2.2 Function过程的调用 1. 直接调用 Function过程的调用比较简单,可以像使用VB内部函数一样来调用Function过程,即在表达式中写上它的名字。例如调用例8-3中计算矩形面积的Function过程,用下面代码: Print area(5, 6),2. 用Call语句调用 与调用Sub过程一样调用Funct

11、ion过程。下面的代码调用了同一个Function过程: Call area (2, 4) area 2, 4 当用这种方法调用函数时,VB放弃返回值。,3. 无参函数的调用 函数可以没有参数,在调用无参函数时不发生虚实结合。调用无参函数得到一个固定的值,如下述无参函数: Function F2 F2 = “Follow me.“ End Function 可如下调用: Debug.Print F2,【例8-5】 利用Function函数求矩形面积。 直接调用例8-3的area函数,代码如下: Private Sub Form_Load() Show Label3.Caption = area

12、(5, 6) 通过实参,调用area函数,输出 End Sub 如图8.11左所示输入函数代码和事件过程代码。运行结果如图8.11右所示。,图8.11 利用Function函数求矩形面积,【例8-6】 求16的阶乘之和。 下面给出命令按钮的Click事件代码。 Private Sub Command1_Click() Dim sum As Long, i As Integer 定义数据类型 For i = 1 To 6 求1到6的阶乘 sum = sum + fact(i) 累加阶乘和 Next i Label2.Caption = sum 输出结果 End Sub,图8.12 求阶乘和,【例

13、8-7】 编制随机整数Function过程,输出n个指定范围的随机数。 设计步骤如下: (1) 设计程序界面和设置对象属性,参见图8.13。,图8.13 输出n个指定范围内的随机数,(2) 编写代码。首先自定义Function函数,返回指定范围之内的随机整数。 Private Function Randomnum(n As Integer, m As Integer) Randomize Timer 随机数种子 Randomnum = Int(Rnd * (b + 1 - a) + a 产生并返回随机数 End Function “生成”命令按钮Command1的Click事件代码为,Priv

14、ate Sub Command1_Click() Dim n As Integer, x As Integer, y As Integer n = Val(InputBox(“随机数的个数:“, “请输入“, “100“) x = Val(Text1.Text) y = Val(Text2.Text) For i = 1 To n List1.AddItem Randomnum(x, y) 在列表框中添加随机数 Next End Sub,“清空”命令按钮Command2的Click事件代码为 Private Sub Command2_Click() List1.Clear End Sub 程序

15、运行结果如图8.13所示。,【例8-8】 编写Function过程;返回指定字符、长度的字符串,实现在窗体上输出如图8.14所示的图形。 首先编写能够返回指定字符、长度字符串的Function过程:,图8.14 输出图形,Private Function stri(n As Integer, f As String) p = “ For i = 1 To n 指定长度 p = p & “ “ & f 连接字符串 Next stri = p 返回函数值 End Function,编写窗体的Click事件代码,调用上述stri过程: Private Sub Form_Click() Dim f As String * 1 f = InputBox(“显示的字符:”, “请输入”, “$”) 指定组成图形的字符 If f = “ Then f = “$“ 输出字符,默认为“$” Cls Print,For n = 1 To 7 输出7行 Print Tab(2 * n + 2); 定位 Print stri(15 - 2 * n, f); 输出左半部分 Print Spc(8); 左右两部分间的间隔 Print stri(2 * n - 1, f); 输出右半部分 Pr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号