VB程序設(shè)計(jì)第四章 基本的控制結(jié)構(gòu)_第1頁
VB程序設(shè)計(jì)第四章 基本的控制結(jié)構(gòu)_第2頁
VB程序設(shè)計(jì)第四章 基本的控制結(jié)構(gòu)_第3頁
VB程序設(shè)計(jì)第四章 基本的控制結(jié)構(gòu)_第4頁
VB程序設(shè)計(jì)第四章 基本的控制結(jié)構(gòu)_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第四章基本的控制結(jié)構(gòu)1. 順序結(jié)構(gòu)(順序結(jié)構(gòu)(Sequence)2. 選擇結(jié)構(gòu)(選擇結(jié)構(gòu)(Selection)3. 循環(huán)結(jié)構(gòu)(循環(huán)結(jié)構(gòu)(Repetition)4. 其它輔助控制語句其它輔助控制語句5. 常用算法(一)常用算法(一)Summaryl 順序結(jié)構(gòu) 按照各語句出現(xiàn)的先后順序執(zhí)行 包括:l 賦值語句l 輸入 / 輸出語句 4.1 順序結(jié)構(gòu)順序結(jié)構(gòu)l 賦值語句是任何程序設(shè)計(jì)的最基本語句。l 語法結(jié)構(gòu): 變量名 表達(dá)式 其中: 變量名:已經(jīng)定義(聲明)的變量名稱 表達(dá)式:任何類型表達(dá)式(算術(shù)、邏輯、 函數(shù)等等),類型與變量名的 類型一致。1 賦值語句賦值語句l 賦值語句的作用: 先計(jì)算等號(hào)右

2、邊表達(dá)式的值,然后賦給等號(hào)左邊的變量。l VB賦值語句的兩項(xiàng)任務(wù) 給變量賦值 給控件的屬性賦值l 例如: sngRate! =0.1 將0.1賦給單精度變量sngRate txtName.Text = “Hu” 賦值處理l當(dāng)賦值等號(hào)左右數(shù)值類型不相同時(shí),強(qiáng)制轉(zhuǎn)換成左邊變量的類型(精度) n%=3.5 結(jié)果為4(四舍五入)l當(dāng)賦值等號(hào)左邊是數(shù)值類型,而右邊表達(dá)式是數(shù)字字符串,則VB自動(dòng)轉(zhuǎn)換成數(shù)值類型再賦值,如表達(dá)式不是數(shù)字字符串,則出錯(cuò)。 n%=“123” 結(jié)果為123,與n%=Val(“123”)效果一樣 n%=“1a23” 出現(xiàn)“類型不匹配”錯(cuò)誤 l當(dāng)邏輯類型賦值給數(shù)值類型時(shí),True轉(zhuǎn)換為

3、1,F(xiàn)alse轉(zhuǎn)換為0; 反之,當(dāng)數(shù)值型賦值給邏輯類型,則非零轉(zhuǎn)換為True,0轉(zhuǎn)換為False。l任何非字符類型賦值給字符類型,自動(dòng)轉(zhuǎn)換為字符類型。 注意:l盡量采用轉(zhuǎn)換函數(shù)進(jìn)行轉(zhuǎn)換,避免VB系統(tǒng)自動(dòng)轉(zhuǎn)換。這樣能避免出現(xiàn)意想不到的錯(cuò)誤。lVB系統(tǒng)會(huì)自動(dòng)判斷賦值符號(hào)“=“ 和關(guān)系運(yùn)算符等于符號(hào)”=“。l 賦值符號(hào)”=“左邊只能是變量,不能是常量、或者表達(dá)式。l 賦值語句: intX = intX + 1l VB與用戶之間的數(shù)據(jù)交互通過兩個(gè)函數(shù)和一個(gè)過程完成。l 函數(shù)有返回值,過程沒有返回值。(第六章)l 函數(shù): InputBox(), MsgBox()l 過程: MsgBox2 人機(jī)交互函數(shù)和

4、過程人機(jī)交互函數(shù)和過程l 語法: 變量名InputBox(提示,標(biāo)題,默認(rèn) ,x坐標(biāo)位置,y坐標(biāo)位置) 其中: 提示:字符串表達(dá)式,顯示信息。如果 要顯示多行,則在每行未加上回 車Chr(13)和換行Chr(10),或者, 加上VB系統(tǒng)常數(shù)vbCrLf。1 InputBox函數(shù) 標(biāo)題:字符串表達(dá)式,在對(duì)話框的標(biāo)題 顯示。如果省略,則顯示應(yīng)用程 序的名稱。 默認(rèn):字符串表達(dá)式。當(dāng)對(duì)話框中沒有 輸入時(shí),則該默認(rèn)值作為輸入的 內(nèi)容。 x坐標(biāo)位置,y坐標(biāo)位置:整數(shù)表達(dá)式, 確定對(duì)話框左上角在屏幕上的位 置,屏幕左上角為坐標(biāo)原點(diǎn),單 位:twip。1000 twip = 1 inch。l 打開一個(gè)標(biāo)準(zhǔn)對(duì)

5、話框,等待用戶輸入內(nèi)容,用戶單擊“確定(OK)”或者按回車鍵,則該函數(shù)返回輸入的值,其類型為字符型。l例如: Dim strName As String * 40, strS1 As String strS1 = 請(qǐng)輸入你的姓名 + vbCrLf + 然后回車確定 strName = InputBox(strS1, 輸入框, , 100, 100)InputBox函數(shù)的作用l 語法: 變量名MsgBox(提示,按鈕,標(biāo)題) 其中: 提示:與InputBox函數(shù)相同 標(biāo)題:與InputBox函數(shù)相同 按鈕:整數(shù)表達(dá)式,決定信息框按鈕的 數(shù)目和類型及其圖標(biāo)類型。參見 P77,表1.4.12 Msg

6、Box()函數(shù)分分 組組內(nèi)部常數(shù)內(nèi)部常數(shù)按鈕值按鈕值描述描述vbOkOnlyvbOkCancelvbAbortRetryIgnorevbYesNoCancelvbYesNovbRetryCancel012345“確定確定” “確定確定”、“取消取消”“終止終止”、“重試重試”, “忽略忽略”“是是”、“否否”、“取取消消”“是是”、“否否”“重試重試”、“取消取消”按按 鈕鈕數(shù)數(shù) 目目表表1.4.1 “按鈕按鈕”設(shè)置值及其意義設(shè)置值及其意義vbCriticalvbQuestionvbExclamationvbInformation16324864紅色紅色STOP標(biāo)志標(biāo)志詢問信息圖標(biāo)詢問信息圖標(biāo)

7、 ?警告信息圖標(biāo)警告信息圖標(biāo) !信息圖標(biāo)信息圖標(biāo) i按按 鈕鈕類類 型型vbDefaultButton1vbDefaultButton2 vbDefaultButton3 0256512第一個(gè)按鈕為默認(rèn)第一個(gè)按鈕為默認(rèn)第二個(gè)按鈕為默認(rèn)第二個(gè)按鈕為默認(rèn)第三個(gè)按鈕為默認(rèn)第三個(gè)按鈕為默認(rèn)默默 認(rèn)認(rèn)按按 鈕鈕vbApplicationModevbSystemMode 04096應(yīng)用模式應(yīng)用模式系統(tǒng)模式系統(tǒng)模式模式模式注意:注意:l四組方式可以組合使用。一般采用內(nèi)部常數(shù)形式,而不采用按鈕值形式。 例如: I=MsgBox(“密碼錯(cuò)誤”,vbRetryCancel+vbExclamation,”輸入密碼”

8、) I=MsgBox(“密碼錯(cuò)誤”,53,”輸入密碼”) l模式:若應(yīng)用模式建立對(duì)話框,則必須響應(yīng)對(duì)話框才能繼續(xù)當(dāng)前的應(yīng)用程序,但可以切換到其它應(yīng)用程序。若應(yīng)用系統(tǒng)模式建立對(duì)話框,則所有的應(yīng)用程序都被掛起,直到用戶響應(yīng)對(duì)話框?yàn)橹埂?內(nèi)部常數(shù)內(nèi)部常數(shù)按鈕值按鈕值被單擊的按鈕被單擊的按鈕vbOkvbCancelvbAbortvbRetryvbIgnorevbYesVBNo1234567確定確定 取消取消終止終止重試重試忽略忽略是是否否表表1.4.2 MsgBox函數(shù)返回值意義函數(shù)返回值意義l 語法: MsgBox(提示,按鈕,標(biāo)題) 其中: 提示、標(biāo)題、 按鈕:與MsgBox函數(shù)相同l作用:Msg

9、box()函數(shù)和Msgbox過程的作用都是打開一個(gè)信息框,等待用戶選擇一個(gè)按鈕。l區(qū)別: Msgbox()函數(shù)返回所選按鈕的整數(shù)值; Msgbox過程沒有返回值。3 MsgBox過程編程實(shí)現(xiàn)賬號(hào)和密碼的輸入程序,要求:(1)賬號(hào)不超過6位數(shù)字,密碼為4位字符,假設(shè)為“Gong”(2)密碼輸入時(shí),不顯示輸入的字符,用“*”代替。(3)輸入不正確,顯示有關(guān)信息。單擊“重試”,則清除原來輸入的內(nèi)容,等待重新輸入;單擊“取消”,終止程序運(yùn)行。例題:分析分析l 賬號(hào)賬號(hào)不超過6位數(shù)字,則將文本框的MaxLength屬性設(shè)置為6;輸入結(jié)束后,通過LostFocus事件,來判斷賬號(hào)輸入的正確性。若出錯(cuò),則顯

10、示出錯(cuò)信息,重新輸入。l 密碼要顯示“ * ”, 將PasswordChar屬性設(shè)置為“ * ”即可。 輸入結(jié)束按確定鍵后,判斷密碼的正確性。正確沒有顯示,出錯(cuò)顯示出錯(cuò)信息。l 選擇結(jié)構(gòu)作用對(duì)條件進(jìn)行判斷,根據(jù)判斷結(jié)果,選擇執(zhí)行不同的分支。lIf 條件語句lSelect case語句l條件函數(shù)4.2 選擇結(jié)構(gòu)選擇結(jié)構(gòu)l If 條件語句有多種形式單分支雙分支多分支4.2.1 If 條件語句條件語句If Then 語句1 單分支結(jié)構(gòu)(1) If Then End If(2)If Then l 表達(dá)式 可為關(guān)系表達(dá)式、邏輯表達(dá)式、算術(shù) 表達(dá)式。非零為True,零為False。l語句塊:一條或者多條語

11、句。l形式(2)中的語句只能是一條,或者多條多條簡(jiǎn)單語句,之間用冒號(hào)分開。簡(jiǎn)單語句,之間用冒號(hào)分開。l 盡量用第一種形式編程。其中,F(xiàn)T表達(dá)式表達(dá)式語句塊語句塊l當(dāng)表達(dá)式為當(dāng)表達(dá)式為TrueTrue時(shí),執(zhí)行時(shí),執(zhí)行ThenThen后的語句后的語句塊。塊。l否則,不作任否則,不作任何處理何處理If ThenElse 語句2 雙分支結(jié)構(gòu)(1) If Then Else End If(2)If Then Else l 當(dāng)表達(dá)式為非零(True)時(shí),執(zhí)行Then后的語句塊1(或語句1),否則,執(zhí)行Else后面的語句塊2(或語句2)。作用F表達(dá)式表達(dá)式語句塊語句塊1語句塊語句塊2TIf ThenElse

12、if 語句3 多分支結(jié)構(gòu) If Then Elseif Then Else End If 注意:l不管有幾個(gè)分支,程序執(zhí)行一個(gè)分支后,就不再執(zhí)行其它分支。l ElseIf不能寫作Else Ifl 當(dāng)多個(gè)分支有多個(gè)表達(dá)式同時(shí)滿足時(shí),則只執(zhí)行第一個(gè)匹配的語句塊。P82, 例4.3l在If 或者Else后面的語句中又有If 語,稱為If 嵌套。4 If 語句的嵌套 If Thenif Then End If End If l If 嵌套一般采用鋸齒型,增強(qiáng)程序的可讀性。l 一個(gè)If 必須與一個(gè)End If匹配,End If與最近的If語句配對(duì)。例題4.4 (P83)注意l Select Case 語

13、句是多分支結(jié)構(gòu)的另一種表示。比If 語句更直觀。l 選擇多于三個(gè)以上,采用Select Case較好。4.2.2 Select case語句語句 Select case 變量或表達(dá)式 Case 表達(dá)式列表1 Case 表達(dá)式列表2 Case Else End Select其中, 變量或表達(dá)式:數(shù)值型或字符串表達(dá)式 表達(dá)式列表 : 類型必須相同,可以為 (1)表達(dá)式 (2)一組逗號(hào)分開的值 (3)表達(dá)式1 To 表達(dá)式2 (4)Is關(guān)系運(yùn)算符表達(dá)式i例如:Case 1 to 10 110范圍內(nèi)Case “a”,”e”,”I”,”o”,”u” 元音字母Case 2,4,6,Is10 2,4,6,或

14、大于10作用 根據(jù)變量或表達(dá)式中的結(jié)果,與各case語句中的表達(dá)式列表的值進(jìn)行比較,匹配則執(zhí)行該語句塊。如果有多個(gè)匹配,則只執(zhí)行第一個(gè)匹配的語句塊。表達(dá)式列表1語句塊1表達(dá)式列表2語句塊2表達(dá)式列表n語句塊n語句塊n+1TTTFFF注意:lSelect Case 語句只能有一個(gè)變量,不能對(duì)多個(gè)變量進(jìn)行條件判斷。l多個(gè)變量只能采用IfThenElseIf 語句l P85,例題4.6組合應(yīng)用:l算術(shù)運(yùn)算:要求給出隨機(jī)的110的操作數(shù)和四則運(yùn)算符,計(jì)算機(jī)根據(jù)學(xué)生的答案判斷準(zhǔn)確是否,結(jié)束時(shí)給出成績(jī)。分析:(1)運(yùn)算符 “ “ 采用1, 2, 3, 4 表示;(2) 隨機(jī)數(shù)用Rnd函數(shù)確定;(3) 產(chǎn)生

15、表達(dá)式由Form_load過程給出,在標(biāo)簽(label)控件顯示。 ,,(4)學(xué)生在文本框中輸入答案;(5) 圖形框中顯示正確是否;(6) 最后單擊“計(jì)分”時(shí),顯示成績(jī)??丶丶鹟blExpressiontxtAnswer amdCalculationpicDisplay主要屬性主要屬性Caption=“ ”Text=“ ” Caption=“計(jì)分”Picture默認(rèn)值空 說說 明明 顯示產(chǎn)生的題目輸入計(jì)算結(jié)果 最后計(jì)分顯示題目、結(jié)果和正確是否l VB提供了兩個(gè)條件函數(shù)IIF( )函數(shù) 代替 If 語句Choose( )函數(shù) 代替 Select語句4.2.3 條件函數(shù)條件函數(shù)(1) IIf

16、( )函數(shù) IIf(表達(dá)式,當(dāng)條件為T的值,當(dāng)條件為F的值)例如:求x, y中的大的數(shù),放入Tmax變量中 TMax = IIf ( x y, x, y )等效于: If xy thenTmax=x ElseTmax=y End If(2) Choose( )函數(shù) Choose(整數(shù)表達(dá)式,選項(xiàng)列表)根據(jù)整數(shù)表達(dá)式的值,選擇選項(xiàng)列表的項(xiàng): 1 第一項(xiàng) 2 第二項(xiàng) . 選項(xiàng)數(shù)目 NullstrOp=Choose(intNOp, “+” , ”-”, ”x”, ” ”) l 最好不要采用這兩個(gè)函數(shù)IIF( )函數(shù) Choose( )函數(shù) 忠告:忠告:l 循環(huán)是在指定的條件下重復(fù)執(zhí)行某些指令。l兩種

17、類型的循環(huán)語句:計(jì)數(shù)型循環(huán)語句:用于循環(huán)次數(shù)確定的情況 (FOR循環(huán)語句) 條件循環(huán)語句:用于循環(huán)次數(shù)未知的情況 (Do Loop循環(huán)語句)4.3 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)For 循環(huán)變量循環(huán)變量 初值初值 To 終值終值 Step 步長步長 Exit For Next 循環(huán)變量4.3.1 For循環(huán)語句循環(huán)語句循環(huán)變量:整數(shù)型;步長:可正可負(fù);正,初值小于終值;負(fù),初值大于終值。默認(rèn)為1語句塊:一或多句指令;Exit For:退出循環(huán);循環(huán)次數(shù):int(終值初值)/步長1)如圖1.4.11(a) (b) 所示。其中:1. 循環(huán)變量被賦初值,僅賦一次;2. 判斷循環(huán)變量是否在終值內(nèi),是,執(zhí)行循環(huán)體;否

