第六章 VB的过程设计.docx

上传人:b****8 文档编号:9168814 上传时间:2023-05-17 格式:DOCX 页数:14 大小:88.20KB
下载 相关 举报
第六章 VB的过程设计.docx_第1页
第1页 / 共14页
第六章 VB的过程设计.docx_第2页
第2页 / 共14页
第六章 VB的过程设计.docx_第3页
第3页 / 共14页
第六章 VB的过程设计.docx_第4页
第4页 / 共14页
第六章 VB的过程设计.docx_第5页
第5页 / 共14页
第六章 VB的过程设计.docx_第6页
第6页 / 共14页
第六章 VB的过程设计.docx_第7页
第7页 / 共14页
第六章 VB的过程设计.docx_第8页
第8页 / 共14页
第六章 VB的过程设计.docx_第9页
第9页 / 共14页
第六章 VB的过程设计.docx_第10页
第10页 / 共14页
第六章 VB的过程设计.docx_第11页
第11页 / 共14页
第六章 VB的过程设计.docx_第12页
第12页 / 共14页
第六章 VB的过程设计.docx_第13页
第13页 / 共14页
第六章 VB的过程设计.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第六章 VB的过程设计.docx

《第六章 VB的过程设计.docx》由会员分享,可在线阅读,更多相关《第六章 VB的过程设计.docx(14页珍藏版)》请在冰点文库上搜索。

第六章 VB的过程设计.docx

第六章VB的过程设计

Forpersonaluseonlyinstudyandresearch;notforcommercialuse

第六章VB的过程设计

1.什么是过程

   在程序设计中,为各个相对独立的功能模块所编写的一段程序称之为过程。

2.VB中的自定义过程分类

(1)以“Sub”保留字开始的子程序过程(包括事件过程和通用过程),不返回值;

(2)以“Function”保留字开始的函数过程,返回一个值;

(3)以“Property”保留字开始的属性过程,可以返回和设置窗体、标准模块以及类模块的属性值,也可以设置对象的值。

6.1子过程(Sub)的定义与调用

1.事件过程

(1)窗体事件过程

   语法:

Private SubForm_事件名([参数列表])

      [局部变量和常数声明]

      语句块

     EndSub

   注意:

     1)窗体事件过程名由Form_事件名组成,多文档窗体用MDIForm_事件名;

     2)每个窗体事件过程名前都有一个Private的前缀,表示该事件过程不能在它自己的窗体模块之外被调用;

     3)事件过程有无参数,完全由VB提供的具体事件本身决定,用户不可以随意添加。

(2)控件事件过程

   语法:

Private Sub控件名_事件名([参数列表])

      [局部变量和常数声明]

       语句块

     EndSub 

   注意:

其中的控件名必须与窗体中某控件相匹配,否则VB将认为它是一个通用过程。

(3)建立事件过程的方法

  1)打开代码编辑器窗口(两种方法:

双击对象或从工程管理器中单击“查看代码”按钮)

  2)在代码编辑器窗口中,选择所需要的“对象”和“事件过程”

  3)在PrivateSub……EndSub之间键入代码

  4)保存工程和窗体

(4)事件过程的调用

  事件过程由一个发生在VB中的事件来自动调用或者由同一模块中的其他过程显示调用。

2.通用过程

  通用过程是一个必须从另一个过程显示调用的程序段,通用过程有助于将复杂的应用程序分解成多个易于管理的逻辑单元,使应用程序更简洁、更易于维护。

  通用过程分为公有(Public)过程和私有(Private)过程两种,公有过程可以被应用程序中的任一过程调用,而私有过程只能被同一模块中的过程调用。

 

(1)定义方法:

    [Private|Public] [Static] Sub过程名([参数列表])

     [局部变量和常数声明]    ‘用Dim或Static声明

      语句块

   [ExitSub]

      语句块

   EndSub

   注意:

  1)缺省[Private|Public]时,系统默认为Public;

  2)Static表示过程中的局部变量为“静态”变量;

  3)过程名的命名规则与变量命名规则相同,在同一个模块中,同一符号名不得既用作Sub过程名,又用作Function过程名。

  4)参数列表中的参数称为形式参数,它可以是变量名或数组名,只能是简单变量,不能是常量、数组元素、表达式;若有多个参数时,各参数之间用逗号分隔,形参没有具体的值。

VB的过程可以没有参数,但一对圆括号不可以省略。

