浙教版选修一4.4 过程和函数 (19张)

文档属性

名称 浙教版选修一4.4 过程和函数 (19张)
格式 pptx
文件大小 479.7KB
资源类型 教案
版本资源 浙教版
科目 信息技术(信息科技)
更新时间 2021-01-08 18:18:03

图片预览

文档简介

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、课后习题一张
谢 谢!