好文档 - 专业文书写作范文服务资料分享网站

大学生程序设计visual basic第七讲笔记 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

19工管胡屹

7.1 过程概述

过程:能够完成一定功能的一组语句的集合。

——过程分为事件过程和通用过程。 ? 事件过程一般由系统定义的,用户不能

增加或删除,只能编写事件过程代码。 ? 通用过程由用户根据自己的需要定义

的,并实现一定的功能。 案例:编写程序,求7!+11!-10!的值。 程序可以运行但麻烦 ——通用过程分为函数过程和子过程

函数过程:可以返回一个值 子过程:没有返回值

7.2 函数过程

函数过程是用户根据需要通过Function关键字定义的通用过程,其代码能过实现一定的功能,其通过函数名返回一个值。 ? 函数过程的定义 语法格式: [Public|Private] [Static] Function 函数名([形参列表]) [As 类型] 局部变量或常量声明 语句块 函数名=表达式 End Function 注: ? [Public|Private]:Public用于定义

全局级函数过程,可在应用程序中任何模块中调用该函数;Private用于定义模块级函数过程,只能在本窗口或本标准模块中调用该函数;省略默认为Public. ? [Static]:函数过程中所有变量均为

静态变量

? 函数名:合法的标识符 ? [As 类型]:返回值的数据类型;若

省略,则为Variant

? ([形参列表]):圆括号不能省略;指明从调用过程传递给函数过程的参数类型和个数;多个参数之间用逗号分隔:

通用过程:在程序设计过程中,经常将一些功能相对独立的、能完成一定任务的程序段独立出来,在使用该代码的位置使用简单的调用语句并指定参数就可以实现该代码的所规定的功能。

——在程序中使用过程可以实现代码重用,不仅能提高编程效率,而且提高了程序的可读性。

1

注:1、形参只能是变量或者数组2、使用ByVal表示该参数按值传递;使用ByRef表示该参数按地址传递,省略默认按地址传递

? 局部变量或常量声明-语句块-函数名=表达式:根据形参列表指定

19工管胡屹

的参数求得一个函数值,并将该值保存在函数名中,作为函数过程的返回值。

? 函数过程的调用

函数过程的调用就是按指定的参数调用已定义的函数过程。

7.3 子过程

——子过程和函数过程有什么区别呢?

函数过程一般会返回一个值,但是有时候我们在实际应用中,并不是为了获得某个返回值,而是为了某种功能的处理;有时候也需要返回多个值。 案例:编写一个子过程swap,用于交换两个整数;然后调用swap,对一维数组a中10个整数按升序排序。 ? 实参列表于形参列表必须保持个

数相同、位置和类型一一对应 ? 函数过程不能作为单独的语句加以调用,必须作为表达式或表达式的一部分,再配以其他的语法成份构成语句。 例:调用函数过程IsPrime来查找并输出 300的全部素数。 100~ 例: 输入圆环的内径和外径,调用函数过程CircleS来计算圆环面积。 2

? 子过程定义 子过程与函数过程的区别:

声明关键字不同;子过程没有数据类型;也不能在过程体中出现对子过程名赋值的语句。 函数过程

19工管胡屹

——如果想要子过程的返回值怎么办 ? 参数传递过程:

子过程体的主要功能是根据“形参列表”指定的参数进行一系列处理,通过形参列表中的参数可以返回零个或多个值。

? 实参与形参:

形参:在定义函数过程或子过程时,出现在定义语句中的参数称为形式参数;有形无值。

实参:在调用函数过程或子过程时,出现在调用语句中的参数称为实际参数;有实际值。 ? 参数传递方式:

? 地址传递:指当调用一个过程时,

系统将实参变量的内存地址传递给被调用过程中相应的形参,使实参和形参具有相同地址。

? 特点:形参得到的是实参地址,当

形参值的改变同时也改变实参的值。

? 形式:在形参前加关键字ByRef或

者缺省关键字,指定该参数为地址传递。

? 子过程的调用 语法格式:

Call 子过程名[(实参列表)] 或 子过程名 [实参列表] 注:

? 实参列表:传递给子过程的常量、

变量或表达式,每个参数之间用逗号分隔

? 如果实参要获得子过程的返回值,

则实参只能是变量或数组名,不能是常量或表达式。

? 值传递:指当调用一个过程时,系

统将实参变量的值复制一份给被调用过程中相应的形参,之后实参与形参便断开联系。

? 特点:形参得到的是实参的值,当

形参值的改变不会影响对应实参的值。

? 形式:在形参前加关键字ByVal,

指定该参数为值传递。

7.3 参数传递

3

