第6章過程(65-68)_第1頁
第6章過程(65-68)_第2頁
第6章過程(65-68)_第3頁
第6章過程(65-68)_第4頁
第6章過程(65-68)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、VB程序設(shè)計程序設(shè)計2第六章第六章 過程過程6.1 過程與模塊的概念過程與模塊的概念6.2 Sub子過程的定義及其調(diào)用子過程的定義及其調(diào)用6.3 Function函數(shù)過程的定義及其調(diào)用函數(shù)過程的定義及其調(diào)用6.4 參數(shù)的傳遞參數(shù)的傳遞6.5 變量與過程的作用域變量與過程的作用域6.6 過程的遞歸調(diào)用過程的遞歸調(diào)用6.7 常用算法舉例(三)常用算法舉例(三)6.8 多重窗體的程序設(shè)計多重窗體的程序設(shè)計回顧上節(jié)課內(nèi)容回顧上節(jié)課內(nèi)容 過程:事件過程、通用過程過程:事件過程、通用過程 通用過程:通用過程:Sub子過程、子過程、Function函數(shù)函數(shù)過程過程 定義、調(diào)用、區(qū)別定義、調(diào)用、區(qū)別 參數(shù)傳遞

2、:按值傳遞、按地址傳遞參數(shù)傳遞:按值傳遞、按地址傳遞346.4.3 數(shù)組參數(shù)的傳遞數(shù)組參數(shù)的傳遞Function tim( Function tim( a() As Integer a() As Integer ) ) Dim t#, i% Dim t#, i% t = 1 t = 1 for i = Lbound(a) to Ubound(a) for i = Lbound(a) to Ubound(a) t = t t = t * * a(i) a(i) next i next i tim = t tim = tEnd FunctionEnd Function用數(shù)組來做用數(shù)組來做形參數(shù)組的

3、語法格式:形參數(shù)組的語法格式: 形參數(shù)組名形參數(shù)組名( )As 類型數(shù)組按數(shù)組按方式進行傳遞;方式進行傳遞;語法格式中語法格式中定義;定義;圓括號不能省。圓括號不能省。5對應(yīng)的對應(yīng)的,且類型與形參,且類型與形參類型對應(yīng)。類型對應(yīng)。實參數(shù)組直接放在實參表中,實參數(shù)組直接放在實參表中,。調(diào)用調(diào)用Function tim(Function tim(a() As Integera() As Integer) ):t1 = tim(t1 = tim() ) t2 = tim(t2 = tim( ) )注意:注意:6例例6-9 累乘問題累乘問題 Private Sub Form_Click()Privat

4、e Sub Form_Click() Dim a%(1 to 5) , b%(4 to 8) , i% , t1# , t2# Dim a%(1 to 5) , b%(4 to 8) , i% , t1# , t2# For i = 1 to 5 For i = 1 to 5 a(i) = i a(i) = i Next i Next i For i = 4 to 8 For i = 4 to 8 b(i) = i b(i) = i Next i Next i Print “t1=”, t1, “t2=”, t2 Print “t1=”, t1, “t2=”, t2End SubEnd Sub

5、Function tim(Function tim(a() As Integera() As Integer) )Dim t#, i%Dim t#, i%t = 1t = 1For i = For i = to to t = t t = t * * a(i) a(i)Next iNext itim = ttim = tEnd FunctionEnd Function編一求任意一維數(shù)組各元素之積編一求任意一維數(shù)組各元素之積的通用函數(shù)過程。并調(diào)用它。的通用函數(shù)過程。并調(diào)用它。7例例6-10 選擇選擇法排序(法排序(調(diào)調(diào)用排序的子用排序的子過過程)程)Public Sub sort2(Public

6、Sub sort2() ) Dim i As Integer, j As Integer Dim i As Integer, j As Integer Dim imin As Integer, t As Integer Dim imin As Integer, t As Integer For i = 1 To UBound(a) - 1 For i = 1 To UBound(a) - 1 imin = i imin = i For j = i + 1 To UBound(a) For j = i + 1 To UBound(a) If a(j) a(imin) Then imin = j

