vb自定义函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1‘y是闰年;
则:D2=D2+Leap(2012)‘上面我们已经构造一个函数Leap(Y)
因此,输出该年2月份的天数的子程序如下:
Sub Command1_Click()
DimyAs Integer
DimnAs String
n = InputBox("请输入年份:")
y= Val(n)
d2 = 28
2.函数
实际上,函数也是一个程序模块,与过程相比,不同之处是函数执行完成后,函数的计算结果(称为“函数返回值”)被送到函数的调用点(即调用该函数的程序位置)上,供程序的后继部分继续进行处理,而过程是没有返回值的。
一、事件处理过程P83
可以按下面的方式构造一个事件处理过程:
Sub事件处理过程名(参数表)
第43讲过程和自定义函数
VB应用程序是按模块化的方式组成的,一个程序模块是程序的一部分,每个模块负责解决整个应用问题的一部分任务。
程序模块分为过程和函数两种。过程强调的是动作,而函数强调的是值的计算。
1、过程
可以将程序划分成一个个较小的逻辑单元,每个这样的逻辑单元可以构成一个过程。过程中的代码可以被重复地调用,从而避免了不必要的代码的重复编制,减少了编程的工作量。
PrivateSubText1_Change()
语句块
End Sub
Change是改变、变化的意思,用于输入、输出数据的改变,如果要写一个事件处理过程,处理用户单击该文本框这样的事件,则该事件处理过程的名称必须是:
Textl_Click(演示:在程序代码窗口顶部栏有对象名_事件框,可改选对象名和事件标准名,如:把Change改选为Click,可鼠标点击执行语句块)
过程可以分成两类:一类是事件处理过程,另一类是通用过程。
事件处理过程描述的是,当对象X上发生某个事件Y时,需要执行一段程序来响应这个事件;某个事件Y(如:Click点击)通用过程
而通用过程则是一个独立的程序段,不同的事件可能需要使用同一个程序段时,可以把这个程序段单独地建立成一个通用过程,供其他事件处理过程或其他通用过程调用。在本书中,我们只关心事件处理过程。
(2)构造了一个程序模块后,在程序的各个部分中可以使用这个模块。
例如:下面我们要要编制一个完整的程序,输入一个年份y(设y>=1900),输出该年2月份的天数:
分析如下:
28‘y不是闰年;
2月份的天数:D2=
29‘y是闰年;
可先设D2=28 ,则:
IFy是闰年thenD2=D2+1
0‘y不是闰年;
可自定义一个函数:Leap(y)=
#05 DimiAs Integer

...
#15End Sub
#16Sub Textl_Cliek()
DimsumAs Integer‘这里的sum因为是局部变量,和上面子程序的sum可以是无关的;
#19nc=10‘如果是全局变量nc,在子程序Textl_Cliek()中就不要再定义了;
#20End Sub
的语句,这样,表达式的计算结果才能作为函数的返回值,被VB送到函数的调用点上。
把“判断y年是否是闰年”这样一个计算过程从整个应用程序中分离出来,成为一个独立的模块(模块可以是一个函数,也可以是一个过程),这是一种模块化的程序设计方法。使用这种方法的好处是:
(1)在设计(构造)这个模块时,需要处理的计算任务比起整个应用程序来相对地要简单些,例如,在这里需要设计的计算过程仅仅是按一定的规则判断y年是否是闰年,并按规定返回O或1这两个结果之一,而不需要考虑数据y是怎么获得的,y年是闰年要进行怎样的处理,y年不是闰年又要进行怎样的处理等问题,这些是应用程序其他部分的任务。
#21Sub Text1_KeyPressf(KeyAscii As Integer)

#24nc=nc+l‘这里的全局变量nc在各个子程序中是同一个变量;
#25d(nc)=Val(Textl.Text)


