第6章过程(65-68)_第1页
第6章过程(65-68)_第2页
第6章过程(65-68)_第3页
第6章过程(65-68)_第4页
第6章过程(65-68)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VB程序设计程序设计2第六章第六章 过程过程6.1 过程与模块的概念过程与模块的概念6.2 Sub子过程的定义及其调用子过程的定义及其调用6.3 Function函数过程的定义及其调用函数过程的定义及其调用6.4 参数的传递参数的传递6.5 变量与过程的作用域变量与过程的作用域6.6 过程的递归调用过程的递归调用6.7 常用算法举例(三)常用算法举例(三)6.8 多重窗体的程序设计多重窗体的程序设计回顾上节课内容回顾上节课内容 过程:事件过程、通用过程过程:事件过程、通用过程 通用过程:通用过程:Sub子过程、子过程、Function函数函数过程过程 定义、调用、区别定义、调用、区别 参数传递

2、:按值传递、按地址传递参数传递:按值传递、按地址传递346.4.3 数组参数的传递数组参数的传递Function tim( Function tim( a() As Integer a() As Integer ) ) Dim t#, i% Dim t#, i% t = 1 t = 1 for i = Lbound(a) to Ubound(a) for i = Lbound(a) to Ubound(a) t = t t = t * * a(i) a(i) next i next i tim = t tim = tEnd FunctionEnd Function用数组来做用数组来做形参数组的

3、语法格式:形参数组的语法格式: 形参数组名形参数组名( )As 类型数组按数组按方式进行传递;方式进行传递;语法格式中语法格式中定义;定义;圆括号不能省。圆括号不能省。5对应的对应的,且类型与形参,且类型与形参类型对应。类型对应。实参数组直接放在实参表中,实参数组直接放在实参表中,。调用调用Function tim(Function tim(a() As Integera() As Integer) ):t1 = tim(t1 = tim() ) t2 = tim(t2 = tim( ) )注意:注意:6例例6-9 累乘问题累乘问题 Private Sub Form_Click()Privat

4、e Sub Form_Click() Dim a%(1 to 5) , b%(4 to 8) , i% , t1# , t2# Dim a%(1 to 5) , b%(4 to 8) , i% , t1# , t2# For i = 1 to 5 For i = 1 to 5 a(i) = i a(i) = i Next i Next i For i = 4 to 8 For i = 4 to 8 b(i) = i b(i) = i Next i Next i Print “t1=”, t1, “t2=”, t2 Print “t1=”, t1, “t2=”, t2End SubEnd Sub

5、Function tim(Function tim(a() As Integera() As Integer) )Dim t#, i%Dim t#, i%t = 1t = 1For i = For i = to to t = t t = t * * a(i) a(i)Next iNext itim = ttim = tEnd FunctionEnd Function编一求任意一维数组各元素之积编一求任意一维数组各元素之积的通用函数过程。并调用它。的通用函数过程。并调用它。7例例6-10 选择选择法排序(法排序(调调用排序的子用排序的子过过程)程)Public Sub sort2(Public

6、Sub sort2() ) Dim i As Integer, j As Integer Dim i As Integer, j As Integer Dim imin As Integer, t As Integer Dim imin As Integer, t As Integer For i = 1 To UBound(a) - 1 For i = 1 To UBound(a) - 1 imin = i imin = i For j = i + 1 To UBound(a) For j = i + 1 To UBound(a) If a(j) a(imin) Then imin = j