19工管胡屹

——数组参数的传递 ? 在过程定义时:

形参列表中的数组用“数组名()”形式来表示,使用数组作为参数时,只能按地址传递,不能按值传递。

? 在过程调用时:

实参列表中的数组可以只用“数组名”来表示,省略维数,但实参数组与形参数组的类型必须一致。

7.6递归调用

在过程中直接或间接地调用过程本身,称为过程的递归调用。

注:

1、数组形参省略了下标,但圆括号不能省略。

2、在子过程中,可以使用LBound和UBound函数来获取数组的上下界。

——使用递归解决问题必须满足的两个条件

1、递归形式:可以将所求问题转换为可迭代的数学模型。

2、终止条件:所求问题在迭代过程中有,一个终止条件,否则过程,将永远“递归”下去。

7.5 过程嵌套调用

在一个过程中调用另外一个过程,称为过程的嵌套调用

? 在Visual Basic中,过程的定义都

是互相平行和独立的,就是说一个过程内不能定义另一个过程,即过程不能嵌套定义。

? 在Visual Basic中,过程可以嵌套

调用,就是说在主程序中可以调用子过程,在子过程中还可以调用另外的子过程。

7.6 .1过程与变量的作用域

过程可以分为模块级过程和全局级过程。

? 模块级过程

在窗体或标准模块内定义过程时,如果在Sub子过程或Function函数过程前加上Private关键字,则这类过程只能被本窗体或本标准模块中的其他过程调用,称为模块级过程,其作用范围为本模块。

4

19工管胡屹

7.6.2 变量的作用域

变量的作用域是指变量在程序中可被访问的范围。

(1)局部变量是指在过程内部使用Dim或Static关键字声明的变量(或指不声明而直接使用的变量)。

声明方式:使用Dim或Static关键字声明;声明位置:在过程中;作用范围:只能在本过程内使用 ——Dim与Static声明的区别 Dim:随着过程调用而分配临时的存储单元,过程运行结束释放所占的存储单元

Static:在整个程序运行期间所占的存储单元不会被释放,可以保留变量值。

? 全局级过程

在窗体或标准模块内定义过程时,如果在Sub子过程或Function函数过程前加上Public关键字,或者省略Public和Private关键字,则这类过程可以被整个应用程序的所有模块中的过程调用,称为全局级过程,其作用范围为整个应用程序。

(2)模块变量是指在窗体或标准模块的通用声明段中用Dim或Private关键字声明的变量

声明方式:使用Dim或Private关键字声明;声明位置:在窗体或标准模块的通用声明段;作用范围:可被本窗体或标准模块的任何过程访问

如果模块变量和局部变量同名,优先引用局部变量

(3)全局变量是指在窗体或标准模块的通用声明段中用Public关键字声明的变量

声明方式:使用Public关键字声明;

5

19工管胡屹

声明位置:在窗体或标准模块的通用声明段;作用范围:可被整个应用程序的任何过程访问

——在标准模块中声明的全局变量在其他模块可以直接通过变量名访问; 在窗体模块中声明的全局变量在其它模块中需要通过”窗体名.全局变量名”的方式访问。

7.6.3 变量的生存期

(1)动态变量——过程中用Dim关键字声明的局部变量

? 动态变量在其所在的过程被调用

时,系统为其分配存储空间,并对其初始化。

? 当过程执行结束时,动态变量所占

的存储空间自动释放,变量的值就不存在。

? 当过程再次被调用时,动态变量被

重新分配存储空间并对其初始化。 总结:动态变量的生存期就是过程执行期

(2)静态变量——在过程中用Static关键字声明的局部变量

? 当静态变量所在过程首次被调用

时,系统微静态变量分配存储空间,并对其初始化。 ? 当过程执行结束时,静态变量占用

的存储空间不会被释放,变量的值仍然保留在存储空间中。 ? 当过程再次被调用时,静态变量的

值仍是上次过程执行结束的值,知道程序运行结束,静态变量的存储空间才会被释放。

总结:静态变量的生存期就是程序运行期

6

大学生程序设计visual basic第七讲笔记 - 图文

19工管胡屹7.1过程概述过程:能够完成一定功能的一组语句的集合。——过程分为事件过程和通用过程。?事件过程一般由系统定义的,用户不能增加或删除,只能编写事件过程代码。?通用过程由用户根据自己的需要定义的,并实现一定的功能。案例:编写程序,求7!+11!-10!的值。
推荐度:
点击下载文档文档为doc格式
93ig69woau9d31q9p63i6j6mw9sjow00dt4
领取福利

微信扫码领取福利

微信扫码分享