【正文】
(x) + 整除 3 Case 1 MsgBox Str(x) + 除以 3余 1 Case 2 MsgBox Str(x) + 除以 3余 2 End Select End Sub IIf函數(shù) ? 用途:作為函數(shù),根據(jù)測(cè)試表達(dá)式得到的邏輯值,從兩個(gè)表達(dá)式選擇一個(gè)作為返回值,其用途類(lèi)似于 If…… Then…… Else語(yǔ)句,只不過(guò) IIf函數(shù)是一個(gè)用來(lái)返回值的選擇結(jié)構(gòu)。 循環(huán)控制結(jié)構(gòu) ? 在實(shí)際應(yīng)用中,經(jīng)常遇到一些操作并不復(fù)雜,但需要反復(fù)多次處理的問(wèn)題,比如要計(jì)算1+2+3+…… +10000,直接把這個(gè)求和的表達(dá)式用手工輸入顯示是不現(xiàn)實(shí)的。 ? Visual Basic提供了 3種循環(huán)控制方式: ? For…… Next ? Do…… Loop ? While…… Wend For…… Next 循環(huán) ? 用途: ? For循環(huán)通常用于將某一程序段重復(fù)執(zhí)行、且重復(fù)次數(shù)是固定的場(chǎng)合。 ? 語(yǔ)法: For 計(jì)數(shù)器 =初值 To 終值 [Step 增量 ] [循環(huán)體 ] Next 計(jì)數(shù)器 For…… Next 循環(huán) ? 說(shuō)明: For循環(huán)執(zhí)行步驟如下: 1.將計(jì)數(shù)器設(shè)定為初值。 3.若上述判斷值為 True,則執(zhí)行循環(huán)體中的語(yǔ)句,否則跳出循環(huán)。 S End Sub For…… Next 循環(huán) ? 可以注意到,對(duì)于需要將某些語(yǔ)句執(zhí)行固定次數(shù)的循環(huán),使用 For…… Next循環(huán)非常方便。但在某些情況下,可能在循環(huán)變量到達(dá)終值前需要退出循環(huán),這可通過(guò) Exit For語(yǔ)句來(lái)實(shí)現(xiàn)。 ? 解析: ? 1和本身外沒(méi)有其他因數(shù)則該數(shù)為質(zhì)數(shù),否則為合數(shù) ? N是否為質(zhì)數(shù),可以用自 2至 N1循環(huán)查找 N的因數(shù),如果沒(méi)有 N的因數(shù),則 N為質(zhì)數(shù);如果找到一個(gè)因數(shù),可以退出循環(huán)得到 N是合數(shù)的結(jié)論。 則必有因數(shù) pN189。由此可精簡(jiǎn)算法,使循環(huán)的終值由 N減小到 Sqr(N) For…… Next 循環(huán) ? 例 代碼 Private Sub Command1_Click() Dim N As Long, I As Integer N = Val(InputBox(―請(qǐng)輸入大于 2的自然數(shù): ” )) If N =2 Then MsgBox 請(qǐng)輸入大于 2的正整數(shù) Exit Sub End If For I = 2 To Sqr(N) If N Mod I = 0 Then Exit For 39。 ? 例如,下面的循環(huán)嵌套是正確的: For I= a To b For J = c to d ………… Next J Next I ? 下面的循環(huán)嵌套是錯(cuò)誤的 For I= a To b For J= c To d ………… Next I Next J For…… Next 循環(huán) ? 例 :求 S=3! + 6! + 9! + 12! Private Sub Command1_Click() Dim I As Integer, J As Long Dim K As Long Dim S As Long For I = 3 To 12 Step 3 K = 1 For J = 1 To I K = K * J Next J S = S + K Next I Print S=。 ? Do…… Loop循環(huán)在語(yǔ)法上有以下 3種形式。 Format(S) End Sub Do…… Loop 循環(huán) ? 例 2: Private Sub Command1_Click() Dim S As Single Dim A As Single Dim T As Long T = 1 A = 1 S = 1 Do Until A T = T + 1 A = 1 / T S = S + A Loop MsgBox ―S=‖ amp。 Format(Pi) End Sub 3.無(wú)條件的 Do…… Loop循環(huán) ? 用途: ? 當(dāng)程序中可能需要無(wú)窮循環(huán)時(shí),可使用無(wú)條件的Do…… Loop循環(huán) ? 語(yǔ)法: Do [循環(huán)體 ] Loop ? 說(shuō)明: ? 使用此種循環(huán)可能使程序產(chǎn)生無(wú)窮循環(huán),為了避免這種情況的發(fā)生,通常在循環(huán)體中要有條件語(yǔ)句,以在適當(dāng)?shù)臅r(shí)候使用 Exit Do語(yǔ)句退出循環(huán)。 ? 語(yǔ)法: While 條件 [循環(huán)體 ] Wend ? 說(shuō)明: ? 先判斷條件是否成立,當(dāng)條件為 True時(shí)執(zhí)行反復(fù)執(zhí)行循環(huán)體,直到條件為 False時(shí)為止。 多重循環(huán) ? 通常把循環(huán)體內(nèi)不含有循環(huán)語(yǔ)句的循環(huán)叫做單層循環(huán),而把循環(huán)體內(nèi)含有循環(huán)語(yǔ)句的循環(huán)稱(chēng)為多重循環(huán)。多重循環(huán)又稱(chēng)作多層循環(huán)或循環(huán)嵌套。 amp。 = amp。 Tab。 ? 語(yǔ)法: GoTo {標(biāo)號(hào) |行號(hào) } ? 說(shuō)明: ? 1) GoTo語(yǔ)句改變程序執(zhí)行的順序,無(wú)條件的把控制轉(zhuǎn)移到“ 標(biāo)號(hào) ” 或 “ 行號(hào) ” 所在的程序行,并從該行開(kāi)始向下執(zhí)行。 ? 3) GoTo語(yǔ)句的功能被限定在一個(gè)過(guò)程中,不能將控制跳轉(zhuǎn)到另一個(gè)過(guò)程中 Goto 型控制 ? On…… GoTo語(yǔ)句 ? 用途:在使用 GoTo型控制時(shí)要實(shí)現(xiàn)類(lèi)似于 Select Case的功能,實(shí)現(xiàn)多分支選擇控制,就要用到 On…… GoTo型控制 ? 語(yǔ)法: On 數(shù)值表達(dá)式 GoTo 行號(hào)列表 |標(biāo)號(hào)列表 ? 說(shuō)明: ? Visual Basic在遇到 On…… GoTo語(yǔ)句時(shí),先計(jì)算數(shù)值表達(dá)式的值,并將其四舍五入得到一個(gè)整數(shù),根據(jù)這個(gè)整數(shù)值決定跳到第幾個(gè)行號(hào)或標(biāo)號(hào)處執(zhí)行: ? 1)若該整數(shù)值為 1則轉(zhuǎn)向第一個(gè)行號(hào)或標(biāo)號(hào)處執(zhí)行語(yǔ)句,若值為 2則轉(zhuǎn)向第二個(gè)行號(hào)或標(biāo)呈處執(zhí)行語(yǔ)句 …… 并依此類(lèi)推 ? 2) 若該整數(shù)值為 0或大于 “ 行號(hào)列表 ” 或 “ 標(biāo)號(hào)列表 ” 中的項(xiàng)數(shù),程序自動(dòng)跳轉(zhuǎn)到 On…… GoTo語(yǔ)句后面的一個(gè)可執(zhí)行語(yǔ)句 ? 3)若該整數(shù)值為負(fù)數(shù),會(huì)產(chǎn)生一個(gè)運(yùn)行期錯(cuò)誤。循環(huán)讀取字符時(shí),需用一個(gè)邏輯變量來(lái)表明是否有新單詞開(kāi)始,具體方法如下。 ( 2)遇到空格時(shí)將改邏輯變量設(shè)為真,再次遇到非空字符時(shí),再次將該邏輯變量設(shè)為假,同時(shí)計(jì)數(shù)。 ( 4)對(duì)于字符的統(tǒng)計(jì)只需要在讀取每個(gè)字符時(shí)判斷是什么類(lèi)型的字符,并進(jìn)行統(tǒng)計(jì)即可。 ? (2) 打開(kāi)新的 “ 標(biāo)準(zhǔn) EXE‖工程,建立工程工程 1,窗體名為 Form1。 ? (4) 主要控件的屬性設(shè)置如下表所示。數(shù)組有數(shù)組名,一個(gè)數(shù)組由多個(gè)數(shù)組元素組成,每一個(gè)數(shù)組元素中保存了一個(gè)數(shù)據(jù)。每一個(gè)數(shù)組元素,都可以使用數(shù)組名與下標(biāo)來(lái)唯一的確定。由下標(biāo)的上下界可以確定數(shù)組中元素的個(gè)數(shù) 常規(guī)數(shù)組的聲明 ? 常規(guī)數(shù)組也稱(chēng)為 “ 固定大小的數(shù)組 ” ,是指聲明之后元素個(gè)數(shù)不能改變的數(shù)組,這與動(dòng)態(tài)數(shù)組是不同的。 ? 和普通變量類(lèi)似,數(shù)組應(yīng)該先聲明后使用,在 Visual Basic中可以使用 Dim、 Redim、 Static、 Public等關(guān)鍵字來(lái)聲明數(shù)組。而 ReDim通常用來(lái)重新定義動(dòng)態(tài)數(shù)組的大小,在改變?cè)袛?shù)組最末維的大小時(shí),使用 Preserve關(guān)鍵字可以保持?jǐn)?shù)組中原來(lái)的數(shù)據(jù)。如果希望從 1開(kāi)始,可使用 Option Base語(yǔ)句進(jìn)行設(shè)置,語(yǔ)法: Option Base n ? 說(shuō)明:其中 n為一個(gè)整數(shù),其值只能是 0或 1,當(dāng) n為 1時(shí),默認(rèn)的下標(biāo)下界從 1開(kāi)始。 ? 在同一個(gè)過(guò)程中,數(shù)組名不能與變量名同名,否則會(huì)出錯(cuò),例如: Dim strName As String Dim strName(30) As String ? 這樣的代碼在程序運(yùn)行時(shí),因?yàn)橥环秶鷥?nèi)有同名的聲明,將產(chǎn)生編譯錯(cuò)誤。 數(shù)組元素的使用 ? 1)若建立的是多維數(shù)組,在引用數(shù)組元素時(shí)必須組出所有維的下標(biāo) ? 例如: Dim A(3,2,3) As String Dim B(2,2) As Integer A(2,1,0) =‖abc‖ ?三維的下標(biāo)都需要給出 B(2) = 10 ?維數(shù)不符,運(yùn)行時(shí)會(huì)引發(fā)錯(cuò)誤 數(shù)組元素的使用 ? 2)引用數(shù)組元素時(shí),其下標(biāo)值應(yīng)在建立數(shù)組時(shí)所指定的范圍內(nèi),否則會(huì)產(chǎn)生下標(biāo)越界錯(cuò)誤。 ? 例如 : Dim A(3 To 5) As String Dim I As Integer For I = 3 To 5 A(I)= Int( InputBox( ―A(― + Format(I) +‖)=‖ ) ) Next I ? 在循環(huán)中利用輸入框給數(shù)組 A的每個(gè)元素賦值 數(shù)組元素的輸入、輸出與復(fù)制 ? 2)為了顯示數(shù)組中的值,也可以通過(guò)循環(huán)輸出數(shù)組元素的值 ? 例如對(duì)于數(shù)組 A,在輸出時(shí)利用循環(huán)向窗體打印數(shù)組元素: For I = 3 To 5 Print A(I) Next I 數(shù)組元素的輸入、輸出與復(fù)制 ? 例 :將菲波數(shù)列的前 50項(xiàng)存入數(shù)組 ? 菲波數(shù)列的前幾項(xiàng)為: 1, 1, 2, 3, 5, 8, 13, 21, 34,…… ? 解析:菲波數(shù)列的通項(xiàng)為: A k =A k1+A k2,在給一維數(shù)組賦值時(shí),應(yīng)注意菲波數(shù)列的值很大,使用 Double數(shù)據(jù)類(lèi)型 ? 在窗體上放置文本框 Text1,并設(shè)置 MultiLine屬性為 True, ScrollBars屬性為 2 數(shù)組元素的輸入、輸出與復(fù)制 ? 例 代碼 Private Sub Form_Load() Dim A(1 To 50) As Double Dim I As Integer A(1) = 1: A(2) = 1 = 1 + vbCrLf + 1 For I = 3 To 50 A(I) = A(I 1) + A(I 2) = + CStr(A(I)) + vbCrLf Next I End Sub 數(shù)組初始化與清除 ? 用途:對(duì)于一維數(shù)組,可以使用 Array函數(shù)給數(shù)組賦值。 ? 語(yǔ)法: Erase 數(shù)組名 ? 說(shuō)明: ? 1)對(duì)于固定大小的數(shù)組, Erase語(yǔ)句將重新初始化數(shù)組元素 ? 數(shù)值數(shù)組 ,將每個(gè)元素設(shè)為 0。在下次引用動(dòng)態(tài)數(shù)組之前,必須使用 ReDim 語(yǔ)句來(lái)重新定義該數(shù)組變量的維數(shù)與下標(biāo)。動(dòng)態(tài)數(shù)組是指聲明之后維數(shù)與下標(biāo)上下界可以改變的數(shù)組。語(yǔ)法: Public | Private | Dim | Static動(dòng)態(tài)數(shù)組名() [As類(lèi)型名 ] ? 聲明之后,動(dòng)態(tài)數(shù)組還沒(méi)有任何元素,要使用它,必須使用 ReDim語(yǔ)句來(lái)重新定義動(dòng)態(tài)數(shù)組的維數(shù)、元素個(gè)數(shù)與下標(biāo)上下界。在程序中可以根據(jù)需要隨時(shí)使用 ReDim來(lái)重新定義動(dòng)態(tài)數(shù)組。如果希望在重新定義后保留以前數(shù)組元素的值,則要在 ReDim語(yǔ)句中使用 Preserve關(guān)鍵字。聲明動(dòng)態(tài)數(shù)組。分配 5 個(gè)元素。初始化數(shù)組。重定義該數(shù)組的大小,并清空其中所有元素。大小重定為 10 個(gè)元素。此時(shí),數(shù)組元素的值都為 0 第二次使用動(dòng)態(tài)數(shù)組 For I = 1 To 10 MyArray(I) = I 39。 MyArray(I) Next I 39。 ReDim Preserve MyArray(15) 39。此時(shí)數(shù)組的前 10個(gè)元素仍保留著它的值 第三次使用動(dòng)態(tài)數(shù)組 For I = 1 To 10 MyArray(I) Next I End Sub 控件數(shù)組 控件數(shù)組概念 ? 控件數(shù)組是指具有相同名稱(chēng)、類(lèi)型以及事件過(guò)程的一組控件。當(dāng)數(shù)組中的一個(gè)控件識(shí)別某一事件時(shí),它將調(diào)用此控件組的相應(yīng)事件過(guò)程,并把相應(yīng)索引作為參數(shù)傳遞,允許用代碼決定是哪一個(gè)控件識(shí)別此事件 控件數(shù)組概念 ? 控件數(shù)組的每個(gè)元素都有一個(gè)與之關(guān)聯(lián)的索引(Index)值,該值由控件的 Index屬性指定。即,控件數(shù)組的名字由 Name屬性指定,而數(shù)組中的每個(gè)元素則由 Index屬性指定,這一點(diǎn)和數(shù)組類(lèi)似,應(yīng)用控件數(shù)組元素時(shí)其Index值也是在圓括號(hào)中標(biāo)出,如:有控件數(shù)組 Opt,其 Index值為 1的元素為 opt(1)。 控件數(shù)組