不含参数的过程称为无参过程。

    形参格式为:

       [ByVal]变量名[()][As 数据类型]

  式中:

  变量名[()]:

变量名为合法的VB变量名或数组名,无括号表示变量,有括号表示数组。

  ByVal:

表明其后的形参是按值传递参数(传值参数PassedByValue),若缺省或用ByRef,则表明参数是按地址传递的(传址参数)或称“引用”(PassedByReference)。

  As:

 数据类型:

缺省表明该形参是变体型变量,若形参变量的类型声明为String,则只能是不定长的。

而在调用该过程时,对应的实在参数可以是定长的字符串或字符串数组,若形参是数组则无限制。

  5)Sub过程不能嵌套定义,但可以嵌套调用。

  6) EndSub标志该过程的结束,系统返回并调用该过程语句的下一条语句。

  7)过程中可以用ExitSub提前结束过程,并返回到下调用该过程语句的下一条语句。

 

(2)建立Sub过程的方法

  方法一:

  1)打开代码编辑器窗口

  2)选择“工具”菜单中的“添加过程”

  3)从对话框中输入过程名,并选择类型和范围

  4)在新创建的过程中输入内容

  方法二:

  1)在代码编辑器窗口的对象中选择“通用”,在文本编辑区输入PrivateSub过程名

  2)按回车键,即可创建一个Sub过程样板

  3)在新创建的过程中输入内容

3.Sub子过程的调用

 

(1)用Call语句调用Sub过程

     语法:

Call过程名(实在参数表)

    实在参数的个数、类型和顺序,应该与被调用过程的形式参数相匹配,有多个参数时,用逗号分隔。

    例:

利用过程编写求三角形面积的程序

 

(2)把过程名作为一个语句来用

   语法:

过程名[实参1[,实参2……]]

   它与

(1)的不同点是:

去掉了关键字和实参列表的括号

  如上例中可以改成:

areaa,b,c,w

6.2函数过程(Function)的定义与调用

1.函数过程的定义

  有两种方法:

 

(1)在代码窗口中,利用“工具”菜单下的“添加过程”命令,插入一个函数过程模板来定义

 

(2)在代码窗口中,把插入点放在所有现有过程之外,直接输入函数来定义

  [Private|Public] [Static] Function函数名([参数列表])[As数据类型]

   [局部变量和常数声明]    ‘用Dim或Static声明

   [语句块]

   [函数名=表达式]

   [ExitFunction]

    语句块

   [函数名=表达式]

   EndFunction

2.注意事项

 

(1)  函数名的命名规则与变量命名规则相同;函数过程必须由函数名返回一个值。

 

(2)如果函数体内没有给函数名赋值,则返回对应类型的缺省值,数值型返回0,字符型返回空字符串。

 (3)函数过程内部不得再定义Sub过程或Function过程。

   例:

编写一个计算N!

的函数过程

3.Function过程的调用

  调用Function过程与调用VB内部函数的方法一样,即在表达式中写出它的名称和相应的实在参数。

 语法:

   过程名([实参列表])

 

 注意:

(1)必须给参数加上括号,即使没有参数也不可省略括号;

    

(2)VB中也允许象调用Sub过程一样来调用Function,但这样就没有返回值。

4.调用其他模块中的过程

 

(1)调用窗体中的过程

   从窗体模块的外部调用窗体中的公有过程,必须用窗体的名字作为调用前缀。

如:

   Call Form1.Examsub([实参表])

 

(2)调用标准模块中的过程

   如果在应用程序中,过程名是唯一的,则调用时不必加模块名。

如果有同名的,则在同一模块内调用时可以不加模块名,而在其他模块中调用时必须加模块名。

 (3)类模块中的过程

   调用类模块的公有过程时,要求用指向该类某一实例的变量修饰过程,即首先要声明类的实例为对象变量,并以此变量作为过程名前缀修饰词,不可直接用类名作为前缀修饰词。

   如:

在类模块Class1中含有过程clssub,变量Democlass是类Class1的一个实例,则调用clssub的方法是:

    Dim DemoclassASNewClass1

    Call Democlass.clasub

 例:

函数过程与子过程的异同,计算级数的部分和

  1+x+x2/2!

+……+xn/n!

+……,|xn/n!

|

 

6.3参数的传递

1.形参与实参的概念

  形参:

指出现在Sub和Function过程形参表中的变量名、数组名,过程被调用前,没有分配内存,其作用是说明自变量的类型和形态以及在过程中的角色。

