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