7、If a(j) a(imin) Then imin = j Next j Next j t = a(i): a(i) = a(imin): a(imin) = t t = a(i): a(i) = a(imin): a(imin) = t Next i Next iEnd SubEnd Sub8Private Sub Form_Click()Private Sub Form_Click() Dim a() As Integer, i As Integer, n As Integer Dim a() As Integer, i As Integer, n As Integer n = Val(I

8、nputBox( n = Val(InputBox(输入数组元素个数输入数组元素个数) ReDim a(1 To n) ReDim a(1 To n) Randomize Randomize Print Print 排序前排序前 For i = 1 To n For i = 1 To n a(i) = Int(99 - 10 + 1) a(i) = Int(99 - 10 + 1) * * Rnd) + 10 Rnd) + 10 Print a(i); Print a(i); Next i Next i Print Print sort2 a() sort2 a() Print Print 排

9、序后排序后 For i = 1 To n For i = 1 To n Print a(i); Print a(i); Next i Next i Print PrintEnd SubEnd Sub96.8.1 多重窗体的建立和管理多重窗体的建立和管理6.8 多重窗体的程序设计多重窗体的程序设计创建新窗体和添加现有窗体创建新窗体和添加现有窗体删除窗体删除窗体保存窗体保存窗体工程添加窗体工程添加窗体106.8.2 设置启动对象设置启动对象两种方法:两种方法:“工程工程”+“工程属性工程属性” 在工程上单击右键在工程上单击右键116.8.3 窗体之间的切换语句和方法窗体之间的切换语句和方法(1)L

10、oad语句语句:把窗体装入到内存,但并不显示出来:把窗体装入到内存,但并不显示出来Load 窗体名称窗体名称(2)Unload语句语句:将窗体从内存中卸载:将窗体从内存中卸载Unload 窗体名称窗体名称(3)Show方法方法:显示一个窗体,触发窗体的:显示一个窗体,触发窗体的窗体名称窗体名称. Show(4)Hide方法方法:隐藏指定的窗体,没有删除:隐藏指定的窗体,没有删除窗体名称窗体名称. Hide12 frmmainfrminputfrmoutput6.8.4 多窗体应用程序示例多窗体应用程序示例136.5 变量与过程的作用域变量与过程的作用域6.5.1 变量的作用域变量的作用域全局变

11、量全局变量窗体窗体/模块级变量模块级变量局部变量局部变量146.5.1.1 局部变量局部变量Dim|Static 变量名变量名 As 类型类型,变量名变量名As 类型类型.定义在:过程中;定义在:过程中;作用域:本过程;作用域:本过程;其值在运行过程中存在,运行后消失;其值在运行过程中存在,运行后消失;每次调用过程时,局部变量都会初始化。每次调用过程时,局部变量都会初始化。15X的作用域的作用域X的作用域的作用域X的作用域的作用域16例例6-14Private Sub Form_Click() ik As Integer ik = ik + 1 Print 目前为止已经单击了窗体目前为止已经单

12、击了窗体; ik; 次次End Sub17定义在:窗体定义在:窗体/模块模块“通用声明通用声明”处;处;作用域:本窗体作用域:本窗体/本模块,可被本窗体本模块,可被本窗体/本模块本模块 的的调用。调用。6.5.1.2 窗体窗体/模块级变量模块级变量Dim|Private 变量名变量名 As 类型类型,变量名变量名As 类型类型.Dim ik As IntegerPrivate Sub Form_Click() ik = ik + 1 Print ikEnd SubPrivate Sub Form_Load() ik = 1End Sub18定义:窗体定义:窗体/模块模块“通用声明通用声明”处;

13、处;作用域:作用域:整个应用程序整个应用程序,可被应用程序的,可被应用程序的任何过程访问;任何过程访问;其值在整个程序中保留,不会消失和初始其值在整个程序中保留,不会消失和初始化,直到整个程序运行结束,才会消失;化,直到整个程序运行结束,才会消失;注意:注意:窗体中声明的全局变量在被其它窗窗体中声明的全局变量在被其它窗体引用时,应为:窗体名体引用时,应为:窗体名.变量名。变量名。 6.5.1.3 全局变量全局变量Public 变量名变量名 As 类型类型,变量名变量名 As 类型类型19在标准模块中声明:在标准模块中声明:Public ik As Integer在在Form2窗体模块中编写:窗

14、体模块中编写:Private Sub Form_click() ik = ik + 1 Print ik=; ikEnd Sub在在Form1窗体模块中编写:窗体模块中编写:Private Sub Form_Load() ik = 1End SubPrivate Sub Form_click() ik = ik + 1 Print ik=; ik Form2.ShowEnd Sub例例6-16 全局变量全局变量20Public X As IntegerPrivate Sub Form_Load() Dim X As Integer Show =2 =1 Print ,Form1.X End S

15、ub 21VB允许在不同级声明相同的变量名。允许在不同级声明相同的变量名。同一模块中定义了不同级而同名的变量同一模块中定义了不同级而同名的变量时,系统时,系统优先访问作用域小优先访问作用域小的变量名。的变量名。要在过程中引用同名的全局变量,必须要在过程中引用同名的全局变量,必须在变量名前加窗体在变量名前加窗体/模块名。模块名。注意注意:22变量作用域变量作用域总结总结: :对不同作用范围的对不同作用范围的3 3种变量声明及使用规则种变量声明及使用规则作用范围作用范围局部变量局部变量窗体模块级变量窗体模块级变量全局变量全局变量窗体窗体标准模块标准模块声明方式声明方式被其它模块被其它模块过程存取过

16、程存取被本模块的其被本模块的其他过程存取他过程存取声明位置声明位置Dim,Static不能不能不能不能在过程中在过程中Dim,Private不能不能能能窗体模块的窗体模块的“通用声明通用声明”段段Public能,但在变量能,但在变量名前加窗体名名前加窗体名能能窗体窗体/模块的模块的“通用声明通用声明”段段能能236.5.2 过程的作用域:过程的作用域:(1)窗体)窗体/模块级模块级(Private): 只能被本窗体或本标准模块内的事件过程只能被本窗体或本标准模块内的事件过程或其他过程调用。或其他过程调用。(2)全局级)全局级(Public): 可被整个应用程序的所有窗体和所有标准可被整个应用程

