过程和自定义函数专题
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
、 事 件 过 程
条目梳理
-5-
2、通用过程 (1)、子过程的定义格式: SUB 子过程名(参数表) <语句>
End Sub
(2)、子过程的调用: 格式一:子过程名[参数列表] 格式二:CALL 子过程名(参数列表)
Swap a,b
条目梳理
-6-
二、自定义函数
函数是类似于过程的另一种程序模块,不同之处是函 数执行完成后,可以返回处理结果,供程序的后续部分继续 处理。函数的函数值是通过函数名返回的
3个值,根返回的形式是“根1=***,根2=***”。
考点1 考点2
条目梳理
-13-
考点 2
递归算法
在一个子程序(过程或函数)的定义中直接或间接地调用该子程 序本身(即自己调用自己)的算法,称为递归算法。
条目梳理
-14-
考点1 考点2
【例3】 以下自定义函数用以计算n的阶乘n!,即计算前n个自然 数的乘积:
dim s as long s=1 for i=1 to n s=s*i next jc=s End Function
随堂演练
-21-
12345678
Private Sub Command1_Click()
dim s as long,n as integer
s=0
n=val(text1.text)
for i=1 to n
s=s+jc(i)
next
关闭
自定lab义el函1.数capjct的ion功=能str是(s计) 算n的阶乘,即n!=1*2*…*n,Command1_Click过 E程n的d 功Su能b 是计算s=1!+2!+3!+…+n!。 运行程序后,在文本框text1中输入5,单击按钮Command1,则在label1
程序中自定义函数采用的算法是( ) A.枚举算法 B.解析算法 C.递归算法 D.查找算法
关闭
程序中age是自定义函数,函数内部语句“age = age(n - 1) + 2”调用函数自 身,因此该自定义函数采用的算法是递归算法。
关闭
C
解析 答案
随堂演练
-27-
12345678
7.现有一个字符串转换程序,在文本框Text1中输入原始字符串,单 击“转换”按钮Command1后,将其中的小写英文字母转换为大写,并 在文本框Text2中显示。程序运行效果如下图所示。
当使用Call语法时,参数必须在括号内;若省略Call关键字, 则也必须省略参数两边的括号。
条目梳理
-9-
考点1 考点2
【例1】 判断某年是否为闰年的VB程序如下,在程序中划线处填入 正确的语句。
Private Sub Command1_Click() Dim x As Integer x=Val(Text1.Text) Label1.Caption= End Sub Function leapyear(year As Integer) As String If year Mod 4=0 And year Mod 100 <> 0 Or year Mod 400 = 0 Then
关闭
递归函数中必须包含条件控制语句,作为递归结束的条件。
关闭
A
解析 答案
随堂演练
-25-
12345678
6.有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁,问第4 个人岁数,他说比第3个人大2岁,问第3个人岁数,他说比第2个人大2 岁,问第2个人岁数,他说比第1个人大2岁,问第1个人岁数,他说他10 岁,请问第5个人多大? 解决上述问题的VB程序代码如下: Function age(n As Integer) As Long
过程和自定义函数
知识条目 1.过程与自定义函数
2.递归算法
-2-
考试要求 c a
考试属性 加试
条目梳理
-3-
考点1
考点 1 过程与自定义函数
VB应用程序是按模块化的方式组成的,每个模块完成一部分任 务。程序模块分为过程和函数两种。
条目梳理
-4-
一、过程
将程序划分为一个个较小的逻辑单元,每个逻辑单元构 成一个过程。过程中的代码被重复的调用。过程分为:事 件处理过程和通用过程。
If n = 1 Then
age = 10 Else
age = age(n - 1) + 2 End If
End Function
Private Sub Command1_Click() MsgBox ″第五个人的年龄为″ + Str(age(5)) End Sub
随堂演练
-26-
12345678
考点1 考点2
条目梳理
-12-
运行程序后,在文本框text1、text2、text3中分别输入1、3、2,单 击按钮Command1,则在label4中显示( )
A.-1,-2
B.-2,-1
C.根1=-1,根2=-2
D.根1=-2,根2=-1
答案:C
解析:自定义函数fx的功能是计算一元二次方程的根,调用时给定
12345678
划线处正确的语句是( )
A.z=gcd
B.z=gcd(a,b)
C.z=gcd(x,y) D.z=gcd x,y
关闭
划线处程序调用函数gcd用以求出x,y的公约数z,所以语句是z=gcd(x,y)。
关闭
C
解析 答案
随堂演练
-24 A.递归函数中可以不包含条件控制语句 B.递归算法代码一般较少 C.递归算法一定要有终止条件 D.递归函数内部必定存在调用自身函数的语句
leapyear=″是闰年!″ Else
leapyear=″不是闰年!″ End If End Function
考点1 考点2
条目梳理
-10-
答案:leapyear(x) 解析:本题考查的是关于自定义函数的知识点。leapyear是个自 定义函数,参数是一个整数year,返回值是字符串。该函数功能是判 断year是否为闰年,如果是闰年,返回值为“是闰年!”,否则返回值为 “不是闰年!”Command1_Click是事件处理过程,其中x是用户输入的 年份,label1上显示x是否为闰年,所以判断x是否为闰年可以调用函 数leapyear,参数是x,即leapyear(x)。
条目梳理
-8-
SUB过程与自定义函数的区别: 1、Sub过程定义时无需定义返回值类型,而Function过程一般 需要用“As 数据类型 ”定义函数返回值类型。 2、Sub过程中没对过程名赋值的语句,而Function过程中一定 有对函数名赋值的语句。 3、调用过程不同:调用Sub过程的是一个独立的语句,而调 用函数过程只是表达式的一部分 4、调用Sub过程的两种方法时注意它们的区别:
1、自定义函数的格式:
Function 函数名(参数表)AS 类型名
语句块
(其中至少有一个语句是: 函数名=表达式)
End Function
这样表达式的 结果才能作为 函数的返回值
条目梳理
-7-
2、调用(使用)函数 应用实例:判断一个数是否为偶数
Private Sub Text1_Change() Dim a As Integer a = Val(Text1.Text) Label2.Caption = ou(a) End Sub Function ou(a) As String If a Mod 2 = 0 Then ou = "该数为偶数!" Else ou = "该数为奇数!" End If End Function
sum = 1 Else sum = End If End Function
条目梳理
-17-
考点1 考点2
Private Sub Command1_Click()
n=text1.text
text2.text=str(sum(n))
End Sub
划线处应填入的语句是( )
A.n+sum(n-1) B.sum(n-1)
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
随堂演练
-23-
中显示( )
关闭
AD.15 B.120 C.5 D.153
解析 答案
随堂演练
-22-
12345678
4.下列VB程序用于求2个正整数x、y的最大公约数,最大公约数显 示在文本框text3中。 Private Sub Command1_Click()
dim x as integer,y as integer,z as integer x=val(text1.text) y=val(text2.text)
C.n+sum(n)
D.sum+n
答案:A
解析:n个自然数的和=n+前n-1项数字的和,递归的算法即为
n+sum(n-1)。
随堂演练
12345678
1.有如下Visual Basic自定义函数: Function max(x as intger,y as integer) as integer if x>y then max=x else max=y End Function 关于该函数说法不正确的是( ) A.该自定义函数名称是max B.函数返回一个整型数据 C该.自该定自义定函义数函返数回返参回数参x、数yx中、的y较中大的数较。小数 D.调用该自定义函数需要2个参数
Next i ② End Sub
12345678
12345678
随堂演练
-28-
实现上述功能的VB代码如下,请在划线处填入正确的语句。 Private Sub Command1_Click()
Dim a As String, b As String,c As String, i As Integer a= Text1.Text For i = 1 To Len(a) c= Mid(a, i, 1) ①
C.as string D.as single
关闭
本题要求补全自定义函数返回值的类型。由自定义函数的语句体可知,fx 运算的结果是字符串,所以函数返回值的类型是string。
关闭
C
解析 答案
12345678
随堂演练
-20-
3.有如下Visual Basic程序: Function jc(n as integer) as long
Function f(n As Integer) As Integer If n = 1 Then f= 1 Else f = n*f(n-1) End If
End Function 该自定义函数采用的算法是( ) A.枚举算法 B.解析算法 C.递归算法 D.查找算法
考点1 考点2
条目梳理
-15-
条目梳理
-11-
考点1 考点2
【例2】 有如下Visual Basic程序: Function fx(a as single,b as single,c as single) as string if b^2-4*a*c>=0 then
f1=(-b+sqr(b^2-4*a*c))/(2*a) f2=(-b-sqr(b^2-4*a*c))/(2*a) fx=″根1=″ & f1 & ″,根2=″ & f2 else fx=″方程无实根″ end if End Function Private Sub Command1_Click() dim a as single,b as single,c as single a=val(text1.text) b=val(text2.text) c=val(text3.text) label4.caption=fx(a,b,c) End Sub
答案:C 解析:程序中f是自定义函数,函数内部语句“f = n*f(n-1)”调用函 数自身,因此该自定义函数采用的算法是递归算法。
考点1 考点2
条目梳理
-16-
【例4】 用递归算法求 1~n 个连续自然数的和的VB程序段代码 如下。
Function sum (n A Integer)A Integer '求 1~n 个连续自然数的和 If n = 1 Then
C
-18-
关闭 关闭
解析 答案
随堂演练
-19-
12345678
2.有以下VB自定义函数:
Function fx(x as integer)
if x mod 2 then fx=x &″是偶数″ else fx=x &″是奇数″
End Function
则程序划线处应填入的代码是( )
A.as integer B.as Boolean