【正文】
循環(huán) ? 例 :判斷用戶輸入的自然數(shù)是否為質(zhì)數(shù)。而 For循環(huán)的次數(shù)是由循環(huán)的初值、終值和步長(zhǎng) 3個(gè)因素確定,計(jì)算公式為: 循環(huán)次數(shù) = Int( (終值 初值 )/步長(zhǎng) ) + 1 ? 一般情況下, For…… Next循環(huán)需要正常結(jié)束,即循環(huán)變量到達(dá)終值。 4.到 Next語(yǔ)句 ,將計(jì)數(shù)器加上增量 5.重復(fù)步驟 2至 4 For…… Next 循環(huán) ? 例 :求 S=1+2+3+…… +N,其中, N由用戶輸入 Private Sub Command1_Click() Dim N As Integer, I As Integer, S As Long N=Int (InputBox (―N=‖)) For I = 1 To N S = S + I Next I Print S=。 2.若增量為正、則判斷計(jì)數(shù)器的值是否小于終值;若增量為負(fù),則判斷計(jì)數(shù)器的值是否大于終值。 For循環(huán)的重復(fù)次數(shù)可以由一個(gè)計(jì)數(shù)變量的上、下限來(lái)決定。循環(huán)結(jié)構(gòu)可以幫助我們有效的解決這一類問(wèn)題,利用循環(huán)結(jié)構(gòu),只需要編寫(xiě)少量的語(yǔ)句就可以讓計(jì)算機(jī)重復(fù)執(zhí)行許多次,從而完成大量類同計(jì)算的需求。 ? 語(yǔ)法: IIf (測(cè)試表達(dá)式 , True部分 , False部分 ) ? 說(shuō)明: 測(cè)試表達(dá)式是一個(gè)邏輯表達(dá)式, True部分與False部分可以是一個(gè)表達(dá)式或變量與常量。 ? 語(yǔ)法: Select Case 測(cè)試表達(dá)式 Case 測(cè)試結(jié)果 1 語(yǔ)句組 1 Case 測(cè)試結(jié)果 2 語(yǔ)句組 2 ………… Case 測(cè)試結(jié)果 n1 語(yǔ)句組 n1 Case Else 語(yǔ)句組 n End Select 多分支選擇控制結(jié)構(gòu) (Select Case) ? 說(shuō)明: 1) Visual Basic遇到 Select Case時(shí),首先計(jì)算出測(cè)試表達(dá)式的值,如果該測(cè)試表達(dá)式值滿足Case后任何一個(gè)測(cè)試結(jié)果,則對(duì)應(yīng)的語(yǔ)句組會(huì)被執(zhí)行,如果都不滿足,則執(zhí)行 Case Else后的語(yǔ)句組。如果情況復(fù)雜,要判斷的條件不止一個(gè)時(shí),就需用到 If…… Then…… Else結(jié)構(gòu) ? 語(yǔ)法: If 條件 1 Then 語(yǔ)句組 1 [ ElseIF 條件 2 Then 語(yǔ)句組 2 ] …… …… [ ElseIF 條件 n1 Then 語(yǔ)句組 n1 ] [ Else 語(yǔ)句組 n ] End If 塊結(jié)構(gòu)條件語(yǔ)句 ? 3.多分支的 If…… Then…… ElseIF ? 說(shuō)明: 1)Visual Basic首先測(cè)試條件 1是否成立,如果成立 (值為 True),執(zhí)行語(yǔ)句組 1 2)否則,繼續(xù)判斷條件 2是否成立,如果成立(值為 True),就執(zhí)行語(yǔ)句組 2 3)以此類推 (條件 3至條件 n1) 4)如果所有條件都不成立,就執(zhí)行 Else之后的語(yǔ)句組 n。 塊結(jié)構(gòu)條件語(yǔ)句 ? 例 :分段函數(shù)求值, 對(duì)于下面的函數(shù),由用戶輸入一個(gè) X值,求 Y值。中間變量 A = Val() : B = Val() : C = Val() If A B Then D = A : A = B : B = D End If If A C Then D = A : A = C : C = D End If If B C Then D = B : B = C : C = D End If = Str(A) + Str(B) + Str(C) End Sub 塊結(jié)構(gòu)條件語(yǔ)句 ? 2.多行形式的 If…… Then…… Else ? 用途:根據(jù)條件是否成立,選擇執(zhí)行不同的語(yǔ)句組 ? 語(yǔ)法: If 條件 Then 語(yǔ)句組 1 Else 語(yǔ)句組 2 End IF ? 說(shuō)明:是單行 If…… Then…… Else結(jié)構(gòu)的多行形式,不同之處是條件成立時(shí)執(zhí)行的語(yǔ)句組 1不能直接跟在 Then后面而條件不成立時(shí)要執(zhí)行的語(yǔ)句組 2也不能直接跟在 Else后面,兩個(gè)語(yǔ)句組獨(dú)立成行,可以是一條語(yǔ)句也可以是多條語(yǔ)句,而且多行形式的 If…… Then…… Else語(yǔ)句最后一定要有 End If。通過(guò)兩次判斷,把最大的數(shù)放在第一位,再經(jīng)過(guò)一次判斷把第二大的數(shù)放在第二位,這樣對(duì)于 3個(gè)數(shù),就完成了從大到小的排序。 塊結(jié)構(gòu)條件語(yǔ)句 ? 例 :三數(shù)排序,構(gòu)造如圖的界面,用戶在 3個(gè)文本框中輸入 3個(gè)數(shù),單擊按鈕完成從大到小的排序,把結(jié)構(gòu)顯示在第 4個(gè)文本框中。這時(shí)需要對(duì)某個(gè)變量或表達(dá)式的值進(jìn)行判定,以決定執(zhí)行哪些語(yǔ)句和跳過(guò)哪些語(yǔ)句不執(zhí)行,我們稱這種程序結(jié)構(gòu)為選擇結(jié)構(gòu)(或分支結(jié)構(gòu))。 程序的結(jié)構(gòu)與流程圖 ? 在研究算法時(shí),人們習(xí)慣使用流程圖來(lái)描述算法的結(jié)構(gòu)。而程序也正是因?yàn)橛辛诉@些結(jié)構(gòu)才使得計(jì)算機(jī)能順利完成各種各樣的任務(wù)。Visual Basic程序設(shè)計(jì) (等級(jí)考試版 ) 史春聯(lián) 主 編 高等院校應(yīng)用型特色規(guī)劃教材 ? 第 1章 Visual Basic程序開(kāi)發(fā)環(huán)境 ? 第 2章 對(duì)象及其操作 ? 第 3章 簡(jiǎn)單程序設(shè)計(jì) ? 第 4章 Visual Basic 程序設(shè)計(jì)基礎(chǔ) ? 第 5章 數(shù)據(jù)的輸入輸出 ? 第 6章 控制結(jié)構(gòu) ? 第 7章 數(shù)組 ? 第 8章 常用標(biāo)準(zhǔn)控件 ? 第 9章 過(guò)程 ? 第 10章 鍵盤(pán)與鼠標(biāo)事件過(guò)程 ? 第 11章 菜單程序設(shè)計(jì) ? 第 12章 Visual Basic程序開(kāi)發(fā)環(huán)境 ? 第 13章 多重窗體程序設(shè)計(jì)環(huán)境應(yīng)用 ? 第 14章 文件處理 ? 第 15章 多媒體應(yīng)用開(kāi)發(fā) ? 第 16章 數(shù)據(jù)庫(kù)編程初步 第 6章 控制結(jié)構(gòu) ? 程序的結(jié)構(gòu)與流程圖 ? 選擇控制結(jié)構(gòu) ? 循環(huán)控制結(jié)構(gòu) ? Goto 型控制 ? 小型案例 文本統(tǒng)計(jì) 程序的結(jié)構(gòu)與流程圖 ? 結(jié)構(gòu)化程序設(shè)計(jì)的基本控制結(jié)構(gòu)有 3種:即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。 在 Visual Basic中要解決較復(fù)雜的問(wèn)題,就要使用到分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和跳轉(zhuǎn)結(jié)構(gòu)了。所有的這些結(jié)構(gòu)方式都是通過(guò)相應(yīng)的語(yǔ)句實(shí)現(xiàn)的,它們是: ? 條件結(jié)構(gòu) If語(yǔ)句; ? 選擇結(jié)構(gòu) Select Case 語(yǔ)句; ? 循環(huán)結(jié)構(gòu) Do...Loop語(yǔ)句、 For....Next語(yǔ)句和 While...Wend語(yǔ)句; ? 跳轉(zhuǎn)結(jié)構(gòu) GoTo語(yǔ)句和 GoSub語(yǔ)句。這種方法是用一些圖框表示各類型的操作,用帶箭頭的線表示這些操作的執(zhí)行順序 If…Then…Else 分支結(jié)構(gòu) F T 順序結(jié)構(gòu) 多分支結(jié)構(gòu) T T T 循環(huán)結(jié)構(gòu) 選擇控制結(jié)構(gòu) ? 在許多情況下,人們希望程序語(yǔ)句執(zhí)行的順序依賴于輸入數(shù)據(jù)或中間運(yùn)算的結(jié)果。 單行結(jié)構(gòu)條件語(yǔ)句 ? 1.單行形式的 If…… Then ? 用途:通過(guò)對(duì)條件的判斷有選擇的執(zhí)行一條語(yǔ)句 ? 語(yǔ)法: If 條件 Then 語(yǔ)句 ? 條件:是供判斷的關(guān)系表達(dá)式或邏輯表達(dá)式 ? 語(yǔ)句:是條件成立的時(shí)候要執(zhí)行的語(yǔ)句 單行結(jié)構(gòu)條件語(yǔ)句 ? 例 :找出用戶輸入的兩個(gè)數(shù)的大數(shù) Private Sub Command1_Click() Dim A As Integer, B As Integer Dim Max As Integer A = Int(InputBox(請(qǐng)輸入第一個(gè)整數(shù) , 輸入 , 3)) B = Int(InputBox(第輸入第二個(gè)整數(shù) , 輸入 , 6)) Max = A If Max B Then Max = B MsgBox Str(A) + 與 + Str(B) + 之中的大數(shù)為 + vbCrLf + Str(Max) End Sub 單行結(jié)構(gòu)條件語(yǔ)句 ? 2.單行形式的 If…… Then…… Else ? 用途:根據(jù)條件是否成立從兩條語(yǔ)句中選擇一條執(zhí)行 ? 語(yǔ)法: If 條件 Then 語(yǔ)句 1 Else 語(yǔ)句 2 ? 說(shuō)明: Visual Basic在遇到 If…… Then…… Else語(yǔ)句時(shí)首先計(jì)算出條件的邏輯值 若為 True(即條件成立),則執(zhí)行語(yǔ)句 1 若為 False(即條件不成立 ),則執(zhí)行語(yǔ)句 2 單行結(jié)構(gòu)條件語(yǔ)句 ? 例 :驗(yàn)證用戶輸入的整數(shù)的奇偶性 Private Sub cmd1_Click() Dim int1 As Integer, int2 As Integer int1 = CInt() int2 = int1 Mod 2 If int2 = 0 Then MsgBox 是一個(gè)偶數(shù) _ Else MsgBox 是一個(gè)奇數(shù) End Sub 塊結(jié)構(gòu)條件語(yǔ)句 ? 1.多行形式的 If…… Then…… End IF ? 用途:多行形式的 If…… Then…… End IF可用來(lái)判斷單一條件來(lái)執(zhí)行一組語(yǔ)句 ? 語(yǔ)法: If 條件 Then 語(yǔ)句組 End IF ? 說(shuō)明:這是 If…… Then語(yǔ)句的多行形式,使用這種形式的選擇結(jié)構(gòu),在條件成立時(shí)要執(zhí)行的語(yǔ)句不再直接跟在 Then后面,而是另外自成一個(gè)語(yǔ)句塊,并且在最后一定要加上 End IF。 ? 解析:這是一個(gè)簡(jiǎn)單的排序程序,也是排序算法中選擇排序的雛形。 塊結(jié)構(gòu)條件語(yǔ)句 ? 例 代碼 Private Sub Command1_Click() Dim A As Single, B As Single, C As Single Dim D As Single 39。兩者的程序流程是相似的。 塊結(jié)構(gòu)條件語(yǔ)句 ? 例 代碼 Private Sub Command1_Click() Dim X As Single, Y As Single X = Val(InputBox(―X=‖)) If X = 0 Then Y = X * X Else Y = 2 * X End If MsgBox Y = + Str(Y) End Sub 塊結(jié)構(gòu)條件語(yǔ)句 ? 3.多分支的 If…… Then…… ElseIF ? 用途:可判斷多重條件,執(zhí)行多行語(yǔ)句。 塊結(jié)構(gòu)條件語(yǔ)句 ? 例 :判斷輸入成績(jī)的等級(jí) 塊結(jié)構(gòu)條件語(yǔ)句 ? 例 2: Private Sub Command1_Click() Dim sngFen As Single sngFen = Val(InputBox(―請(qǐng)輸入成績(jī): ” )) If sngFen = 90 Then MsgBox 優(yōu)秀 ElseIf sngFen = 80 Then MsgBox 良好 ElseIf sngFen = 70 Then MsgBox 中等 ElseIf sngFen = 60 Then MsgBox 及格 ElseIf sngFen = 30 Then MsgBox 補(bǔ)考 Else MsgBox 重修 End If End Sub 多分支選擇控制結(jié)構(gòu) (Select Case) ? 用途:雖然 If…… Then…… ElseIF可以用來(lái)判斷多重條件的情況,但有時(shí)條件太多,程序會(huì)變得不易閱讀,為此 Visual Basic提供了 Select Case 語(yǔ)句,使用 Select Case語(yǔ)句可以使程序?qū)懫饋?lái)較為簡(jiǎn)潔,不但容易閱讀,執(zhí)行起來(lái)也較有效率。 2)測(cè)試結(jié)果可以是以下三者之一: ? 一般表達(dá)式或常量、變量 ? 范圍表達(dá)式: expression To expression ? 比較表達(dá)式: Is 比較運(yùn)算符 表達(dá)式 多分支選擇控制結(jié)構(gòu) (Select Case) ? 例 :判斷用戶輸入的整數(shù)除以 3以后的結(jié)果: Private Sub Command1_Click() Dim x As Integer x = Val(InputBox(請(qǐng)輸入一個(gè)正整數(shù) , 輸入 , 32)) Select Case x Mod 3 Case 0 MsgBox Str