![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
第六章 VB的過(guò)程設(shè)計(jì)(重點(diǎn)概述) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
第六章 VB的過(guò)程設(shè)計(jì) 1.什么是過(guò)程 在程序設(shè)計(jì)中,為各個(gè)相對(duì)獨(dú)立的功能模塊所編寫的一段程序稱之為過(guò)程。 2.VB中的自定義過(guò)程分類 (1)以“Sub”保留字開始的子程序過(guò)程 (包括事件過(guò)程和通用過(guò)程),不返回值; 6.1 子過(guò)程(Sub)的定義與調(diào)用 1. 事件過(guò)程 (1)窗體事件過(guò)程 語(yǔ)法:Private Sub Form_事件名([參數(shù)列表]) (2)控件事件過(guò)程 語(yǔ)法:Private Sub 控件名_事件名([參數(shù)列表]) (3)建立事件過(guò)程的方法 1)打開代碼編輯器窗口(兩種方法:雙擊對(duì)象或從工程管理器中單擊“查看代碼”按鈕) (4)事件過(guò)程的調(diào)用 事件過(guò)程由一個(gè)發(fā)生在VB中的事件來(lái)自動(dòng)調(diào)用或者由同一模塊中的其他過(guò)程顯示調(diào)用。 2.通用過(guò)程 通用過(guò)程是一個(gè)必須從另一個(gè)過(guò)程顯示調(diào)用的程序段,通用過(guò)程有助于將復(fù)雜的應(yīng)用程序分解成多個(gè)易于管理的邏輯單元,使應(yīng)用程序更簡(jiǎn)潔、更易于維護(hù)。 通用過(guò)程分為公有(Public)過(guò)程和私有( Private)過(guò)程兩種,公有過(guò)程可以被應(yīng)用程序中的任一過(guò)程調(diào)用,而私有過(guò)程只能被同一模塊中的過(guò)程調(diào)用。 (1)定義方法: [ Private | Public ] [ Static] Sub 過(guò)程名([參數(shù)列表]) 注意: 形參格式為: (2)建立Sub過(guò)程的方法 方法一: 方法二: 3.Sub子過(guò)程的調(diào)用 (1) 用Call語(yǔ)句調(diào)用Sub過(guò)程 語(yǔ)法:Call 過(guò)程名(實(shí)在參數(shù)表)
(2)把過(guò)程名作為一個(gè)語(yǔ)句來(lái)用 語(yǔ)法:過(guò)程名 [實(shí)參1[,實(shí)參2……]] 它與(1)的不同點(diǎn)是:去掉了關(guān)鍵字和實(shí)參列表的括號(hào) 6.2 函數(shù)過(guò)程(Function)的定義與調(diào)用 1.函數(shù)過(guò)程的定義 有兩種方法: (1) 在代碼窗口中,利用“工具”菜單下的“添加過(guò)程”命令,插入一個(gè)函數(shù)過(guò)程模板來(lái)定義 2.注意事項(xiàng) (1) 函數(shù)名的命名規(guī)則與變量命名規(guī)則相同;函數(shù)過(guò)程必須由函數(shù)名返回一個(gè)值。
3.Function過(guò)程的調(diào)用 調(diào)用Function過(guò)程與調(diào)用VB內(nèi)部函數(shù)的方法一樣,即在表達(dá)式中寫出它的名稱和相應(yīng)的實(shí)在參數(shù)。 4.調(diào)用其他模塊中的過(guò)程 (1)調(diào)用窗體中的過(guò)程 (2)調(diào)用標(biāo)準(zhǔn)模塊中的過(guò)程 (3)類模塊中的過(guò)程 如:在類模塊Class1中含有過(guò)程clssub,變量Democlass是類Class1的一個(gè)實(shí)例,則調(diào)用clssub的方法是: 1 + x + x2/2! +……+ xn/n! +……, |xn/n!|<exp
6.3 參數(shù)的傳遞 1.形參與實(shí)參的概念 形參:指出現(xiàn)在Sub 和Function過(guò)程形參表中的變量名、數(shù)組名,過(guò)程被調(diào)用前,沒(méi)有分配內(nèi)存,其作用是說(shuō)明自變量的類型和形態(tài)以及在過(guò)程中的角色。形參可以是: 1)除定長(zhǎng)字符串變量之外的合法變量名; 實(shí)參:是在調(diào)用Sub 和Function過(guò)程時(shí),傳送給相應(yīng)過(guò)程的變量名、數(shù)組名、常數(shù)或表達(dá)式。在過(guò)程調(diào)用傳遞參數(shù)時(shí),形參與實(shí)參是按位置結(jié)合的,形參表和實(shí)參表中對(duì)應(yīng)的變量名可以不必相同,但位置必須對(duì)應(yīng)起來(lái)。 形參與實(shí)參的關(guān)系:形參如同公式中的符號(hào),實(shí)參就是符號(hào)具體的值;調(diào)用過(guò)程:即實(shí)現(xiàn)形參與實(shí)參的結(jié)合,也就是把值代入公式進(jìn)行計(jì)算。 2. 按值傳遞參數(shù)(定義時(shí)加ByVal) 按值傳遞參數(shù)(Passed By Value)時(shí),是將實(shí)參變量的值復(fù)制一個(gè)到臨時(shí)存儲(chǔ)單元中,如果在調(diào)用過(guò)程中改變了形參的值,不會(huì)影響實(shí)參變量本身,即實(shí)參變量保持調(diào)用前的值不變。 3.按地址傳遞參數(shù)(定義時(shí)沒(méi)有修飾詞或帶關(guān)鍵字ByRef) 按地址傳遞參數(shù)時(shí),把實(shí)參變量的地址傳送給被調(diào)用過(guò)程,形參和實(shí)參共用內(nèi)存的同一地址。在被調(diào)用過(guò)程中,形參的值一旦改變,相應(yīng)實(shí)參的值也跟著改變。如果實(shí)參是一個(gè)常數(shù)或表達(dá)式,VB會(huì)按“傳值”方式來(lái)處理。 4.數(shù)組參數(shù) VB允許把數(shù)組作為形參出現(xiàn)在形參表中,語(yǔ)法: 形參數(shù)組名() [As 數(shù)據(jù)類型] 形參數(shù)組只能按地址傳遞參數(shù),對(duì)應(yīng)的實(shí)參也必須是數(shù)組,且數(shù)據(jù)類型相同。調(diào)用過(guò)程時(shí),把要傳遞的數(shù)組名放在實(shí)參表中,數(shù)組名后面不跟圓括號(hào)。在過(guò)程中不可以用Dim語(yǔ)句對(duì)形參數(shù)組進(jìn)行聲明,否則會(huì)產(chǎn)生“重復(fù)聲明”的錯(cuò)誤。但在使用動(dòng)態(tài)數(shù)組時(shí),可以用ReDim語(yǔ)句改變形參數(shù)組的維界,重新定義數(shù)組的大小。 5. 對(duì)象參數(shù) VB中可以向過(guò)程傳遞對(duì)象,在形參表中,把形參變量的類型聲明為“Control”,可以向過(guò)程傳遞控件;若聲明為“Form”,則可向過(guò)程傳遞窗體。對(duì)象的傳遞只能按地址傳遞。
6.4 變量、過(guò)程的作用域 1. VB應(yīng)用程序的組成: 2. 過(guò)程的作用域
3. 變量的作用域
4.靜態(tài)變量 用Static聲明的靜態(tài)變量,在每次調(diào)用過(guò)程時(shí)保持原來(lái)的值,不重新初始化。而用Dim聲明的變量,每次調(diào)用過(guò)程時(shí),重新初始化 5.同名變量 對(duì)不同范圍內(nèi)出現(xiàn)的同名變量,可以用模塊名加以區(qū)別。一般情況下,當(dāng)變量名相同而作用域不同時(shí),優(yōu)先訪問(wèn)局限性大的變量。 6.5 遞歸過(guò)程 1.遞歸的概念 通俗的講,用自身的結(jié)構(gòu)來(lái)描述自身就稱為“遞歸”。如對(duì)階乘運(yùn)算的定義就是遞歸的: 2.遞歸子過(guò)程和遞歸函數(shù) VB 允許一個(gè)自定義子過(guò)程或函數(shù)過(guò)程在過(guò)程體的內(nèi)部調(diào)用自己,這樣的子過(guò)程或函數(shù)就叫遞歸子過(guò)程和遞歸函數(shù)。遞歸過(guò)程包含了遞推和回歸兩個(gè)過(guò)程。構(gòu)成遞歸的條件是: (1)遞歸結(jié)束條件和結(jié)束時(shí)的值 3.注意事項(xiàng) (1)遞歸算法設(shè)計(jì)簡(jiǎn)單,但消耗的上機(jī)時(shí)間和占據(jù)的內(nèi)存空間比非遞歸大 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||