18、,結(jié)束循環(huán),執(zhí)行Next后的下一句語句。3. 循環(huán)變量加步長,轉(zhuǎn)(2),繼續(xù)循環(huán)。執(zhí)行過程:1. 當(dāng)退出循環(huán)時(shí),循環(huán)變量的值保持退出時(shí)的值;2. 循環(huán)變量的值一般在循環(huán)體外賦值;參見:P89, 例4.93. 例如:P90,例題4.10注意:l有兩種形式的循環(huán)結(jié)構(gòu)(1) Do While | Until Exit Do Loop4.3.2 Do Loop循環(huán)語句循環(huán)語句(2) Do Exit Do Loop While | Until (1)形式1先判斷,再執(zhí)行。形式2先執(zhí)行,再判斷。流程圖參見P91。(2) 關(guān)鍵字While用于指明條件為真(True)時(shí)就執(zhí)行循環(huán)體的語句;Until則相反。(

19、3) 當(dāng)省略 While | Until 時(shí),即僅有 DoLoop 關(guān)鍵字,表示無條件循環(huán)。此時(shí),循環(huán)體內(nèi)必須有Exit Do 語句,否則為死循環(huán)。其中:l用輾轉(zhuǎn)相除法求兩個(gè)自然數(shù)m、n的最大公約數(shù)和最小公倍數(shù)。l分析l先求最大公約數(shù)已知兩個(gè)數(shù) m, n,使得 m n m 除以 n ,得余數(shù) r 若 r 0,則 n 為求得的最大公約數(shù),算法結(jié)束;否則,執(zhí)行以下步驟 m n, n r, 轉(zhuǎn)步驟(2)l最小公倍數(shù)等于兩數(shù)相乘除以最大公約數(shù)例題4.12l在一個(gè)循環(huán)體內(nèi)包含了另一個(gè)完整的循環(huán)結(jié)構(gòu)。l 循環(huán)嵌套對(duì) For 循環(huán)和 DoLoop 循環(huán)均適用。l注意:內(nèi)循環(huán)變量和外循環(huán)變量不能相同 外循環(huán)必