17、序的所有窗体和所有标准模块中的过程调用。模块中的过程调用。246.6 递归递归6.6.1 递归的概念递归的概念用用自身自身的结构来的结构来描述自身描述自身就称为就称为“递归递归”。例:例: 256.6.2 递归子过程和递归函数递归子过程和递归函数Private Function Fac(N As Integer) As Long If Then Fac = 1 Else Fac = N * Fac(N - 1) End IfEnd FunctionFac(3)=3*Fac(2)Fac(1)=1Fac(2)=2*1Fac(3)=3*2Fac(2)=2*Fac(1)递推递推回归回归结束条件结束条件

18、递归递归26构成递归的构成递归的两大要素两大要素: (1) 具备具备递归结束条件递归结束条件及结束时的值;及结束时的值; (2) 能用递归形式表示能用递归形式表示,并且递归向终止条件并且递归向终止条件 (或称边界条件或称边界条件)发展。发展。27Private Function Chb(n As Integer,x As Single) As Single If n = 0 Then Chb = 1 ElseIf n = 1 Then Chb = x Else Chb = 2 * x * Chb(n-1,x) - Chb(n-2,x) End IfEnd Function例例6-18 求契比雪

19、夫多项式求契比雪夫多项式结束条件结束条件结束条件结束条件28例例6-19 求正整数求正整数M M和和N N的最大公约数。的最大公约数。296.7 常用算法举例常用算法举例(三三)例例6-20 设有方程设有方程f(x)=2x3-4x2+3x-6=0,用,用牛顿切线法牛顿切线法求该方程在区间求该方程在区间0,3之间的实根,精确到之间的实根,精确到10-5。 x0 =1.5 xi+1 = xi - f(x)/f(x) 当当abs(xi+1-xi) 时,时,xi+1作为方程的作为方程的近似解。近似解。 3031Private Function f2(ByVal x As Single) As Single f2 = 6 * x * x - 8 * x + 3End FunctionPrivate Function f1(ByVal

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论