形参可以是:

  1)除定长字符串变量之外的合法变量名;

  2)后面跟()括号的数组名。

  实参:

是在调用Sub和Function过程时,传送给相应过程的变量名、数组名、常数或表达式。

在过程调用传递参数时,形参与实参是按位置结合的,形参表和实参表中对应的变量名可以不必相同,但位置必须对应起来。

    形参与实参的关系:

形参如同公式中的符号,实参就是符号具体的值;调用过程:

即实现形参与实参的结合,也就是把值代入公式进行计算。

2.按值传递参数(定义时加ByVal)

  按值传递参数(PassedByValue)时,是将实参变量的值复制一个到临时存储单元中,如果在调用过程中改变了形参的值,不会影响实参变量本身,即实参变量保持调用前的值不变。

3.按地址传递参数(定义时没有修饰词或带关键字ByRef)

  按地址传递参数时,把实参变量的地址传送给被调用过程,形参和实参共用内存的同一地址。

在被调用过程中,形参的值一旦改变,相应实参的值也跟着改变。

如果实参是一个常数或表达式,VB会按“传值”方式来处理。

4.数组参数

  VB允许把数组作为形参出现在形参表中,语法:

形参数组名()[As数据类型]

   形参数组只能按地址传递参数,对应的实参也必须是数组,且数据类型相同。

调用过程时,把要传递的数组名放在实参表中,数组名后面不跟圆括号。

在过程中不可以用Dim语句对形参数组进行声明,否则会产生“重复声明”的错误。

但在使用动态数组时,可以用ReDim语句改变形参数组的维界,重新定义数组的大小。

5.对象参数

  VB中可以向过程传递对象,在形参表中,把形参变量的类型声明为“Control”,可以向过程传递控件;若声明为“Form”,则可向过程传递窗体。

对象的传递只能按地址传递。

6.4 变量、过程的作用域

1.VB应用程序的组成:

2.过程的作用域

作用范围

模块级

全局级

窗体

标准模块

窗体

标准模块

定义方式

过程名前加Private

例:

PrivateSubmy1(形参表)

过程名前加Pubilc或默认

例:

[Pubilc]Submy2(形参表)

能否被本模块其他过程调用

能否被本应用程序其他模块调用

不能

不能

能,但必须在过程名前加窗体名。

例:

Call窗体名.My1(实参表)

能,但过程名必须唯一,否则需要加标准模块名。

例:

Call标准模块名.My2(实参表)

3. 变量的作用域

作用范围

局部变量

窗体/模块级变量

全局变量

 

 

 

窗体

标准模块

声明方式

Dim、Static

Dim、Private

Public

声明位置

在过程中

窗体/模块的“通用声明”段

窗体/模块的“通用声明”段

能否被本模块其他过程存取

不能

能否被其他模块存取

不能

不能

能,但在变量名前加窗体名

4.静态变量

  用Static声明的静态变量,在每次调用过程时保持原来的值,不重新初始化。

而用Dim声明的变量,每次调用过程时,重新初始化

  例:

显示1到5个数。

5.同名变量

  对不同范围内出现的同名变量,可以用模块名加以区别。

一般情况下,当变量名相同而作用域不同时,优先访问局限性大的变量。

6.5  递归过程

1.递归的概念

  通俗的讲,用自身的结构来描述自身就称为“递归”。

如对阶乘运算的定义就是递归的:

  n!

=n(n-1)!

    (n-1)!

=(n-1)(n-2)!

2.递归子过程和递归函数

   VB允许一个自定义子过程或函数过程在过程体的内部调用自己,这样的子过程或函数就叫递归子过程和递归函数。

递归过程包含了递推和回归两个过程。

构成递归的条件是:

 

(1)递归结束条件和结束时的值

 

(2)能用递归形式表示,并且递归向结束条件发展。

 例:

编制程序求fac(n)=n!

的函数

3.注意事项

 

(1)递归算法设计简单,但消耗的上机时间和占据的内存空间比非递归大

 

(2)设计一个正确的递归过程或函数过程必须具备两点:

1)具备递归条件;2)具备递归结束条件

 (3)一般而言,递归函数过程对于计算阶乘、级数、指数运算有特殊效果。

以下无正文

仅供个人用于学习、研究;不得用于商业用途。

 толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях. 

Forpersonaluseonlyinstudyandresearch;notforcommercialuse.

NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.

Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2