20、須完全包含內(nèi)循環(huán)l例題:參見P92,例4.134.3.3 循環(huán)的嵌套循環(huán)的嵌套l Go To 語句l Exit語句l End 語句l With 語句4.4 其它輔助控制語句其它輔助控制語句1 Go To 語句語句 l 形式: Go To 標(biāo)號(hào)|行號(hào)l 該語句的作用是無條件轉(zhuǎn)移到標(biāo)號(hào)或者行號(hào)指定的那行語句。l Go To語句只能轉(zhuǎn)移到同一個(gè)過程的標(biāo)號(hào)或行號(hào)。標(biāo)號(hào)是一個(gè)字符序列,行號(hào)是一個(gè)數(shù)字序列。l 采用Go To語句編制的程序稱為 BS 程序(Bowl of Spaghetti Program, 亂麻似的程序),程序結(jié)構(gòu)不清晰,可讀性差。l 結(jié)構(gòu)化程序設(shè)計(jì)中要求盡量少用或不用Go To語句,用

21、選擇結(jié)構(gòu)或者循環(huán)結(jié)構(gòu)來代替。lExit語句用于退出某種控制結(jié)構(gòu)的執(zhí)行。l 包括: Exit For Exit Do Exit Sub Exit Function2 Exit 語句語句lEnd 語句用于結(jié)束一個(gè)程序的運(yùn)行。 End 語句可以在任何事件過程中。l End 還可以用來結(jié)束一個(gè)過程或者控制塊,在控制語句或過程中經(jīng)常使用。l End If, End Select, End Sub等等。3 End 語句語句lWith 的作用:可以對(duì)某個(gè)對(duì)象執(zhí)行一系列的語句,而不必重復(fù)指出對(duì)象的名稱。l 形式:With 對(duì)象語句塊 End With l參見P95, 例題。l 個(gè)人意見:盡量不用。4 With

