资源简介 第1节 过程与自定义函数考试内容考试要求过程c自定义函数c一、过程1.VB应用程序是按模块化的方式组成的,程序模块分为过程和函数两种,过程强调的是动作,而函数强调的是值的计算。2.什么是过程将程序划分为一个个较小的逻辑单元,每个逻辑单元构成一个过程。过程中的代码可以被重复地调用。3.过程的分类过程分成两类:事件处理过程和通用过程。①事件处理过程的一般格式:Sub 事件处理过程名(参数表) 语句块End Sub②通用过程的一般格式:Sub 通用过程名(参数表) 语句块End Sub过程调用:Call 过程名(参数表)4.常见的VB事件常见的VB事件有:Click(单击)、DblClick(双击)、KeyPress(按键)、Load(装载)、Change(改变)等。作用在VB对象上的常见事件处理过程有:文本框Text:Text1_Click、Text1_DblClick、Text1_KeyPress、Text1_Change命令按钮Command:Command1_Click标签Label:Label1_Click窗体Form:Form_Load(窗体装载)二、自定义函数1.函数函数也是一个程序模块,不同之处是函数执行完成后,函数的计算结果被送到函数的调用点上,供程序的后继部分继续执行,会返回一个函数值。函数值是通过函数名返回的。2.自定义函数格式Function 函数名(参数表)As类型名 语句块End Function一、过程【典例1】 下面VB程序的功能是利用海伦公式求三角形面积。程序运行时,分别在文本框Text1、Text2、Text3中输入三条边的长度,单击“计算”按钮,若能构成三角形,则在标签Label5中显示三角形的面积,否则显示信息“无法构成三角形”。提示:海伦公式=,其中p为周长的一半。运行效果如下图所示:实现上述功能的VB程序如下,请回答下列问题:Private Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer, d As Single, s As Single a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If a + b > c And a + c > b And ____①____ Then d = (a + b + c) / 2 s = ________②________ Label5.Caption = Str(s) Else Label5.Caption = “无法构成三角形” End IfEnd Sub(1)“Private Sub Command1_Click()”中Command1是指__________,Click是指________,Command1_Click为__________________(选填:对象名 /事件名/属性名/过程名)。(2)请在划线处填入合适的代码。解析 (1)本小题主要考查的是VB的对象、事件及事件处理过程。Command1是指对象名,Click是指事件名(鼠标单击),Command1_Click为过程名。(2)本小题主要考查的是VB表达式。程序①处语句表示能否构成三角形的条件(任二条之和大于第三边),因此①处代码为b + c > a;程序②处代码表示用海伦公式求三角形面积,将数学公式转换为VB公式,因此②处代码为Sqr(d * (d - a) * (d - b) * (d - c))。答案 (1)对象名 事件名 过程名 (2)①b + c > a 或a < b + c ②Sqr(d * (d - a) * (d - b) * (d - c))二、自定义函数【典例2】 编写一个求[a,b]区间内的所有素数的VB程序。程序运行时,分别在文本框Text1、Text2中输入a、b的值,单击“求解”按钮,在列表框List1中输出[a,b]区间内的所有素数,并统计个数,显示在列表框的最后一行。程序运行效果如下图所示:实现上述功能的VB程序如下,请回答下列问题:Function prime(x As Integer) As Boolean Dim k As Integer k = 2 prime = True Do While k < x And primeIf x Mod k = 0 Then ________①________Else k = k + 1End If LoopEnd FunctionPrivate Sub Command1_Click() Dim i As Integer, a As Integer, b As Integer, n As Integer a = Val(Text1.Text) b = Val(Text2.Text) For i = a To bIf ________②______ Then List1.AddItem Str(i) n = n + 1End If Next i List1.AddItem “共有素数:” + ______③______ + “ 个”End Sub(1)代码“List1.AddItem Str(i)”中的AddItem是指____________(填:属性名 / 事件名 / 方法名)。(2)请在划线处填入合适的代码。解析 本题主要考查的是自定义函数。(1)代码“List1.AddItem Str(i)”中的AddItem是指方法名。(2)函数值是通过函数名来返回的,prime函数的初值为True,当整数x能被整数k整除时,表示x不是素数,因此修改函数值为False,即①处代码为prime = False;②处代码为调用prime函数,当整数i为素数时,则在列表框List1中输出,因此代码为Prime(i)= True ,也可写为prime(i);变量n用来统计素数个数,因为与其他字符串连接后在列表框中输出,因此③处代码为Str(n),而不能写为n。答案 (1)方法名 (2)①prime = False ②Prime(i)= True 或prime(i) ③Str(n)1.下列VB程序的功能是:求数组d中指定范围内元素的最大值,并将最大值显示在标签Label3中。Dim d(1 To 10) As IntegerSub zds(x As Integer, y As Integer)Dim i As Integer, ans As Integerans = -32767For i =__________①________If ans < d(i) Then ans = d(i)Next iLabel3.Caption = Str(ans)End SubPrivate Sub Command1_Click() Dim a As Integer, b As Integer, j As Integer, ans As Integer For j = 1 To 10 d(j) = Int(Rnd * 100 + 1) List1.AddItem Str(d(j)) Next j a = Val(Text1.Text) b = Val(Text2.Text) Call ________②________End Sub请回答下列问题:(1)在程序划线①②处填入合适的代码。(2)若数组元素d(1)~d(10)分别为“50,36,23, 85,45,12,88,49,91,100”,文本框Text1、Text2中输入的数据分别为3和9,则在标签Label3中输出的结果为______________。解析 (1)①处代码表示求数组元素d(x)~d(y)中的最大数,i表示范围,因此①处代码为x To y;②处代码表示调用过程,过程名为zds,参数为a、b,表示求数组元素d(a)~d(b)中的最大数,因此②处代码为zds(a, b)。(2)求数组元素d(3)~d(9)中的最大值是91,因此答案为91。答案 (1)①x To y ②zds(a, b) (2)912.下列程序的功能是统计某个数字在正整数中出现的次数。若数字y在正整数x中出现,则在标签Label1中输出出现的次数,否则输出“未出现”。实现上述功能的VB程序如下,请在程序划线处填入合适的代码。Function fx(x As String, y As String) As Integer Dim n As Integer, i As Integer, times As Integer times = 0 i = 1 n = Len(x) Do While i <= n And Not flag If Mid(x, i, 1) = y Then times = times + 1 i = i + 1 Loop ________①________End FunctionPrivate Sub Command1_Click() Dim st1 As String, st2 As String st1 = Text1.Text st2 = Text2.Text If fx(st1, st2) > 0 ThenLabel1.Caption =“共出现” + ____②____+ “ 次” Else Label1.Caption = “未出现” End IfEnd Sub解析 划线①处主要考查的是函数值的返回,函数值是通过函数名来返回的,变量times用来存储数字y在整数x中出现的次数,因此①处代码为fx=times;划线②处代码考查函数的调用表示将出现的次数显示在标签Label1中,fx(st1, st2)返回的结果为出现的次数,因此②处代码为Str(fx(st1, st2)),因为times是局部变量,因此不能填Str(times)。答案 ①fx = times ②Str(fx(st1, st2))基础巩固1.有如下程序段:Private Sub Command1_Click() Dim d(1 To 10) As Integer, f(1 To 10) As Boolean Dim i As Integer, ans As Integer ′给数组元素d(1)~d(10)赋值,代码略 For i = 1 To 10f(i) = False Next i For i = 2 To 10If d(i) - d(i - 1) > 0 Then f(i) = True d(i) = d(i) - d(i - 1)End If Next i For i = 1 To 10If f(i) Then ans = ans + 1 Next i Label1.Caption = Str(ans)End Sub程序运行时,数组元素d(1)~d(10)的赋值分别为:25、15、10、8、1、7、8、11、16、5,则标签Label1中显示的内容为( )A.3 B.4 C.5 D.6解析 本题主要考查的是程序的综合运用能力。程序执行过程各变量的变化如下表所示:ii=1i=2i=3i=4i=5i=6i=7i=8i=9i=10数组元素d(i)初值251510817811165d(i)>d(i - 1)?NNNNNYYYYNf(i)FFFFFTTTTFd(i)6297因此答案为B。答案 B2.下面VB程序的功能为:在文本框Text1中输入一个整数n,单击按钮Command1,在标签Label1中显示1+2+…+n的和。Function qh(x) As Integer Dim sum1 As Long,i As Integer For i=1 To xsum1=sum1+i Next i qh=sum1End FunctionPrivate Sub Command1_Click() Dim n As Integer, sum As Long n = Val(Text1.Text) sum =________________ Label1.Caption =Str(sum)End Sub要实现上述功能,程序划线处应填入的语句为( )A.qh B.qh(x)C.qh(n) D.qh(n,x)解析 本题主要考查的自定义函数的调用。自定义函数qh的功能是求整数1+2+…+n的和,由于输入的整数为n,即调用函数时对应的参数为n,因此划线处应填的语句为qh(n),答案为C。答案 C能力提升3.下面VB程序的功能是将一个十进制数n转换为二进制数。程序运行时,在文本框Text1中输入一个正整数n,单击“转换为二进制数”的按钮,在标签Label2中显示该十进制数对应的二进制数。程序运行效果如下图所示。实现上述功能的VB程序如下,请回答下列问题:Function dtob(x As Integer) As String Dim y As Integer, s As String s = “ ” Do While x > 0 y = x Mod 2 x = x 2 s = y & s Loop ________①________End FunctionPrivate Sub Command1_Click() Dim n As Integer n = Val(Text1.Text) Label2.Caption = “整数” + Str(n) + “转换为二进制数为:” +________②________End Sub(1)要在窗体的标题行上显示“十进制转二进制”,应修改Form1窗体的________属性的属性值。(2)请在程序划线处填入合适的代码。解析 (1)本小题主要考查的是窗体的Caption属性。(2)划线①处主要考查的是函数值的返回,因此代码为dtob = s;划线②处主要考查的是自定义函数的调用,函数值为字符串类型,因此②处代码不能加Str函数,答案为dtob(n)。答案 (1)Caption (2)①dtob = s ②dtob(n)4.超级素数的定义:当一个素数从低位到高位依次去掉一位数后剩下的数仍然是素数,则此数为超级素数。例如:7331、733、73、7均为素数,所以7331为超级素数。单击“查找按钮”Command1,则在列表框List1中显示所有四位数的超级素数,并在文本框Text1中显示超级素数的数量。Private Sub Command1_Click() Dim i As Integer, temp As Integer Dim flag As Boolean, n As Integer n = 0 For i = 1001 To 9999 Step 2flag = True : temp = iDo While temp <> 0 If Then flag = False: Exit Do′(1) temp = temp '10LoopIf flag Then List1.AddItem Str(i):n = n + 1 Next i Text1.Text = Str(n)End SubFunction prime(x As Integer) As Boolean Dim j As Integer prime = False If x >= 2 Thenj = 2Do While x Mod j <> 0 j = j + 1 Loop If Then prime = True′(2) End IfEnd Function程序中加框(1)处应改正为___________________________________________;加框(2)处应改正为_________________________________________________。解析 该题采用枚举算法思想,找出1001到9999之间的超级素数。prime函数的功能是判断x是否是素数,若x是素数,他将不能被2至x-1之间的数整除,每一个能被x整除的数是他本身,因此第二处应为j=x。超级素数的条件是依次去除各个数字,去除后的数还是素数,变量flag表示是否是素数的标志。在第一处错误中,如果prime(temp)为假时,flag才为False。答案 (1)prime(temp)=False (2)j = x课件16张PPT。第1节 过程与自定义函数一、过程1.VB应用程序是按模块化的方式组成的,程序模块分为过程和函数两种,过程强调的是动作,而函数强调的是值的计算。2.什么是过程 将程序划分为一个个较小的逻辑单元,每个逻辑单元构成一个过程。过程中的代码可以被重复地调用。3.过程的分类过程分成两类:事件处理过程和通用过程。①事件处理过程的一般格式:Sub 事件处理过程名(参数表) 语句块End Sub②通用过程的一般格式:Sub 通用过程名(参数表) 语句块End Sub过程调用:Call 过程名(参数表)4.常见的VB事件常见的VB事件有:Click(单击)、DblClick(双击)、KeyPress(按键)、Load(装载)、Change(改变)等。作用在VB对象上的常见事件处理过程有:文本框Text:Text1_Click、Text1_DblClick、Text1_KeyPress、Text1_Change命令按钮Command:Command1_Click标签Label:Label1_Click窗体Form:Form_Load(窗体装载)二、自定义函数1.函数 函数也是一个程序模块,不同之处是函数执行完成后,函数的计算结果被送到函数的调用点上,供程序的后继部分继续执行,会返回一个函数值。函数值是通过函数名返回的。2.自定义函数格式 Function 函数名(参数表)As类型名 语句块 End Function一、过程【典例1】 下面VB程序的功能是利用海伦公式求三角形面积。程序运行时,分别在文本框Text1、Text2、Text3中输入三条边的长度,单击“计算”按钮,若能构成三角形,则在标签Label5中显示三角形的面积,否则显示信息“无法构成三角形”。其中p为周长的一半。运行效果如下图所示:实现上述功能的VB程序如下,请回答下列问题:Private Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer, d As Single, s As Single a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If a + b > c And a + c > b And ____①____ Then d = (a + b + c) / 2 s = ________②________ Label5.Caption = Str(s) Else Label5.Caption = “无法构成三角形” End IfEnd Sub(1)“Private Sub Command1_Click()”中Command1是指__________,Click是指________,Command1_Click为__________________(选填:对象名 /事件名/属性名/过程名)。(2)请在划线处填入合适的代码。解析 (1)本小题主要考查的是VB的对象、事件及事件处理过程。Command1是指对象名,Click是指事件名(鼠标单击),Command1_Click为过程名。(2)本小题主要考查的是VB表达式。程序①处语句表示能否构成三角形的条件(任二条之和大于第三边),因此①处代码为b + c > a;程序②处代码表示用海伦公式求三角形面积,将数学公式转换为VB公式,因此②处代码为Sqr(d * (d - a) * (d - b) * (d - c))。答案 (1)对象名 事件名 过程名 (2)①b + c > a 或a < b + c ②Sqr(d * (d - a) * (d - b) * (d - c))二、自定义函数【典例2】 编写一个求[a,b]区间内的所有素数的VB程序。程序运行时,分别在文本框Text1、Text2中输入a、b的值,单击“求解”按钮,在列表框List1中输出[a,b]区间内的所有素数,并统计个数,显示在列表框的最后一行。程序运行效果如下图所示:实现上述功能的VB程序如下,请回答下列问题:Function prime(x As Integer) As Boolean Dim k As Integer k = 2 prime = True Do While k < x And prime If x Mod k = 0 Then ________①________ Else k = k + 1 End If LoopEnd FunctionPrivate Sub Command1_Click() Dim i As Integer, a As Integer, b As Integer, n As Integer a = Val(Text1.Text) b = Val(Text2.Text) For i = a To b If ________②______ Then List1.AddItem Str(i) n = n + 1 End If Next i List1.AddItem “共有素数:” + ______③______ + “ 个”End Sub(1)代码“List1.AddItem Str(i)”中的AddItem是指____________(填:属性名 / 事件名 / 方法名)。(2)请在划线处填入合适的代码。解析 本题主要考查的是自定义函数。(1)代码“List1.AddItem Str(i)”中的AddItem是指方法名。(2)函数值是通过函数名来返回的,prime函数的初值为True,当整数x能被整数k整除时,表示x不是素数,因此修改函数值为False,即①处代码为prime = False;②处代码为调用prime函数,当整数i为素数时,则在列表框List1中输出,因此代码为Prime(i)= True ,也可写为prime(i);变量n用来统计素数个数,因为与其他字符串连接后在列表框中输出,因此③处代码为Str(n),而不能写为n。答案 (1)方法名 (2)①prime = False ②Prime(i)= True 或prime(i) ③Str(n) 展开更多...... 收起↑ 资源列表 第1节 过程与自定义函数.doc 第五单元第1节 过程与自定义函数.pptx