资源简介 4.4 过程与函数 高中信息技术 浙教2003课标版 选修1 算法与程序设计 VB应用程序是按模块化的方式组成的,每个模块完成一部分任务。 程序模块分为过程和函数两种 1、事件处理过程: 事件过理过程的一般形式参考如下: ①Sub过程以Sub开头,以End Sub结束。在Sub与End Sub之间是描述过程操作的语句块。过程体可以含有多个Exit Sub的语句,程序执行Exit Sub时提前退出该进程,返回到调用该过程的下一条语句。 当对象X上发生某个事件Y时,需要执行一段程序来响应这个事件。 过程的分类:事件处理过程和通用过程(不作要求) ②事件处理过程名必须符合的规则是:“对象名_事件”的标准名。 VB常用对象的事件处理过程名有: 窗 体 Form_Load、Form1_Click 文本框 Text1_Click、Text1_KeyPress、Text1_Change、Text1_DblClick 按 钮 Command1_Click 标 签 Label1_Click、Label1_DblClick 图像框 Image1_Click 计时器 Timer1_Timer 备注 其中,Load事件是窗体加载事件,Click是鼠标单击事件,DblClick是鼠标双击事件,KeyPress是按下键盘任意键事件,Timer是计时器事件。 【例1】编写一个过程,计算一个立方体的体积,单击Command1按钮,程序立即进行体积的计算。 【例2】设计一个应用程序,计算一批输入数据的平均值(如图),要求能显示: 自定义函数 VB有常用的标准函数 ,可以使用这些函数来实现某些数学计算或数据类型的转换 ,但许多应用程序常常需要自己来定义函数 ,以实现某种特定的功能。自定义函数建立过程格式如下: 函数体 自定义函数以Function语句开头,以End Function语句结束。其间是描述过程操作的语句,称为函数体。在函数体内可以含有多个Exit Function语句,程序执行Exit Function语句时,就提前退出函数,返回调用点。 命令规则 函数名的命令规则与变量名的命名规则相同。在函数体内,可以像使用简单变量一样使用函数名。 参数表 参数表是对于函数需要的原始数据的类型进行一一地说明。As后的类型名,是说明函数的计算结果,即函数返回值的数据类型。End Function之前的语句块,语句中,至少有一个形如“函数名=表达式”的语句,表达式的计算结果才能作为函数的返回值,被VB送到函数的调用点上。 调用 自定义函数的调用比较简单,与内部函数没有什么区别,只不过内部函数由VB提供,而自定义函数由用户自己定义。调用的格式如下: 求3!+5!+7!+11!=? 不使用自定义函数 Function Fact(N As Integer) As Double Dim i As Integer, F As Double F = 1 For i = 1 To N F = F * i Next i Fact = F End Function Private Sub command_Click() Dim sum As Double sum = sum + Fact(3)+ Fact(5) + Fact(7) + Fact(11) Print "3! +5!+7!+11!="; sum Endsub 使用自定义函数 Private Sub command_Click() Dim i As Integer, F1,F2,F3,F4 As Double F 1= 1 :F2=1:F3=1:F4=1 :Sum=0 For i = 1 To 3 F1 = F1 * i Next i ‘ For i = 1 To 5 F2 = F2 * i Next I For i = 1 To 7 F3= F3 * i Next I For i = 1 To 11 F4 = F4 * i Next I sum = F1+F2+F3+F4 Endsub 比较两种方法得出什么结论: 【例4】 设计一个函 数judge,判断year年是否是闰 年,若是,就返回1,否则,就返回0。 我们先构造一个函 数judge( year) :‘判断year年是否 是闰年方 法; Function judge(y As Integer) As Integer If y mod 100=0 then If y mod 400=0 then judge=1 Else judge=0 Else If y mod 4=0 then judge=1 Else judge=0 Endif End Function Private Sub Form_Click() Dim a As Integer a=Val(Text1.Text) If judge(a)=1 Then Label1.Caption=”Yes” Else Label1.Caption=”NO” End Sub 1、.某Visual Basic工程的代码窗口如图所示: ? A.窗口中有三个事件处理过程 B.窗口中有三个自定义函数过程 C.窗口中有两个事件处理过程和一个自定义函数过程 D.窗口中有一个事件处理过程和两个自定义函数过程 以下说法正确的是?( ) 事件处理过程:Sub 事件处理过程名(参数表) 语句块 End Sub 自定义函数: Function 函数名(参数表) As 类型名 语句块 End Function Command1_Click和Form_Load是事件处理过程, even是自定义函数的函数名。 答案????C 课堂练习 2、有如下程序: Private Sub Command1_Click() Dim x As Integer x=Val(Text1.Text) Text2.Text=even(x) End Sub Function even(num As Integer) As String If num Mod 2=0 Then even=“偶数” Else even=“奇数” End Function 程序中的自定义函数的函数名是?( ) A.x B.even C.num D.Function 答案????B 本题考查自定义函数的语法。 自定义函数:Function 函数名(参数表) As 类型名 语句块 End Function 根据自定义函数格式判断,该函数的函数名为even。 3、有如下Visual Basic自定义函数: Function f(i As Single) As Boolean If i <= 0 Then f = True Else f = False End Function 执行语句s = f(-0.4)后,逻辑型变量s的值是( ) A.0 B.1 C.True D.False C 4、Function f(m,n) as integer Do while m<>n Do while m>n m=m-n Loop Do while n>m n=n-m Loop Loop f=m End Function 则f(24,18)的返回值是( ) A、14 B、6 C、4 D、2 答案:C 5、下列VB程序用于将十进制X转化为二进制数 private sub command1_click() dim x as integer ,t as long x=val(text1.text) ① '调用函数fx text2.text=str(t) end sub Function fx(y as integer) as long if y=0 then fx=0 else fx=fx(y\2)*10+y mod 2 end if end function t=fx(x) ?6、下列VB程序用于求2个正整数(均小于10000)的最大公约数: Private Sub Command1_Click() Dim x As Integer,y As Integer,z As Integer x=Val(Text1.Text) ????????第1个正整数 y=Val(Text2.Text) ????????第2个正整数 ????????调用函数gcd Text3.Text=Str(z) End Sub Function gcd(a As Integer,b As Integer) As Integer Do While a <> b If a>b Then a=a-b Else b=b-a Loop gcd=b End Function 方框中的正确语句是?( ) A.z=gcd B.z=gcd(a,b) C.z=gcd(x,y) D.z=gcd x,y 解析 本题考查自定义函数的调用。在调用已经定义好的函数时,必须要有与定义函数数量相同,类型相同的参数。本题中定义函数gcd时引用了两个形式参数a、b,在调用函数gcd时,两个实际参数x、y与a、b相对应。 答案????C 三、内容小结 Vb是一种模块化的设计方法,函数与过程是模块的具体实现 ⑴了解过程或自定义函数在何时调用 ⑵掌握自定义函数对应参数传递的过程 ⑶掌握自定义函数返回的结果及格式 函数执行完成后,函数的计算结果被送到函数的调用点供程序的后继部分继续进行处理,而过程是没有返回值的。 四、课后作业 1、书本P89第1题,第2题 2、课后习题一张 谢 谢! 展开更多...... 收起↑ 资源预览