7、If a(j) a(imin) Then imin = j Next j Next j t = a(i): a(i) = a(imin): a(imin) = t t = a(i): a(i) = a(imin): a(imin) = t Next i Next iEnd SubEnd Sub8Private Sub Form_Click()Private Sub Form_Click() Dim a() As Integer, i As Integer, n As Integer Dim a() As Integer, i As Integer, n As Integer n = Val(I

8、nputBox( n = Val(InputBox(輸入數(shù)組元素個數(shù)輸入數(shù)組元素個數(shù)) ReDim a(1 To n) ReDim a(1 To n) Randomize Randomize Print Print 排序前排序前 For i = 1 To n For i = 1 To n a(i) = Int(99 - 10 + 1) a(i) = Int(99 - 10 + 1) * * Rnd) + 10 Rnd) + 10 Print a(i); Print a(i); Next i Next i Print Print sort2 a() sort2 a() Print Print 排

9、序后排序后 For i = 1 To n For i = 1 To n Print a(i); Print a(i); Next i Next i Print PrintEnd SubEnd Sub96.8.1 多重窗體的建立和管理多重窗體的建立和管理6.8 多重窗體的程序設(shè)計多重窗體的程序設(shè)計創(chuàng)建新窗體和添加現(xiàn)有窗體創(chuàng)建新窗體和添加現(xiàn)有窗體刪除窗體刪除窗體保存窗體保存窗體工程添加窗體工程添加窗體106.8.2 設(shè)置啟動對象設(shè)置啟動對象兩種方法:兩種方法:“工程工程”+“工程屬性工程屬性” 在工程上單擊右鍵在工程上單擊右鍵116.8.3 窗體之間的切換語句和方法窗體之間的切換語句和方法(1)L

10、oad語句語句:把窗體裝入到內(nèi)存,但并不顯示出來:把窗體裝入到內(nèi)存,但并不顯示出來Load 窗體名稱窗體名稱(2)Unload語句語句:將窗體從內(nèi)存中卸載:將窗體從內(nèi)存中卸載Unload 窗體名稱窗體名稱(3)Show方法方法:顯示一個窗體,觸發(fā)窗體的:顯示一個窗體,觸發(fā)窗體的窗體名稱窗體名稱. Show(4)Hide方法方法:隱藏指定的窗體,沒有刪除:隱藏指定的窗體,沒有刪除窗體名稱窗體名稱. Hide12 frmmainfrminputfrmoutput6.8.4 多窗體應(yīng)用程序示例多窗體應(yīng)用程序示例136.5 變量與過程的作用域變量與過程的作用域6.5.1 變量的作用域變量的作用域全局變

11、量全局變量窗體窗體/模塊級變量模塊級變量局部變量局部變量146.5.1.1 局部變量局部變量Dim|Static 變量名變量名 As 類型類型,變量名變量名As 類型類型.定義在:過程中;定義在:過程中;作用域:本過程;作用域:本過程;其值在運行過程中存在,運行后消失;其值在運行過程中存在,運行后消失;每次調(diào)用過程時,局部變量都會初始化。每次調(diào)用過程時,局部變量都會初始化。15X的作用域的作用域X的作用域的作用域X的作用域的作用域16例例6-14Private Sub Form_Click() ik As Integer ik = ik + 1 Print 目前為止已經(jīng)單擊了窗體目前為止已經(jīng)單

12、擊了窗體; ik; 次次End Sub17定義在:窗體定義在:窗體/模塊模塊“通用聲明通用聲明”處;處;作用域:本窗體作用域:本窗體/本模塊,可被本窗體本模塊,可被本窗體/本模塊本模塊 的的調(diào)用。調(diào)用。6.5.1.2 窗體窗體/模塊級變量模塊級變量Dim|Private 變量名變量名 As 類型類型,變量名變量名As 類型類型.Dim ik As IntegerPrivate Sub Form_Click() ik = ik + 1 Print ikEnd SubPrivate Sub Form_Load() ik = 1End Sub18定義:窗體定義:窗體/模塊模塊“通用聲明通用聲明”處;

13、處;作用域:作用域:整個應(yīng)用程序整個應(yīng)用程序,可被應(yīng)用程序的,可被應(yīng)用程序的任何過程訪問;任何過程訪問;其值在整個程序中保留,不會消失和初始其值在整個程序中保留,不會消失和初始化,直到整個程序運行結(jié)束,才會消失;化,直到整個程序運行結(jié)束,才會消失;注意:注意:窗體中聲明的全局變量在被其它窗窗體中聲明的全局變量在被其它窗體引用時,應(yīng)為:窗體名體引用時,應(yīng)為:窗體名.變量名。變量名。 6.5.1.3 全局變量全局變量Public 變量名變量名 As 類型類型,變量名變量名 As 類型類型19在標準模塊中聲明:在標準模塊中聲明:Public ik As Integer在在Form2窗體模塊中編寫:窗

14、體模塊中編寫:Private Sub Form_click() ik = ik + 1 Print ik=; ikEnd Sub在在Form1窗體模塊中編寫:窗體模塊中編寫:Private Sub Form_Load() ik = 1End SubPrivate Sub Form_click() ik = ik + 1 Print ik=; ik Form2.ShowEnd Sub例例6-16 全局變量全局變量20Public X As IntegerPrivate Sub Form_Load() Dim X As Integer Show =2 =1 Print ,Form1.X End S

15、ub 21VB允許在不同級聲明相同的變量名。允許在不同級聲明相同的變量名。同一模塊中定義了不同級而同名的變量同一模塊中定義了不同級而同名的變量時,系統(tǒng)時,系統(tǒng)優(yōu)先訪問作用域小優(yōu)先訪問作用域小的變量名。的變量名。要在過程中引用同名的全局變量,必須要在過程中引用同名的全局變量,必須在變量名前加窗體在變量名前加窗體/模塊名。模塊名。注意注意:22變量作用域變量作用域總結(jié)總結(jié): :對不同作用范圍的對不同作用范圍的3 3種變量聲明及使用規(guī)則種變量聲明及使用規(guī)則作用范圍作用范圍局部變量局部變量窗體模塊級變量窗體模塊級變量全局變量全局變量窗體窗體標準模塊標準模塊聲明方式聲明方式被其它模塊被其它模塊過程存取過

16、程存取被本模塊的其被本模塊的其他過程存取他過程存取聲明位置聲明位置Dim,Static不能不能不能不能在過程中在過程中Dim,Private不能不能能能窗體模塊的窗體模塊的“通用聲明通用聲明”段段Public能,但在變量能,但在變量名前加窗體名名前加窗體名能能窗體窗體/模塊的模塊的“通用聲明通用聲明”段段能能236.5.2 過程的作用域:過程的作用域:(1)窗體)窗體/模塊級模塊級(Private): 只能被本窗體或本標準模塊內(nèi)的事件過程只能被本窗體或本標準模塊內(nèi)的事件過程或其他過程調(diào)用。或其他過程調(diào)用。(2)全局級)全局級(Public): 可被整個應(yīng)用程序的所有窗體和所有標準可被整個應(yīng)用程

