2世纪高等学校计算机基础教育系列教材 第9章 Visual Basic 中的过程和函 人民邮电出版社
第9章 Visual Basic 中的过程和函数 •人民邮电出版社 21世纪高等学校计算机基础教育系列教材
定义过程 分成两类:sub过程(了过程)和 unction过程(函数过程 定义子过程方法: [ private I[ static I[ public sub过程名[(参数表) 语句块 [exit subl [语句块] End sub 例如 Private sub print test ( print" this is a sub procedure! End sub 参数表:可以分为值传递和地址传递,默认情况下是地址传递,要进行值传 递,可以用byva来进行设置。详细内容在后面例子中讲解
定义过程 分成两类:sub过程(子过程)和function过程(函数过程) 定义子过程方法: [ private ][ static ][ public ] sub 过程名 [(参数表)] 语句块 [exit sub] [语句块] End sub 例如: Private sub print_test() print “this is a sub procedure!” End sub 参数表:可以分为值传递和地址传递,默认情况下是地址传递,要进行值传 递,可以用byval来进行设置。详细内容在后面例子中讲解
定义过形 Sub tryout (x as interger, byval y as interger) X=×+100 工程1 Module(ode 口x加过程 d用 tryout y=y*6 名称⑩: tryout 定 Public Sub tryout O 类型 C属性 取消 Print×y G子程序() End sub C函数① C事件) End sub 范围 建立sub过程的方法(A):1 公有的① C私有的Q 厂所有本地变量为静态变量(A) 1)工程→添加模块→新建→模块(图1) 2)工具→添加过程(如图2窗口) 3)填写名称、设置类型、适用范围,确定回到图1所示窗口 建立sub过程的方法(B) 工程→添加模块,键入过程名称(假设 china) 工程1- Module2(ode) d用 chin Sub china()‘键入内容后回车, end sub自动出现 Sub china End sub End sub(见图3) 在两行之间就可以输入代码。输入代码要用到所学的各种可能的程序语句 3 例如结构, while结构, select case结构等,以及一些语句,如 print等等
定义过程 Sub tryout(x as interger,byval y as interger) x=x+100 y=y*6 Print x,y End sub 建立sub过程的方法(A): 1)工程→添加模块→新建→模块(图1) 2)工具→添加过程(如图2窗口) 3)填写名称、设置类型、适用范围,确定回到图1所示窗口。 建立sub过程的方法(B): 工程→添加模块,键入过程名称(假设china) Sub china() ‘键入内容后回车,end sub自动出现 End Sub (见图3) 在两行之间就可以输入代码。输入代码要用到所学的各种可能的程序语句 例如if结构,while结构,select case结构等,以及一些语句,如print等等 1 2 3
调用过程 Ca语句调用 把过程作为一个语句来使用 Ca|过程名[(实际参数)] 过程名实际参数 例如 call tryout(a,b) 例如 tryout(a,b) 例如:计算矩形面积的过形 Sub recarea (ren as single, rwid as single dim area as single area=rlen米rwid msgbox" the area of this rectangle is"&area End sub Sub form click va(a)函数,将数字字符串a转化 dim a, b 成数字,如va(“123”)=123 a= inputbox(“ input the length”) b=inputbox(input the width) call recarea(va(a)va(b)也可以直接用 recarea val(a)wa(b) End sub
调用过程 Call语句调用 Call 过程名[(实际参数)] 例如 call tryout(a,b) 把过程作为一个语句来使用 过程名 实际参数 例如 tryout(a,b) 例如:计算矩形面积的过程 Sub recarea(rlen as single,rwid as single ) dim area as single area=rlen *rwid msgbox “the area of this rectangle is” & area End sub Sub form_click() dim a,b a=inputbox (“input the length”) b=inputbox (“input the width”) call recarea(val(a),val(b)) ‘也可以直接用 recarea val(a),val(b) End sub Val(a)函数,将数字字符串a转化 成数字,如val( “123” )=123
通用过程和事件过程 附加在窗体和控件上的过程就叫做事件过 例如: command1cick()、Form_load( 通用过程就是我们在前面所讲解定义的过程,可以放在标准模块中 也可以放置窗体模块中,事件过程只能放置在窗体模块中,不同的模 块中的过程可以互相调用;过程名唯一的清况下,直接用过程名称调 用,如果两个模块中含有相同名称的过程,则需要有模块名过程名 的方式来调用。 可以看出这些过程都是没有返回值的,也就是说,在运行该过程后, 就不再使用这些过程的计算结果。这种过程不返回值,只能做为语句 使用。如果一个过程要有返回值,可以出现在表达式中,那么就要用 到 function过程(在有些书中叫做函数) 比如: msgbox 在语句 msgbox“北方工业大学欢迎您!”中是简单的sub过程 而在表达式a= msgbox(“北方工业大学欢迎您!”)中则是 function过一 程 这种现象叫做多态
通用过程和事件过程 附加在窗体和控件上的过程就叫做事件过程 例如:command1_click() 、Form _ load() 通用过程就是我们在前面所讲解定义的过程,可以放在标准模块中, 也可以放置窗体模块中,事件过程只能放置在窗体模块中,不同的模 块中的过程可以互相调用;过程名唯一的清况下,直接用过程名称调 用,如果两个模块中含有相同名称的过程,则需要有模块名.过程名 的方式来调用。 可以看出,这些过程都是没有返回值的,也就是说,在运行该过程后, 就不再使用这些过程的计算结果。这种过程不返回值,只能做为语句 使用。如果一个过程要有返回值,可以出现在表达式中,那么就要用 到function过程(在有些书中叫做函数) 比如: msgbox 在语句 msgbox “北方工业大学欢迎您!” 中是简单的sub过程 而在表达式 a=msgbox(“北方工业大学欢迎您!” )中则是function过 程 这种现象叫做多态*