22、 語句語句l算法是對(duì)某個(gè)問題求解過程的描述l 同一問題有多種算法描述l 算法分為兩大類 數(shù)值算法非數(shù)值算法4.5 常用算法(一)常用算法(一)4.5.1 累加、連乘累加、連乘 l 累加:在原有和的基礎(chǔ)上,一次一次地加上一個(gè)數(shù)。l 連乘:在原有積的基礎(chǔ)上,一次一次地乘以一個(gè)數(shù)。l 書P9596 中的簡(jiǎn)單例子。l 例題4.14 求自然對(duì)數(shù)e的近似值。niiiine11!11!11!1! 31! 21! 111l采用 For Next語句如何實(shí)現(xiàn)?l 變量賦初始值語句若放在循環(huán)體內(nèi),情況會(huì)如何?思考:4.5.2 求素?cái)?shù)求素?cái)?shù) l素?cái)?shù),又稱質(zhì)數(shù):大于2且只能被1和本身整除的整數(shù)。l求解想法:對(duì)于 m 從 i = 2,3,m-1 判斷 m 能否被 i 整除,若有一個(gè)能整除,則 m 不是素?cái)?shù);否則, m 是素?cái)?shù)l例題4.15, 求 100 以內(nèi)的素?cái)?shù)l實(shí)際上,m 不可能被大于 的數(shù)整除,故內(nèi)循環(huán)為:For i = 2 To Int(Sqr(m), 將大大減少循環(huán)次數(shù)。l 不用 G

溫馨提示

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

評(píng)論

0/150

提交評(píng)論