新Visual Basic程序设计 教学课件 黄津津 第6章 过 程.pptVIP

  • 6
  • 0
  • 约5.75千字
  • 约 44页
  • 2016-10-26 发布于广东
  • 举报

新Visual Basic程序设计 教学课件 黄津津 第6章 过 程.ppt

2.实参 实参是指在调用Sub或Function过程时,传送给被调过程的变量名、数组名、对象名、常量或表达式,它们包含在调用过程的实参表中。在调用过程传递参数时,形参表与实参表中的对应变量名可以不必相同。因为“形实结合”是按对应“位置”结合,即第一个实参与第一个形参结合,第二个实参与第二个形参结合,依次类推。 形参与实参类型形式的对应关系 形参(形式参数) 实参(实在参数) 变量名 变量、常数、表达式、数组元素、对象 数组名 数组 在过程定义时,若形参名前面设置有关键字“ByVal”,则指定了它所对应的实参是按值传递的。按值传递参数是把实参的值制作一个副本传递给形参,然后实参与形参之间的联系就终止了,被调过程在形参所在的存储单元中操作此副本,当过程调用结束后,释放形参所在的存储空间,因此,过程中形参的任何改变都不会影响到实参。 在定义过程时,若形参名前面没有关键字ByVal,即形参名前面缺省修饰词,或有“ByRef”关键字时,则指定了它是一个按地址传递的参数。按地址递参数是把实参的地址传递给形参,在过程的调用过程中,形参与实参共用同一个存储单元,对形参的任何操作就是对实参的操作。所以,当过程调用结束后,形参改变,对应的实参也会随之改变。 由于Visual Basic有两种不同的参数传递方式,所以在实际应用中尤其要注意参数传递方式的正确选择,否则就会产生造成错误的副作用。 在按地址传递参数方式中,形参的值改变后对应实参的值也跟着发生变化,有可能对程序的运行产生不必要的干扰。 定义过程时,Visual Basic中允许把数组作为参数。 声明数组参数的格式如下: 形参数组名( )[As数据类型] 形参数组只能是按地址传递的参数。 在Visual Basic中也可以把对象作为参数向过程传递,即将窗体或控件作为过程的参数。在形参表中,把形参变量的类型声明为“Control”,就可以向过程传递控件。在形参表中,把形参变量的类型声明为“Form”,则可以向过程传递窗体。注意,对象参数的传递只能是按地址传递。 在一个过程(Sub过程或Function过程)中调用另外一个过程,称为过程的“嵌套调用”。而过程直接或间接地调用其自身,则称为过程的“递归调用”。 主程序 … 调用子过程1 … 结束 子过程1 … 调用子过程2 … End Sub 子过程2 … … End Sub 图6-11 过程嵌套调用执行过程 递归是指用自身的结构来描述自身,以实现层次数据结构的查询和访问。用递归概念来描述的算法就称为递归算法。递归算法常用于递归调用方面,即子过程或函数自己调用自己。Visual Basic允许一个自定义子过程或函数过程在过程体(又称子程序体)的内部调用自己,这样的子过程或函数就叫递归过程或递归函数。 很多问题可以用递归算法求解。例如,有些问题的定义形式本身就是递归的,如阶乘函数和裴波拉契数列(Fibonacci数列)等;有些数据结构,如二叉树、广义表等,由于结构本身固有的递归特性,所以对它们的操作可以递归进行;还有一类问题,虽然问题本身没有明显的递归结构,但用递归技术求解比其他方法更容易,如最经典的汉诺塔问题和八皇后问题等。由于递归算法省略了程序设计中的许多细节操作,简化了程序设计过程,使得在求解许多复杂问题时,采用递归算法比不用递归算法要简单得多,并且程序结构清晰、易读,正确性容易得到验证,因此,掌握递归程序设计方法很有必要。 编写递归过程要注意:递归过程必须有一个结束递归过程的边界条件(又称为终止条件或边界条件),此时递归过程是有限递归。例如,上面求N!的递归函数的边界条件是N = 0 Or N = 1。若一个递归过程无边界条件,它则是一个无穷递归过程。 变量与过程的作用域是指变量与过程有效的作用范围,即用来标明在程序的哪些地方,这些变量名、过程名才有意义。两种基本的作用域是局部的(私有)和全局的(公有)。 1.模块级过程 模块级过程是指在某个窗体模块或标准模块内,过程定义的前缀关键字是Private的函数或子程序过程。这类过程只能被本窗体(在本窗体内定义)或本标准模块(在本标准模块内定义)中的过程调用。 2.全局级过程 全局级过程是指在某个窗体或标准模块内,过程定义的前缀关键字是Public的函数或子程序过程,当前缀关键字缺省,则被默认是全局的。全局级过程可供该应用程序的所有窗体和所有标准模块中的过程调用。 1.过程级变量 在过程中声明的变量是过程级变量,其作用范围仅限于该过程。也就是说,只有在声明它们的过程中才能访问或改变该变量的值,而这些变量仅在这个过程之中才有效。过程级变量又称为局部变量。 2.模块级变量 若要使一个变量可作用于同一个模块内的多个过程,则应在窗体模块或

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档