Visual Basic程序设计应用教程-电子教案&源代码-薛晓萍 第6章 第6章 过程

上传人:E**** 文档编号:89400470 上传时间:2019-05-24 格式:PPT 页数:53 大小:1.01MB
返回 下载 相关 举报
Visual Basic程序设计应用教程-电子教案&源代码-薛晓萍 第6章 第6章 过程_第1页
第1页 / 共53页
Visual Basic程序设计应用教程-电子教案&源代码-薛晓萍 第6章 第6章 过程_第2页
第2页 / 共53页
Visual Basic程序设计应用教程-电子教案&源代码-薛晓萍 第6章 第6章 过程_第3页
第3页 / 共53页
Visual Basic程序设计应用教程-电子教案&源代码-薛晓萍 第6章 第6章 过程_第4页
第4页 / 共53页
Visual Basic程序设计应用教程-电子教案&源代码-薛晓萍 第6章 第6章 过程_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《Visual Basic程序设计应用教程-电子教案&源代码-薛晓萍 第6章 第6章 过程》由会员分享,可在线阅读,更多相关《Visual Basic程序设计应用教程-电子教案&源代码-薛晓萍 第6章 第6章 过程(53页珍藏版)》请在金锄头文库上搜索。

1、第6章 过程 Visual Basic程序是由过程组成的,使用过程是实现结构化程序设计思想的重要方法。 结构化程序设计思想的要点之一就是把一个较大的程序划分为若干个模块,每个模块只完成一个或若干个功能。这些模块可通过执行一系列的语句来完成一个特定的操作,即被实现为过程。,第6章 过程,6.1 过程的概念及引例 6.2 Sub过程 6.3 函数过程 6.4 Sub过程与函数过程应用举例 6.5 参数的传递 6.6 过程的嵌套与递归 6.7 变量和过程的作用域,6.1 过程的概念及引例,6.1.1 过程的概念 6.1.2 过程引例,返回,6.1.1 过程的概念,过程是为了完成一个特定的任务,由一组

2、独立的程序代码组成。 Visual Basic中根据是否有返回值,将过程分为: 子过程(Sub过程), Sub过程又分为: 事件过程是当某个事件发生时,对该事件做出响应的程序代码段,它是应用程序的主体。事件过程名及参数是由系统预先定义的,用户只需编写事件过程的内容。 通用过程是由用户自定义的过程。如果多个不同的事件过程需要执行一段相同的程序代码,完成相同或相似的任务,为了避免程序代码的重复以及方便程序的修改,可以把这一段代码独立出来,作为一个过程,这样的过程称为通用过程。 函数过程(Function 过程)。,返回,6.1.2 过程引例,【例6-1】Sub过程示例。编写程序实现计算5和8的阶乘

3、,界面如图6-1所示。,返回,图6-1 过程引例,6.2 Sub过程,6.2.1 Sub过程的声明及建立 6.2.2 Sub过程的调用,返回,6.2.1 Sub过程的声明及建立,1. 声明格式如下: Private|PublicStatic Sub (参数表) 过程体 Exit Sub End Sub 说明: (1) Private和Public用于限定过程的作用范围,详细见6.7节。如未指明,则默认为Public。 (2) Static表示该过程中的所有局部变量都是静态变量。 (3) 过程名的命名规则与变量相同,注意过程名必须唯一。,(4) 参数表用于指明调用该Sub过程时需要传递给该过程的

4、参数及类型。参数表内的参数又称为形式参数(简称形参)。Sub过程可以定义零个或多个形参。没有形参时小括号不能省略。有多个形参时,形参之间用逗号隔开。Sub过程形参的语法格式如下: (形参数名1 As 类型, 形参数名2 As 类型, ) 形参的命名规则与变量相同。“As 类型”用于指定形参的数据类型,如果省略则默认为Variant型。 (5) Exit Sub用于在过程体中提前退出过程。,6.2.1 Sub过程的声明及建立,2. Sub过程的建立 在模块的通用段,根据Sub过程的语法规则声明过程,并在过程体内编写过程需要完成任务的代码。 通过菜单命令“工具”-“添加过程”命令加入。 注意:在过

