《Visual Basic 教程》第六章 过程

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 传值 传地址
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《Visual Basic 教程》第五章 数组.ppt
- 《Visual Basic 教程》第四章 基本的控制结构.ppt
- 《Visual Basic 教程》第三章 VB语言基础.ppt
- 《Visual Basic 教程》第二章 Vb简单的程序设计.ppt
- 《Visual Basic 教程》第十一章 Visual Basic与数据库.ppt
- 《Visual Basic 教程》第十章 图形操作.ppt
- 郑州大学远程教育学院:《汇编语言程序设计》课程电子教案(PPT课件)Win32汇编.ppt
- 郑州大学远程教育学院:《汇编语言程序设计》课程电子教案(PPT课件)第6章 汇编语言与C/C++的混合编程.ppt
- 郑州大学远程教育学院:《汇编语言程序设计》课程电子教案(PPT课件)第5章 32位指令及其编程.ppt
- 郑州大学远程教育学院:《汇编语言程序设计》课程电子教案(PPT课件)第4章 汇编语言程序设计.ppt
- 郑州大学远程教育学院:《汇编语言程序设计》课程电子教案(PPT课件)第3章 汇编语言程序格式.ppt
- 郑州大学远程教育学院:《汇编语言程序设计》课程电子教案(PPT课件)第2章 8086的指念系统 2.7 控制转移类指令 2.8 处理机控制类指令.ppt
- 郑州大学远程教育学院:《汇编语言程序设计》课程电子教案(PPT课件)第2章 8086的指念系统 2.5 位操作类指令 2.6 串操作类指令.ppt
- 郑州大学远程教育学院:《汇编语言程序设计》课程电子教案(PPT课件)第2章 8086的指念系统 2.3 数据传送类指令 2.4 算术运算类指令.ppt
- 郑州大学远程教育学院:《汇编语言程序设计》课程电子教案(PPT课件)第2章 8086的指念系统 2.1 8086的寄存器组 2.2 8086的寻址方式.ppt
- 郑州大学远程教育学院:《汇编语言程序设计》课程电子教案(PPT课件)第1章 汇编语言基础知识.ppt
- 郑州大学远程教育学院:《汇编语言程序设计》课程电子教案(PPT课件)课程介绍(主讲:钱晓捷).ppt
- 重庆工学院:《C语言程序教程》教学日历2.doc
- 重庆工学院:《C语言程序教程》第八章 指针(纪钢).ppt
- 重庆工学院:《C语言程序教程》教学日历.doc
- 《Visual Basic 教程》第七章 常用控件.ppt
- 《Visual Basic 教程》第八章 界面设计.ppt
- 《Visual Basic 教程》第九章 文件.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第01章 Photoshop图像处理导论.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第02章 Photoshop CS2基本操作.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第03章 图像文件窗口的管理与操作.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第04章 创建与编辑图像的选区.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第05章 Photoshop CS2基本操作.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第06章 使用形状工具.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第07章 使用绘图工具.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第08章 创建和编辑图层.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第09章 设置图层样式.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第10章 编辑图像画面.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第11章 使用工具处理图像.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第12章 使用通道.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第13章 使用蒙版.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第14章 处理图像颜色.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第15章 创建与编辑文字.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第16章 文字的高级编辑.ppt
- 《中文版Photoshop CS2实用教程》教学资源(PPT课件讲稿)第17章 应用滤镜效果.ppt