当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《Visual Basic 教程》第六章 过程

资源类别:文库,文档格式:PPT,文档页数:34,文件大小:650.5KB,团购合买
第六章过程 6.1函数过程的定义与调用 6.2子过程的定义与调用 63参数传递 6.4变量、过程的作用域 6.5递归 6.6常用算法(三)
点击下载完整版文档(PPT)

1第六章过程 (5学时) 61函数过程的定义与调用 6.2子过程的定义与调用 6.3参数传递 64变量、过程的作用域 65递归 6.6常用算法(三) 6.7重点和难点

第六章 过程 (5学时) 6.1 函数过程的定义与调用 6.2 子过程的定义与调用 6.3 参数传递 6.4 变量、过程的作用域 6.5 递归 6.6 常用算法(三) 6.7 重点和难点

除了系统提供的内部函数过程和事件过程外,用户可自定义过程 “sub"保留字开始的为子过程 “ Function"保留字开始的为函数过程 函数过程的定义 1.引例61 已知多边形的各条边的长度,要计算多边形的面积 计算多边形面积,可将多边形分解成若干个三角形。 e 计算三角形面积的公式如下 8 S3. area=vc(c-x(c-y(c-z)c=6(x+y+z) 2 X Z 定义函数过程 调用函数过程 Public Function area(x! y!, Z! As Single Sub command1 click( Dim c ∴输入若干个三角形边长 C=1/2*(x+y+2) s=area(a, b, c)+area(c, d, e)+area(e, f, g area= Sqr(c*(c-x)*(c-y*(c-z)) End function 1-n Print s End sub

除了系统提供的内部函数过程和事件过程外,用户可自定义过程: ⚫ “Sub”保留字开始的为子过程 ⚫ “Function”保留字开始的为函数过程 一、函数过程的定义 1. 引例6.1 已知多边形的各条边的长度,要计算多边形的面积。 计算多边形面积,可将多边形分解成若干个三角形。 计算三角形面积的公式如下: a b c e d f g S1 S2 S3 ( ) 2 1 area = c(c − x)(c − y)(c − z) c = x + y + z x y z 定义函数过程 Public Function area(x!, y!, z!) As Single Dim c! c = 1 / 2 * (x + y + z) area = Sqr(c * (c - x) * (c - y) * (c - z)) End Function 调用函数过程: Sub command1_click() …… 输入若干个三角形边长 S=area(a,b,c)+area(c,d,e)+area(e,f,g) Print s End Sub

1)利用“工具”菜单下的“添加过程”命令定义生成一个函数的框架1m、M 2.函数过程的定义 自定义函数过程有两种方法: 2)利用代码窗口直接定义 函数过程形式 Function函数过程名([参数列表])[As类型] 局部变量或常数定义 语句块 [Exit Function). lminspxihg 一函数名=返回值 中函数过程体 语句块 函数名=返回值 End Function 函数过程名:命名规则同变量名 参数列表形式:[ByVa变量名[As类型] 称为形参或哑元仅表示参数的个数、类型,无值。 函数名=返回值在函数体内至少对函数名赋值一次 [ Exit function]:表示退出函数过程

2.函数过程的定义 自定义函数过程有两种方法: (1)利用“工具”菜单下的“添加过程”命令定义,生成一个函数的框架 (2)利用代码窗口直接定义 函数过程形式: Function 函数过程名([参数列表])[As 类型] 局部变量或常数定义 语句块 函数名 = 返回值 函数过程体 [Exit Function] 语句块 函数名 = 返回值 End Function 函数过程名:命名规则同变量名 参数列表形式: [ByVal]变量名[()][As 类型] 称为形参或哑元,仅表示参数的个数、类型,无值。 函数名= 返回值 在函数体内至少对函数名赋值一次 [Exit Function] :表示退出函数过程

例62同标准函数 Replace一样,定义 MyReplace(SdS,NewS)函数过程 当调用 MyReplace(" abcdefgabcdecd""cd","3")时函数的返回值为"ab3egab3e3 Function MyReplace(ss, OldSS, NewSS)As String Dim i%, renoldS% renOldS Len(oldS) 取Ods字符子串长度 i=In Strs, OldS) 在字符串中找有否odsS字符子串 Do Whilei>0 找到用№ewS字符子串替换Ods字符子串 S=Left(s, i-1)+ NewS Mid(s, i+lenOldS i=InStr(s, oldS) 找下一个S字符子串 oop MyReplace =s 替换后的字符串赋值给函数过程名 End function (" abcdefgabcdecd'sut"3")第1次|=3结果“ab3 Befgabcdecd"1mb 假定S为“ abcdefgabcdec"oods为“c"News为"3" (ab3efgabcdecd"cd 3)第2次仁=9结果“ab3egab3ecr (“ab3egab3ecd""cd"“3")第3次l=11结果"ab3egab3e

例6.2同标准函数Replace一样,定义MyReplace(S,OldS,NewS)函数过程 当调用MyReplace("abcdefgabcdecd","cd","3“) 时函数的返回值为"ab3efgab3e3“ Function MyReplace(s$, OldS$, NewS$) As String Dim i%, lenOldS% lenOldS = Len(OldS) '取OldS字符子串长度 i = InStr(s, OldS) '在字符串中找有否OldS字符子串 Do While i > 0 '找到用NewS 字符子串替换OldS字符子串 s = Left(s, i - 1) + NewS + Mid(s, i + lenOldS) i = InStr(s, OldS) '找下一个OldS字符子串 Loop MyReplace = s '替换后的字符串赋值给函数过程名 End Function 假定S为“abcdefgabcdecd”,Oolds为 “cd”,News为 "3" (“abcdefgabcdecd”,“cd”,“3”) 第1 次 I=3 结果 “ab3efgabcdecd” (“ab3efgabcdecd”,“cd”,“3”) 第2 次 I=9 结果 “ab3efgab3ecd” (“ab3efgab3ecd”,“cd”,“3”) 第3 次 I=11 结果 "ab3efgab3e3

3函数过程的调用 函数过程的调用同标准函数调用,参与表达式运算,形式如下 函数过程名参数列表] 参数列表:称为实参或实元,它必须与形参个数相同,位置与类型一一对应 可以是同类型的常量、变量、表达式 执行流程: function Myreplaces(ss, oldSS, Newss) Private Sub Command1 Click( Dim i%, len OldS% Text1 My Replace(Text1, cd,3) renOldS Len(oldS) i=InStr(s, OldS) Do Whilei>0 ST=(sua|Basc程序设计教程50版”s=ef(s-1)+NeWs+Misi+| renolds Print MyReplace(S°5:0) i= InStr(s, OldS) End sub oop MyReplace End functio TextI= MyReplace(Textl, "cd,3 Public Function MyReplace(ss, oldss, NewSs)As String

3.函数过程的调用 函数过程的调用同标准函数调用,参与表达式运算,形式如下: 函数过程名([参数列表]) 参数列表:称为实参或实元,它必须与形参个数相同,位置与类型一一对应 可以是同类型的常量、变量、表达式 执行流程: Private Sub Command1_Click() Text1 = MyReplace(Text1, "cd", "3") ST= (“Visual Basic 程序设计教程5.0版” Print MyReplace(ST, "5.0", "6.0") End Sub Function MyReplace$(s$, OldS$, NewS$) Dim i%, lenOldS% lenOldS = Len(OldS) i = InStr(s, OldS) Do While i > 0 s= Left(s, i - 1) + NewS + Mid(s, i + lenOldS) i = InStr(s, OldS) Loop MyReplace = s End Function Text1 = MyReplace(Text1, "cd", "3") Public Function MyReplace(S$, OldS$, NewS$) As String

二、子过程 函数过程的不足: (1)不是为了获得某个函数值,而是为了某种功能的处理,如例11。 (2)要获得多个结果 1引例 编写一个两个数交换的过程供多次调用 Swap(xy)子过程的定义 主调程序调用Sa子过程1 Public Sub Swap(x, y) Private Sub Form Click Dim t Dim a, b t=x a=10 b=20 Call Swap(a, b End sub 1no 7lmioervilp Print"a=a, ,b=b2 End sub

二、子过程 函数过程的不足: (1)不是为了获得某个函数值,而是为了某种功能的处理,如例1.1。 (2) 要获得多个结果。 1.引例 编写一个两个数交换的过程供多次调用。 Swap (x,y)子过程的定义 主调程序调用Swap子过程 Public Sub Swap(x, y) Private Sub Form_Click() Dim t Dim a, b t = x a = 10 x = y b = 20 y = t Call Swap (a, b) End Sub Print "a=";a,",b="; b End Sub

2子过程定义 sub子过程名(参数列表川 局部变量或常数定义 语句 [Exit Sub 语句 End sub 3子过程的调用 子过程名[参数列表 或Ca子过程名(参数列表 4子过程与函数过程区别: (1)函数过程名有值,有类型,在函数体内至少赋值一次; 子过程名无值,无类型,在子过程体内不能对子过程名赋值 (2)调用时,子过程调用是一句独立的语句 反之若过程无返回值,或有多个返回值,使用子过程较直观。21b、 函数过程不能作为单独的语句加以调用,必须参与表达式运算。 (3)一般当过程有一个函数值,使用函数过程较直观

2 子过程定义 Sub 子过程名[(参数列表)] 局部变量或常数定义 语句 [Exit Sub] 语句 End Sub 3 子过程的调用 子过程名 [参数列表] 或 Call 子过程名(参数列表) 4.子过程与函数过程区别: (1)函数过程名有值,有类型,在函数体内至少赋值一次; 子过程名无值,无类型,在子过程体内不能对子过程名赋值; (2)调用时,子过程调用是一句独立的语句。 函数过程不能作为单独的语句加以调用,必须参与表达式运算。 (3)一般当过程有一个函数值,使用函数过程较直观; 反之若过程无返回值,或有多个返回值,使用子过程较直观

例64分别编一计算某级数部分和的子过程和函数过程,并调用 X X 级数为:1+x+一+∴+ +:n 精度为 =甲s) Do While(Abs(t)>=eps) s=s+t: t=t*x/n s=s+t: t=t*x/n n=n+1 n=n+1 Loop Loop jishu =s End sub End Function 调用函数过程 调用子过程 f1=jshu(2#,0.00001) Calt2(f2,2,0.00001)

例6.4 分别编一计算某级数部分和的子过程和函数过程,并调用。 级数为: ... 精度为: ! ... 2! 1 2 + + + + + n x x x n eps !  n x n

程序运行流程: Private Sub Command1 Click Dim f1#, f2# 找函数名调用ishu1② Function jishu1(x! eps#) As Doubl f1= fishy1(2#0.000001) jishu=表达式 ④函数名带了值返回 End funct 找孑过程名调用shu2 Call jishu22,2#,0.000001) Sub jishu2(s#, x!, eps#) prin1=";1,"12=";2 End sub s=表达式 End sub

程序运行流程: Private Sub Command1_Click() Dim f1#, f2# f1 = jishu1(2#, 0.000001) Call jishu2(f2, 2#, 0.000001) Print "f1="; f1, "f2 = "; f2 End Sub Function jishu1(x!, eps#) As Doubl … jishu=表达式 End Function 找函数名调用jishu1 函数名带了值返回 Sub jishu2(s#, x!, eps#) … s=表达式 End Sub ① ② ③ ④ ⑤ 找子过程名调用jishu2 ⑥ ⑦ ⑧

、参数传递 指主调过程的实参传递给被调过程的形参 1.传址与传值 传址:形参得到的是实参的地址,当形参值的改变同时也改变实参的值。 传值:形参得到的是实参的值,形参值的改变不会影响实参的值 例65两个变量的交换 Sub Swap1(ByVal X%, ByVal y%)22 Sub Swap2(x%, y%) t%=x: x=y: y=t Lt% y: y End sub dsno End Sub Private Sub Command1 Click( a%=10:b%=20:SWap1a,b"传值 By Val传值 传地址 Print A1= a.B1= b a=10:b=20:swap2a,b'传地址实参10 10 linens Print A2=a,B2-/b1 iU End sub 形参10 a的地址

三、 参数传递 指主调过程的实参传递给被调过程的形参。 1. 传址与传值 传址:形参得到的是实参的地址,当形参值的改变同时也改变实参的值。 传值: 形参得到的是实参的值,形参值的改变不会影响实参的值。 例6.5 两个变量的交换 Sub Swap1(ByVal x%, ByVal y%) t% = x: x = y: y = t End Sub Private Sub Command1_Click() a% = 10: b% = 20: Swap1 a, b '传值 Print "A1="; a, "B1="; b a = 10: b = 20: Swap2 a, b '传地址 Print "A2="; a, "B2="; b End Sub Sub Swap2(x%, y%) t% = x: x = y: y = t End Sub 10 a 的地址 10 10 a a x x 形参 实参 ByVal 传值 传地址

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共34页,可试读12页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有