5、程内部,不能定义新的过程,只能调用过程。,返回,6.2.2 Sub过程的调用,1. 使用Call语句 格式:Call () 说明: (1) 当用Call语句调用过程时,必须使用小括号把所有的实际参数(简称实参)括起来。如果声明Sub过程时没有形参,则调用时括号内无需实参,此时可把括号省略。 (2) 实参个数与形参个数必须相等,实参与对应形参的数据类型应该相容。,6.2.2 Sub过程的调用,2. 直接使用过程名 格式: 说明:这种调用方式相当于把过程名作为一个语句来使用。,Sub过程举例,【例6-2】编写一个Sub过程用于在窗体指定位置输出符号“*”,并调用过程在鼠标单击位置输出“*”。,返回

6、,6.3 函数过程,函数(Function)过程也是由独立的程序段代码组成,与Sub过程不同在于,函数过程具有返回值。 声明函数之后,便可以像调用VB内部函数一样调用,并可参与表达式运算。 6.3.1 函数过程的声明及建立 6.3.2 函数过程的调用,返回,6.3.1 函数过程的声明及建立,函数过程的声明格式如下: Private|PublicStatic Function 函数名(参数表)As 类型 函数体 = Exit Function End Function 注意: (1) 声明函数过程要指明数据类型,即返回值的数据类型,默认为Variant型。 (2) =中,的值是函数返回的结果,通

7、过赋值语句将值赋给,该值就是函数过程的返回值。如果在函数过程中省略“ =”,则该过程返回一个默认值,其默认值和函数声明的数据类型相关,若为数值型函数过程返回0,若为字符串函数过程返回空字符串。,返回,6.3.2 函数过程的调用,1. 直接使用函数名 直接使用函数名的调用方法有两种形式: (1) 如果要获得函数的返回值,一般按如下形式调用: 被赋值对象 = 函数名(实际参数1,实际参数2,) (2) 如果放弃函数的返回值,一般按如下形式调用: 函数名 实际参数1,实际参数2,,6.3.2 函数过程的调用,2. 使用Call语句 调用格式如下,这种方法放弃了函数的返回值: Call 函数名(参数1

8、,参数2,),举例,【例6-3】验证哥德巴赫猜想:任意一个大于2的偶数都可以表示成两个素数之和。编程将6100之间的所有偶数表示为两个素数之和,结果显示在列表框中。,返回,6.4 Sub过程与函数过程应用举例,6.4.1 过程声明注意事项 6.4.2 过程应用举例,返回,6.4.1过程声明注意事项,Sub过程和函数过程最根本的区别在于其是否具有返回值。由此决定了它们在定义和调用时有如下不同: (1) 定义时,函数过程具有返回值,因此定义时需要用As语句说明函数过程的返回值类型,以及在代码段中给函数名赋值。当然VB也允许不说明函数过程的返回值类型,此时函数过程返回值的类型变为默认的Variant

9、,如果代码段中没有给变量名赋值的语句,则调用函数过程时的值为默认值。而Sub过程由于无返回值,则定义时无需考虑这些问题。 (2) 在调用时,由于函数过程具有返回值,因此可以像变量一样参与表达式运算,但是Sub过程却不可以。,在定义过程时有如下问题需要考虑: (1) 如何确定选择Sub过程还是函数过程 实际上Sub过程和函数过程是可以互换的,但是通常为了简便,对于过程的程序段代码有多个返回值(此处的返回值是指返回到调用此过程的主程序的值,相当于程序段的输出结果),或者无返回值时定义为Sub过程,如果只有一个返回值时则定义为函数过程。 (2) 过程参数的确定 过程是一个独立的程序代码,因此有输入和

10、输出。而过程的参数则是由输入和输出决定的。声明过程的参数时,根据过程实现的程序段决定需要几个输入值,几个输出值,根据其类型将这些值作为参数定义在过程头即可,由于函数本身具有返回值,因此在声明函数头时,将其中一个输出作为函数的返回值,其余作为参数。,返回,6.4.2 过程应用举例,【例6-4】五彩星空的模拟。编写一个过程在窗体的随机位置输出n个随机颜色的五角星,调用此过程实现静态五彩天空以及闪烁五彩天空的模拟。,图6-4 五彩天空模拟运行结果,6.4.2 过程应用举例,【例6-5】编写一个计算n!的过程,并调用此过程计算2!+4!+6!+20!。,图6-5 求阶乘之和的运行结果,6.4.2 过程

