4.4过程和函数 教学设计
教学内容:
过程与函数
教学目标:
使学生掌握Sub过程与Function函数过程的使用,理解参数传递的意义
教学重点:
Sub过程与Function函数过程的定义与调用
教学难点: 参数传递的方法
教学方法: 讲授法
教学过程:
引入:
VB应用程序是按模块化的方式组成的,一个程序模块是程序的一部分,程序模块分为过程和函数两种。
提出问题,如何求出3!+5!+7!+11!=?
让学生思考这样的问题用以前学过的知识怎样解决,之后引入过程。
分析问题:
若用前面学习的解决方法,每个数的阶乘都需要写一段代码,那么这个程序就会很冗长并且效率低。若把求阶乘的代码作为模块,那么在求各个数的阶乘时,只需调用这个模块就可以了,这样就简化了程序,提高了效率及程序的可读性。
程序模块分为:
Function过程分为:标准函数和自定义函数,自定义函数是这节课主要学习内容。
Sub过程分为:事件处理过程和通用过程,通用过程不作要求。
讲解:
1.事件处理过程
格式:Sub <事件处理过程名>[(<形参表>)]
[<语句组>]
[Exit Sub]
[<语句组>]
End Sub
事件处理包括:
窗 体 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是计时器事件。
2. 说明
(1) Exit Sub用于退出Sub过程。
(2) 事件处理过程名必须符合:对象名_事件标准名。
(3) Sub过程通过<形参表>中的参数返回值。
【例1】设计一个程序,计算一个立方体的体积,单击COMMAND1按钮,程序立即进行体积的计算。
分析:由于是单击按钮事件处理,不需要返回值,所以不需要形参。
Sub Command1_Click()
Dim a As Double,b As Double,c As Double
a=Val(Text1.Text)
b=Val(Text2.Text)
c=Val(Text3.Text)
Text4.Text=Str(a*b*c)
Endsub
通过【例1】让学生了解建立过程的方法
【例2】设计一个应用程序,计算一批输入数据的平均值(如图),要求能显示:
2.自定义函数
1. Function过程的格式
Function <函数过程名> ([<形参表>]) [As <类型>]
[<语句组>]
[<函数过程名> = <表达式>]
[Exit Function]
[<语句组>]
[<函数过程名> = <表达式>]
End Function
2. 说明
(1) <函数过程名>: Function过程的名称,与变量的命名规则相同。
(2) <形参表>:实参必须与形参个数相同,位置与类型一一对应。可以是同类型的常量、变量、表达式。当无形参时省略括号。
(3) Exit Function语句: 从Function过程中退出。
(4) Function过程通过赋值语句
<函数过程名> = <表达式>,将函数的返回值赋给<函数过程名>。
Function过程的调用
直接在表达式中调用。
格式: <函数过程名>([<实参表>])
<实参表>: 常量、变量或表达式,各参数之间用逗号分隔。如果是数组,在数组名之后必须跟一对空括号。
【例 3】求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
' 在按钮的Click事件过程中调用函数过程
Private Sub command_Click()
Dim sum As Double
sum = sum + Fact(3)+ Fact(5) + Fact(7) + Fact(11)
Print "3! +5!+7!+11!="; sum
End Sub
强调:
1.自定义函数需先定义再调用。
2.函数通过函数名返回结果。
【例4】 设计一个函数Leap,判断y年是否是闰年,若是,就返回1,否则,就返回0。
我们先构造一个函数Leap(y):‘判断y年是否是闰年方法;
Function leap(y As Integer) As Integer
If y mod 100=0 then
If y mod 400=0 then Leap=1 Else Leap=0
Else
If y mod 4=0 then Leap=1 Else Leap=0
Endif
End Function
Private Sub Form_Click()
Dim a As Integer
a=Val(Text1.Text)
If leap(a)=1 Then Label1.Caption=”Yes” Else Label1.Caption=”NO”
End Sub
3.参数的传递
形参和实参
形参: 出现在Sub或Function语句中。
实参: 出现在调用程序中。
在传递参数时,形参表与实参表中对应参数个数、类型、位置顺序必须一一对应。
【例 5】在文本框text1和text2中输入两个整数,单击按钮 对象command1,在标签label1中显示这两个数的较大数。
Founction big(x,y) as integer
if x>y then
big=x
else
big=y
End if
End Founction
private sub command1_click()
dim a1,a2 as integer
a1=val(text1.text)
a2=val(text1.text)
Label1.caption=
End Sub
分析:由于输入的整数是a1,a2。即调用函数 时对应的参数为a1,a2,而不是x,y,
因此答案为Big(a1,a2)
课堂练习分析:
通过课堂练习来加强和提高学生对过程和函数的认识
四、内容小结
1)课堂内容综述
Function过程的定义与调用、Sub过程的定义与调用、参数传递
2)课外作业布置
P89问题与与练习1,2