#31End Sub
d(1 To 500)由500个双精度实数类型的元素构成的数组变量,用来存储用户的输入数据。
例20设计一个函数Leap,判断y年是否是闰年,若是,就返回1,否则,就返回0。
我们先构造一个函数Leap(Y):‘判断y年是否是闰年方法见课本P74的《问题和练习》第3题;
FunctionLeap(y AS Integer)As Integer
Ify mod 100=0Then‘mod是求余数运算符,例:8 mod 5=3,见课本P72表4.2.1
Ify mod 400=0ThenLeap=1ElseLeap=O
Else
Ify mod 4=0ThenLeap=1ElseLeap=0
EndIf
End Function
End Function之前的语句块,描述了函数的计算过程,在这些语句中,至少要有一个形如
函数名=表达式‘例如:上函数模块中的Leap=1、Leap=0
语句块
End Sub
这里,事件处理过程名必须符合下面的规则:
对象名_事件的标准名
例如,在VB编程窗口中,建立一个“命令”对象如下:
PrivateSubCommand_Click()
语句块
End Sub
则:对象名_事件的标准名是Command_Click,而Click表示鼠标点击执行语句块;
X_Y
又例如:设Textl是一个文本框对象,一般我们用于输入、输出数据,但双击Textl文本框对象,进入编程状态如下:
nc计数器,用来记录用户已经输入的数据的个数。
这两个变量是在事件处理过程的外部说明的,这样的变量被称为“全局的”(Global)变量,在所有的事件处理过程中,都可以使用这些全局变量。
二、函ห้องสมุดไป่ตู้P88-89
虽然VB提供了常用的标准函数P71,可以使用这些标准函数来实现某些数学计算或数据类型的转换,但许多应用程序常常需要自己来定义函数,以实现某种特定的计算。
#01 Dimd(1 To 500)As Double‘定义数组变量d(1 To 500)供下面3个子程序公用;
#02 DimncAs Integer‘定义简单变量nc供下面3个子程序公用;
‘这样的d(1 To 500)和nc称为全局变量
#03Sub Command1_Click()
#04 DimsumAs Double‘sum、i是子程序Command1_Click()的局部变量;
可以按下面的方式自己来构造(规定)一个函数:
Function函数名(参数表)As数据类型名
语句块
EndFunction
这里,函数名是程序设计者为函数指定的名称。参数表是对于函数需要的原始数据的类型一一地进行说明。As后的类型名,是说明函数的计算结果,即函数返回值的数据类型,函数计算完成后,VB自动地把函数返回值送到函数的调用点上,这样,程序的其他部分能对这个结果作进一步的处理,最终完成计算任务。
Ifk = 0Then
Label6.Caption= "无解!"‘字符串"无解!"显示在标签6的属性名Caption上;
Text4.Text = " ": Text5.Text = " "
Text4.BackColor= vbBlue: Text5.BackColor = &HFF0000'蓝色的16进制码
d2 = d2 +Leap(y)'调用函数Leap(y),并把的返回值1或0,被VB送到函数的调用点
Text1.Text = d2
End Sub
演示:把上子程序模块和构造的函数Leap(Y)程序模块放到VB程序窗口中运行,输出指定年号的2月份的天数…。
三、练习
1、阅读本讲稿,理解过程和自定义函数的概念;
2、运行输出该年2月份的天数的程序,体验构造的函数Leap(Y)的作用;
3、完成课本P89的;
第2题提示:Function f(r, h As Double) As Double
注意:如果r,h是局部变量,则在定义函数和求出侧面积的主程序中要分别定义;
2010/03/31
Else'底色属性名:BackColor
Label6.Caption = k'系统符号常量(蓝色)vbBlue=&HFF0000(蓝色的16进制码)
Text4.Text = X1
Text5.Text = X2
End If
演示:本应用程序窗体中使用对象属性值的设置;
另外,我给大家提一下全局变量的概念,例如:有下面是课本P87的应用程序的代码结构如下:
数据输入是否完成,必须要由用户来通知应用程序,常规的做法是在应用程序的窗体上,安排一个字面为“计算”或“开始”的命令按钮,一旦用户的数据输入完成后,就可用鼠标单击该命令按钮,它意味着这个事件的发生.应用程序已经具备了开始计算的必要条件,能够启动执行整个计算过程了。
例1:上节课的求计算一元二次方程ax2+bx+c=O的实数根的程序,程序界面要求见课本P77,程序清单见:一元二次方程.FRM,其中程序的输出部分代码为:
表4.4.1 VB的一些常用对象上的常见事件的标准名如下:
如果应用程序必须关心对象X上发生的事件Y,就应编写一个事件处理过程X_Y,按照设计好的算法来处理这个事件;否则,这样的事件将由VB按照标准的方式自动地进行处理。例如,用鼠标拖动滚动条,列表框就会显示文本的不同部分。
本章以后的大部分应用程序实例中,我们将把应用问题的计算过程,放在命令按钮上发生单击鼠标事件的事件处理过程中。这是因为,当用户在某些文本框内输入了必要的原始数据之后,应用程序的计算才能进行。
相关文档
最新文档