17、序的所有窗體和所有標準模塊中的過程調(diào)用。模塊中的過程調(diào)用。246.6 遞歸遞歸6.6.1 遞歸的概念遞歸的概念用用自身自身的結(jié)構(gòu)來的結(jié)構(gòu)來描述自身描述自身就稱為就稱為“遞歸遞歸”。例:例: 256.6.2 遞歸子過程和遞歸函數(shù)遞歸子過程和遞歸函數(shù)Private Function Fac(N As Integer) As Long If Then Fac = 1 Else Fac = N * Fac(N - 1) End IfEnd FunctionFac(3)=3*Fac(2)Fac(1)=1Fac(2)=2*1Fac(3)=3*2Fac(2)=2*Fac(1)遞推遞推回歸回歸結(jié)束條件結(jié)束條件

18、遞歸遞歸26構(gòu)成遞歸的構(gòu)成遞歸的兩大要素兩大要素: (1) 具備具備遞歸結(jié)束條件遞歸結(jié)束條件及結(jié)束時的值;及結(jié)束時的值; (2) 能用遞歸形式表示能用遞歸形式表示,并且遞歸向終止條件并且遞歸向終止條件 (或稱邊界條件或稱邊界條件)發(fā)展。發(fā)展。27Private Function Chb(n As Integer,x As Single) As Single If n = 0 Then Chb = 1 ElseIf n = 1 Then Chb = x Else Chb = 2 * x * Chb(n-1,x) - Chb(n-2,x) End IfEnd Function例例6-18 求契比雪

19、夫多項式求契比雪夫多項式結(jié)束條件結(jié)束條件結(jié)束條件結(jié)束條件28例例6-19 求正整數(shù)求正整數(shù)M M和和N N的最大公約數(shù)。的最大公約數(shù)。296.7 常用算法舉例常用算法舉例(三三)例例6-20 設(shè)有方程設(shè)有方程f(x)=2x3-4x2+3x-6=0,用,用牛頓切線法牛頓切線法求該方程在區(qū)間求該方程在區(qū)間0,3之間的實根,精確到之間的實根,精確到10-5。 x0 =1.5 xi+1 = xi - f(x)/f(x) 當(dāng)當(dāng)abs(xi+1-xi) 時,時,xi+1作為方程的作為方程的近似解。近似解。 3031Private Function f2(ByVal x As Single) As Single f2 = 6 * x * x - 8 * x + 3End FunctionPrivate Function f1(ByVal

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論