資源簡介 第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 縮略圖、資源來源于二一教育資源庫