VB过程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第5章过程2什么是过程为什么使用“过程”第5章过程较小的、相对独立的、能完成一定任务的程序段,能够被多次调用。有效提高开发程序的效率,和有利于调试和维护程序3第5章过程1、在VB中过程的分类主要有两种:(1)Sub子过程(2)Function函数过程2、过程的使用分2个步骤(1)过程的定义(2)过程的调用45.1过程概述在VB中,除了系统提供的内部函数过程和事件过程外,用户可自定义过程下列两种过程:子过程:由Sub关键字定义子过程一般用来执行一些不用获得结果的操作例如:Print方法就是一个子过程55.1过程概述在VB中,除了系统提供的内部函数过程和事件过程外,用户可自定义过程下列两种过程:函数过程:Function关键字定义函数一般用来求解某一个结果例如:Sqr,Abs就是函数6例:子过程与函数的不同思考:PrintAbs使用方法的不同75.1Sub过程5.1.1通用过程的定义[Public|Private]Sub子过程名([形参列表])<语句组>EndSub在VB中,Sub子过程分为:事件过程和自定义过程(通用过程)8通用过程的创建(定义)方法方法一:在【代码编辑窗口】中直接输入用户创建的过程。方法二:【工具】菜单【添加过程】5.1Sub过程在VB中,Sub子过程分为:事件过程和自定义过程(通用过程)9说明:(1)通用过程必须以Sub开头,以EndSub结束,中间是过程体。(2)子过程名:命名规则与变量名规则相同。5.1Sub过程10说明:(3)形式参数:仅表示形参的类型、个数、位置,定义时无值,只有在过程被调用时,用来接收实参数据的变量或数组。5.1Sub过程[ByVal]变量名[()][As数据类型]112、子过程的建立通过“工具”菜单中的“添加过程”命令,出现“添加过程”对话框,选择过程类型(子过程、函数、属性、事件)及作用范围(公有的Public、私有的Private),单击确定后得到一个过程或函数定义的结构框架(模板),如:PublicSubSort()……EndSub5.1Sub过程125.1.2过程的调用1.子过程的两种调用方式①使用Call语句,格式如下:②直接使用过程名:5.1Sub过程Call过程名([实参列表])过程名[实参列表]135.1Sub过程注意:(1)调用通用过程,是一个独立的语句,不能写在表达式中。(2)实参表和形参表的参数个数要一致,位置要对应,类型要匹配。实参可以是常量、变量或有值的表达式。(3)过程的调用,必须在某个过程的内部。14例题5.115例定义输出一个直角三角形图案的过程,该过程有两个参数:一个是打印的行数,另一个是组成图案的字符。然后在窗体的单击事件过程里面调用该过程。5.1Sub过程16例题5.217例设计一个程序,完成对数据的排序、查找功能。要求:数据存放在数组中,生成[50-100]的随机数。18PrivateSubForm_事件名(参数列表)<语句组>EndSub5.1.3事件过程在VB中,的Sub子过程分为:事件过程和通用过程1、事件过程(1)窗体事件的语法19PrivateSub控件名_事件名(参数列表)<语句组>EndSub5.1Sub过程(2)控件事件的语法20VisualBasic函数分为内部函数和外部函数内部函数VB提供了许多内部函数,如Rnd(),Sqr()等,在编写程序时,只需写出函数名和相应的参数,就可得到函数值。外部函数用户根据需要用Function关键字定义的函数过程5.2Function函数过程215.2Function函数过程注意:与子过程(Sub过程)不同的是函数过程将返回一个值。5.2.1函数过程(Function过程)的定义Function函数名([参数])[As类型]语句块函数名=返回值EndFunction22注意:(1)在函数体内,函数名是当变量使用,函数的返回值就是通过对函数名的赋值语句来实现的,在函数过程中至少要对函数名赋值一次。(2)AS类型:是指函数返回值的类型,若省略,则函数返回变体类型值(Variant)。5.2Function函数过程23例:设计一个求绝对值的函数5.2Function过程24例题5.3255.2.2函数的调用调用形式:说明:调用函数不能独立成为一条语句,它必须是语句的一部分。5.2Function函数过程函数名(实参列表)265.2.2函数的调用如果不需要函数的返回值,则:注意:有Call关键字时,函数名后面必须有括号。5.2Function函数过程Call函数名([参数列表])或函数名[参数列表]27例设计一个由三角形的3条边长,计算其面积的函数,如果3条边不能构成三角形,则弹出消息框,提示出错。面积公式:其中))()((ctbtatts2cbat28PublicFunctionarea(a!,b!,c!)AsSingleDimt!t=(a+b+c)/2Ifa+bcAnda+cbAndb+caThenarea=Sqr(t*(t-a)*(t-b)*(t-c))ElseMsgBoxerrorEndIfEndFunctionPrivateSubCommand1_Click()Dima!,b!,c!a=Val(Text1)b=Val(Text2)c=Val(Text3)Text4=area(a,b,c)EndSub主调过程自定义函数过程29例题5.430例设计Function过程分别求长方体表面积和体积输入长方体的边长,调用这两个子过程求出表面积和体积。5.1Sub过程31(1)定义时:函数名有值,有类型,在函数体内至少赋值一次;子过程名无值,无类型,在子过程体内不能对子过程名赋值;(2)调用时:子过程调用是一句独立的语句。函数过程不能作为单独的语句加以调用,必须参与表达式运算。子过程与函数过程区别32解决一个问题既可以使用子过程,也可以使用函数过程,是使用子过程还是使用函数过程呢?如果是需要求得一个值,一般情况使用函数过程,如不是为了求一个值,而是完成一些操作,或需要返回多个值,则使用子过程比较方便。使用子过程还是使用函数过程?33例题编写一个函数,判断一个数是否是水仙花数,调用该函数,判断一个数是否是水仙花数345.3过程之间参数的传递5.3.1形式参数与实际参数1、形式参数是指在定义过程时,出现在Sub或Function语句中的过程名后面圆括号内的变量(或数组),是用来接收传送给过程的数据。355.3过程之间参数的传递5.3.1形式参数与实际参数2、实际参数实际参数是指在调用Sub或Function过程时,写入子过程名或函数名后括号内的参数,其作用是将它们的数据(数值或地址)传送给Sub或Function过程与其对应的形参变量。实参可由常量、表达式、有效的变量名、数组名组成,实参表中各参数用逗号分隔。36传址与传值传值:形参得到的是实参的值,形参值的改变不会影响实参的值。通过ByVal关键字指定。传址:形参得到的是实参的地址,当形参值的改变同时也改变实参的值。默认或者通过ByRef关键字指定。如果需要返回多个值,则可以利用传址方式来获得多个结果。5.3过程之间参数的传递37编写一个子过程,实现两个数据的交换。38主调程序:PrivateSubCommand1_Click()DimxAsSingle,yAsSingle,zAsSinglex=3:y=4z=st1(x,y)Print“x=;x,“y=;yEndSubFunctionSt1(byvala!,byvalb!)a=a*ab=b*bSt1=sqr(a+b)EndSubFunctionSt2(a!,b!)a=a*ab=b*bSt2=sqr(a+b)EndSub39值传递的执行过程如下图:5.3过程之间参数的传递40通过地址传递数据的执行过程5.3过程之间参数的传递41有关过程之间数据传递的补充说明1.形参与实参数量要相同,按顺序逐一对应,数据类型要求相同2.实参使用形式决定数据的传递方式如果实参不是变量,而是常量或表达,都只能按值传递方式将常量或表达式计算的值传递给形参变量。3.什么时候一定要传地址?什么时候一定要传值?42例5.12数制转换。设计一个函数将一个十进制整数m转换成r(2、8或16)进制字符串。十进制整数m转换成r进制字符串的方法:将m不断除以r取余数,直到商为零,以反序得到结果。下面的函数中,参数idec为十进制数,ibase为要转换成数的基(如二进制的基是2,八进制的基是8等),函数输出结果是字符串。思考:为什么在子程序中变量idec要采用值传递方式?5.5过程的应用43例设计一个过程求m、n的最大公约数。并调用该过程求75、215两个数的最大公约数。5.5过程的应用

1 / 43
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功