- 1、本文档共60页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章
过 程;第5章 过 程;Sub过程;子过程的两种调用方式
①使用Call语句,格式如下:
②直接使用过程名:
;Visual Basic函数分为内部函数和外部函数
内部函数 VB提供了许多内部函数,如Rnd( ),Sqr( )等,在编写程序时,只需写出函数名和相应的参数,就可得到函数值。
外部函数 用户根据需要用Function关键字定义的函数过程
;5.2 Function函数过程;注意:
(1)在函数体内,函数名是当变量使用,函数的返回值就是通过对函数名的赋值语句来实现的,在函数过程中至少要对函数名赋值一次。
(2)AS类型:是指函数返回值的类型,若省略,则函数返回变体类型值(Variant)。 ;例题 5.4;5.2.2 函数的调用;5.2.2 函数的调用; 例 设计一个由三角形的3条边长,计算其面积的函数,如果3条边不能构成三角形,则弹出消息框,提示出错。
面积公式:
其中;Public Function area(a!, b!, c!) As Single
Dim t!
t = (a + b + c) / 2
If a + b c And a + c b And b + c a Then
area = Sqr(t * (t - a) * (t - b) * (t - c))
Else
MsgBox error
End If
End Function;例题 5.3;(1)定义时:函数名有值,有类型,在函数体内至少赋值一次;子过程名无值,无类型,在子过程体内不能对子过程名赋值;
(2)调用时:子过程调用是一句独立的语句。 函数过程不能作为单独的语句加以调用,必须参与表达式运算。; 解决一个问题既可以使用子过程,也可以使用函数过程,是使用子过程还是使用函数过程呢?
如果是需要求得一个值,一般情况使用函数过程,如不是为了求一个值,而是完成一些操作,或需要返回多个值,则使用子过程比较方便。;例题 编写一个函数,判断一个数是否是水仙花数,调用该函数,判断一个数是否是水仙花数;5.3 过程之间参数的传递;5.3 过程之间参数的传递; 传址与传值
传值: 形参得到的是实参的值,形参值的改变不会影响实参的值。通过ByVal关键字指定。
传址: 形参得到的是实参的地址,当形参值的改变同时也改变实参的值。默认或者通过ByRef关键字指定。如果需要返回多个值,则可以利用传址方式来获得多个结果。;编写一个子过程,实现两个数据的交换。;值传递的执行过程如下图:;通过地址传递数据的执行过程 ;主调程序:
Private Sub Command1_Click()
Dim x As Single, y As Single, z As Single
x = 3 : y = 4
z = st1(x, y)
Print “x=; x, “y=; y
End Sub;有关过程之间数据传递的补充说明; 例5.12 数制转换。设计一个函数将一个十进制整数m转换成r (2、8或16)进制字符串。
十进制整数m转换成r进制字符串的方法:将m不断除以 r 取余数,直到商为零,以反序得到结果。下面的函数中,参数idec为十进制数,ibase为要转换成数的基(如二进制的基是2,八进制的基是8等),函数输出结果是字符串。 ;5.3.2 数组作过程的参数;5.3.2 数组作过程的参数; 2.被调过程可通过Lbound和Ubound函数确定实参数组的上、下界。
3.当用数组作形参时,对应的实参必须也是数组,且类型一致。
4.实参和形参结合是按地址传递,即形参数组和实参数组共用一段内存单元。 ;例:改写上章的排序程序,分别将排序用子过程Sort( ),给数组元素赋[1, 99]随机整数值用子过程GetData(),打印数组元素用PrintData()子过程来完成。
冒泡排序;;5.5 过程的应用; 使用Optional关键字来声明形参;函数的递归调用是指在调用一个函数的过程中又出现直接或间接地调用该函数本身。;例如,对阶乘的定义:
1!=1;Private Function Fac#(n As Integer)
If n = 1 Then
Fac = 1
Else
Fac = n * Fac(n - 1)
您可能关注的文档
最近下载
- 牙齿健康和龋齿预防科普知识ppt(共67张PPT).pptx VIP
- 2024年10月 政法干警锻造新时代政法铁军专题研讨班发言材料.docx VIP
- 反恐验厂-危机管理和应急恢复计划.doc
- 2024.10 政法干警锻造新时代政法铁军专题研讨班发言材料.docx VIP
- 六年级上册快乐读书吧知识测试题及答案.pdf VIP
- 北京字节跳动科技有限公司运营模式分析及发展趋势预测研究报告.docx VIP
- 《财务风险管理—以乐视公司为例》10000字.docx
- 人教八年级上册物理《光的反射》PPT教学课件.pptx
- 信息资源管理专业毕业设计论文:信息资源管理在学校教育中的应用研究.docx VIP
- 网络安全项目网络建设方案.doc
文档评论(0)