第5章过程教学幻灯片

上传人:yuzo****123 文档编号:141173269 上传时间:2020-08-05 格式:PPT 页数:64 大小:766.50KB
返回 下载 相关 举报
第5章过程教学幻灯片_第1页
第1页 / 共64页
第5章过程教学幻灯片_第2页
第2页 / 共64页
第5章过程教学幻灯片_第3页
第3页 / 共64页
第5章过程教学幻灯片_第4页
第4页 / 共64页
第5章过程教学幻灯片_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《第5章过程教学幻灯片》由会员分享,可在线阅读,更多相关《第5章过程教学幻灯片(64页珍藏版)》请在金锄头文库上搜索。

1、,如同常量的定义一样,有时不仅仅是几个数字反复出现在程序中,而且是很多段代码在做几乎同样的事,如果有一些通用的代码可供调用的话,那么程序就会简练得多,而且更为清晰,这就是过程与函数。Vb中使用的过程分为子程序过程、函数过程和属性过程。,5 过 程,9.1 通用过程,通用过程,过程,事件过程,(1)打开代码窗口(双击控件或窗体,单击查看代码)选择对象和事件输入代码保存,1、建立事件过程,加入对发生事件进行处理的代码的过程,称为事件过程。,事件过程,(2)“工具”菜单“添加过程”(如下图)输入代码保存,Private Sub Form_事件名 (argumentlist) 语句块 End Sub,

2、2)窗体事件过程形式:,事件过程,说明: (1)Private 表明该过程的使用范围是模块级的,在该窗体之外是不可见的。 (2)不论定义的窗体名称为什么,均用Form 或MIDFORM(多文档界面窗体)表示。 (3)事件由VB提供。注意部分事件的发生顺序: Initialize 、 Load 、Activate、GotFocus事件的发生顺序是依次的。,事件过程,Initialize:初始化事件,是在窗体被加载(Load)之前,窗体被配置的时候触发。,Load :加载事件,VB把窗体从磁盘或从磁盘的缓冲区读入内存时发生。,Activate:激活事件,是在窗体已经被装入内存,变成被激活的窗体时触

3、发。,GotFocus:获得焦点事件,在窗体成为当前焦点时触发。,例题,事件过程,演示,源程序,引例1:编程时经常要用到两个数的交换,可以将其编写成过程。,将多次被重复使用的程序段设计成一个具有一定功能的独立程序段,即为通用过程。,5.1.1通用过程,通用过程,代码如下:,Public Sub swap(x, y) Dim t As Integer t = x x = y y = t End Sub,通用过程,1、建立SUB过程 在窗体模块: (1)打开代码编辑器窗口选择工具菜单选择添加过程 (2)在代码编辑器窗口中选择“通用声明” 在标准模块: (1)打开“工程”菜单中“添加模块”选择“新建

4、”打开模块代码窗口选择工具菜单选择添加过程 (2)打开“工程”菜单中“添加模块”选择“新建”打开模块代码窗口输入过程名回车,形式如下: Private/PublicStatic Sub 过程名 (参数列表) 局部变量和常量声明 语句块 Exit Sub 语句块 End Sub,2. 通用过程的定义:,通用过程,通用过程,3.SUB过程调用,通用过程,格式1:CALL 过程名 (实参表) 格式2:过程名 实参1,实参2,,说明:(1)过程名是被调用过程的名字,当调用程序执行到此代码时,VB将开始执行被调用过程。 (2)实参是传送给被调用过程的变量、常数或表达式。实参的个数和类型、顺序应与被调过程

5、的形参相匹配,且每个参数之间应用逗号分隔。对于格式1,若被调过程无参数,则(实参表)可以省略。而格式2,不论是否有参数,实参列表均不需要加括号。,例1:调用两数交换过程,通用过程,Private Sub swap(x, y) Dim t As Integer t = x: x = y: y = t End Sub Private Sub Command1_Click() Dim a As Integer, b As Integer a = Val(Text1.Text) b = Val(Text2.Text) swap a, b 或 call swap (a,b) Text1.Text = a

6、 Text2.Text = b End Sub,例2:将以前学过的冒泡排序改写成过程调用的形式,通用过程,Private Sub bubble_sort(sort() As Integer) Dim i As Integer, j As Integer ,Temp As Integer For i = 1 To UBound(sort) -1 For j = 1 To UBound(sort) -i If sort(j) sort(j + 1) Then Temp = sort(j) sort(j) = sort(j + 1) sort(j + 1) = Temp End If Next j