11、应用举例,【例6-6】编写一个过程,判断给出的三边是否构成三角形,如果构成三角形则计算出三角形的面积。调用编写的过程根据用户输入三边计算三角形的面积,如果不构成三角形,则给出提示。,图6-6 求三角形面积的运行结果,返回,6.5 参数的传递,6.5.1 实参与形参 6.5.2 按值传递参数 6.5.3 按地址传递参数 6.5.4 参数传递应用举例 6.5.5 数组作为参数传递,返回,6.5.1 实参与形参,形式参数简称形参,是指定义过程时在过程名后圆括号中出现的变量名,多个形参之间用逗号分割。 实际参数简称实参,是指在主程序中调用过程时在过程名后的参数,其作用是将它们的数据(值或地址)传给被调

12、用过程对应的形参变量。实参可以是常量、变量、表达式、数组,各实参之间用逗号分隔。,6.5.1 实参与形参,实参和形参的传递可以实现调用过程(主程序)和被调用过程(子程序)之间的信息交换。参数传递时是按位置传递,和参数名无关,要求参数个数相等、对应位置参数数据类型相容。,返回,6.5.2 按值传递参数,按值传递参数是指在过程被调用时,传递给形参的内容是对应实参的值。形参与实参各占用不同位置的存储空间,被调用过程在执行过程中,对形参变量值的改变不会影响调用过程对应实参的值。通常为了保护实参不受被调用过程的影响,则选用按值传递参数方式。 如果在声明过程时,形式参数名前加上关键字“ByVal”,表示在

13、调用该过程时,该参数是按值传递的。例如: Sub printA(ByVal a As String) End Sub,6.5.2 按值传递参数,【例6-7】阅读下列程序,思考程序运行后,单击窗体,窗体上显示什么内容。体会按值传递参数时,形参值的改变不会影响实参。 Private Sub Form_Click() Dim x% x = 10 Print “调用add过程前x的值为:“ & x Call add(x) Print “调用add过程后x的值为:“ & x End Sub Sub add(ByVal n%) n = n + 10 Print “在过程add中n的值为:“ & n End

14、 Sub,返回,6.5.3 按地址传递参数,按地址传递参数是指在过程被调用时传递给形参的是对应实参的内存地址,即形参与实参使用相同地址的内存单元。因此当在被调用过程中对形参值的修改就等于修改了实参的值。按地址传递参数时实参传递给形参的是地址,由于不同类型数据占用的内存单元字节数是不同的,因此实参与形参的数据类型应相匹配。 如果在声明过程时,形式参数名前加上关键字“ByRef”,或者什么都不加,则表示在调用该过程时,该参数是按地址传递的。例如: Sub Fac(ByRef n As Integer,f As Double) End Sub 注意:并不是所有被关键字ByRef修饰的形参在过程被调用

15、时一定是按地址传递参数,只有当实参是变量或数组时才能按地址传递。如果实参是常量或表达式时,实际上是按值传递。,6.5.3 按地址传递参数,【例6-8】阅读下列程序,思考程序运行后单击窗体,窗体上显示什么内容。体会按地址传递参数时形参值的改变会影响实参的值。 Private Sub Form_Click() Dim x% x = 10 Print “调用add过程前x的值为:“ & x Call add(x) Print “调用add过程后x的值为:“ & x End Sub Sub add(ByRef n%) n = n + 10 Print “在过程add中n的值为:“ & n End Su

16、b,返回,6.5.4 参数传递应用举例,【例6-9】编写一个过程求一个字符串中“最长的子串”和“最长子串的长度”。,返回,6.5.5 数组作为参数传递,在形参表中以数组名加圆括号表示,不要给出维数上界。多维数组,每维以逗号分隔。在过程中通过Ubound函数确定每维的上界。 在实参表中给出数组名(可以省略圆括号)。 注意:数组作为参数传递时,传递方式是按地址传递,系统将实参数组的起始地址传给过程,使形参数组也具有与实参数组相同的起始地址,因此数组作参数时是按地址传递参数的,不能使用关键字“ByVal”修饰形参。,6.5.5 数组作为参数传递,【例6-10】编写程序要求产生n个两位随机整数,并按指定方式排序。要求分别编写一个产生n个两位随机整数和对n个数按指定方式进行排序的过程。,返回,6.6 过程的嵌套与递归,6.6.1 过程的嵌套 6.6.2 过程的递归,返回,6.6.1 过程的嵌套,在一个过程中再调用另外一个过程,称为过程的嵌套调用。 在Visual Basic中允许过程的嵌套调用,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号