7、Next i End Sub,通用过程,Option Explicit :Option Base 1 Private Sub Command1_Click() Dim number(10) As Integer, i As Integer Randomize For i = 1 To 10 number(i) = Int(100 - 1) * Rnd) + 1 Text1 = Text1 m, n=; n End Sub Private Sub value(ByVal x As Integer, ByVal y As Integer) x = x + 20: y = y + x Print x

8、=; x, y=; y End Sub,按地址传递,按地址传送时传送的是实参的地址,在调用时,被调用过程 直接将接受到的地址里的值进行修改,从而将原来的实参值覆盖 掉,所以,执行完调用语句后,实参的值将会有所改变。,格式如下: 形式参数为 byref变量名()AS 类型 ,byref变量名()AS 类型,按地址传递,例:,Private Sub Command2_Click() Dim m As Integer, n As Integer m = 15: n = 20 Call value1(m, n) Print m=; m, n=; n End Sub Private Sub value1

9、(ByRef x As Integer, y As Integer) x = x + 20: y = y + x Print x=; x, y=; y End Sub,按地址传递,传值和传址在形式上表现的主要区别为:,如果是按值传送,则形参的参数前加有BYVAL,若形 参前没有加上任何关键字或是加上“BYREF”,则指定他是按 地址传递的参数。使用时应具体分析,否则容易产生错误。,按地址传递,例1:求1!+2!+3!+4!+5!的和。,Private Static Function fact(n As Integer) As Integer fact = 1 Do While n 0 fact

10、 = fact * n n = n 1 Loop End Function,按地址传递,例1:求1!+2!+3!+4!+5!的和。,Private Sub Form_Click() Dim sum As Integer, i As Integer For i = 5 To 1 Step 1 sum = sum + fact(8) Next I Print sum=; sum End Sub,按地址传递,例2:四则运算,Private Function add(a As Integer, b As Integer, c As Integer) a = a + 10: b = b + 10: c

11、= c + 10 add = a + b + c End Function Private Sub Form_Click() Dim v1 As Integer, v2 As Integer, v3 As Integer v1 = 2: v2 = 3: v3 = 4 Print v1 + v2 + v3 * add(v1, v2, v3) End Sub,按地址传递,例3:阅读下面程序,窗体上第一行_,第二行是_,第三行是_.,Private Sub Form_Click() Dim x As Integer, y As Integer, z As Integer x = 1: y = 2:

12、z = 3 Call change(x, x, z) Print x, y, z Call change(y, y, (z) Print x, y, z End Sub Private Sub change(x As Integer, y As Integer,_ z As Integer) x = z + 6 : y = z + 3 : z = x + y Print x, y, z End Sub,结果为: 6 6 12 6 2 12 15 15 30 6 15 12,按地址传递,4、执行下面程序,单击按钮Command1,窗体上显示的结果中I的值是_,J的值是_,K的值是_。,Optio

13、n Explicit Private Sub Command1_Click() Dim I As Integer, J As Integer Dim K As Integer I = 1: J = 2 K = FUN(I, FUN(I, J) + I + J Print I=; I; J=; J; K=; K End Sub Private Function FUN(A As Integer, ByVal B As Integer) As Integer A = A + B : B = A + B : FUN = A + B End Function,执行结果: I=11 J=2 K=43,数

14、组可以作为形式参数。 格式为:形参数组名()AS类型。 但形参数组只能是按地址传递的参数。对应实参的类型,长度必须和形参一致,数组名在实参中后面不加一对括号。在被调用的过程中不可以用DIM对形参进行声明,但是动态数组时,可以用REDIM来重新定义数组的维界与大小。,数组参数,数组参数,例4:求任一一维数组元素之和,Private Function tim(a() As Integer) Dim t As Double, i As Integer t = 0 For i = LBound(a) To UBound(a) t = t + a(i) Next i tim = t End Functi

15、on,数组参数,例4:求任一一维数组元素之和,Private Sub Form_Click() Dim a(1 To 5) As Integer, b(2 To 10) As Integer, i As Integer, t1 As Integer, t2 As Long For i = 1 To 5 a(i) = i Next i For i = 2 To 10 b(i) = i Next i t1 = tim(a) t2 = tim(b) Print t1=; t1, t2=; t2 End Sub,数组参数,例5:,Private Sub change(a() As Integer) Dim i As Integer ReDim a(7) For i = 1 To 7 a(i) = I Next I End Sub,数组参数,例5:,Option Explicit Option Base 1 Private Sub Form_Click() Dim arraya() As Integer, i As Integer ReDim arraya(5) Print 调用前上界是:; UBound(arraya

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

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

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