第7章--程序VB選擇結(jié)構(gòu)程序設(shè)計_第1頁
第7章--程序VB選擇結(jié)構(gòu)程序設(shè)計_第2頁
第7章--程序VB選擇結(jié)構(gòu)程序設(shè)計_第3頁
第7章--程序VB選擇結(jié)構(gòu)程序設(shè)計_第4頁
第7章--程序VB選擇結(jié)構(gòu)程序設(shè)計_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2021/8/141第7章 選擇結(jié)構(gòu)程序設(shè)計 2021/8/142學(xué)習(xí)重點 If語句、IIf函數(shù)、Switch函數(shù)、Select Case語句的格式與使用。If 語句的嵌套使用。掌握常用的選擇結(jié)構(gòu)算法。 2021/8/143本章內(nèi)容7.1 If語句7.2 Select Case語句7.3 基本算法及應(yīng)用7.4 其他應(yīng)用舉例本章小結(jié) 2021/8/144引言分支結(jié)構(gòu) True False P A B 2021/8/1457.1 If語句7.1.1 IfThen結(jié)構(gòu) 7.1.2 IfThenElse結(jié)構(gòu) 7.1.3 IfThenElseIf結(jié)構(gòu) 7.1.4 If語句的嵌套 7.1.5 與If語句有

2、關(guān)的函數(shù) 2021/8/146注注1 1:條件表達式的值為:條件表達式的值為TrueTrue或或FalseFalse,一,一般是邏輯或關(guān)系表達式,也可以是算術(shù)表達般是邏輯或關(guān)系表達式,也可以是算術(shù)表達式(轉(zhuǎn)換為邏輯值)式(轉(zhuǎn)換為邏輯值)7.1.1 IfThen結(jié)構(gòu)兩種格式:格式格式1 1: 塊形式塊形式 格式格式2 2:單行形式單行形式 條件表達式條件表達式語句體語句體TrueFalse注注2 2:當(dāng)條件為:當(dāng)條件為TrueTrue時執(zhí)行語句體,否則執(zhí)行時執(zhí)行語句體,否則執(zhí)行IfIf語句的下一條語句語句的下一條語句注注3 3:語句體中可以是:語句體中可以是多條語句多條語句,當(dāng)采用,當(dāng)采用格式格

3、式2 2時,所有的語句必須寫在一行,用時,所有的語句必須寫在一行,用冒號隔開冒號隔開語句語句體中的語句體中的語句 2021/8/1477.1.1 IfThen結(jié)構(gòu)例:已知有兩數(shù)x、y,編程使x中存放較大的數(shù)n分析:如果x=y,則不需要做處理 如果xy,則做交換處理n實現(xiàn):If x y Thentemp = xx = yy = tempEnd Ifn用格式2描述: If x y Then temp = x:x = y:y = temp特別注意:特別注意:塊結(jié)構(gòu)時塊結(jié)構(gòu)時If和和End If成對出現(xiàn)成對出現(xiàn)2021/8/1487.1.1 IfThen結(jié)構(gòu)例例7-1 電子鬧鐘設(shè)計,主要利用文本框、按

4、鈕、計時器控件實現(xiàn)鬧鐘功能。 2021/8/149例例7-1程序代碼如下:Private Sub Command1_Click() Timer1.Enabled = Not Timer1.Enabled 用Not運算進行開關(guān)控制End SubPrivate Sub Timer1_Timer() Dim d As Date d = Text1.Text If Hour(Time) = Hour(d) And Minute(Time) = Minute(d) Then Beep 到達時間后發(fā)聲End Sub 功能:功能: 連續(xù)連續(xù)1分鐘響鈴,分鐘響鈴,60次次等價于:等價于:If Hour(Tim

5、e) = Hour(d) And Minute(Time) = Minute(d) Then Beep End If 2021/8/14107.1.2 IfThenElse結(jié)構(gòu)兩種格式:格式格式1 1:格式格式2 2:注:當(dāng)條件為注:當(dāng)條件為TrueTrue時執(zhí)行語句體時執(zhí)行語句體1 1,否則執(zhí)行語,否則執(zhí)行語句體句體2 2T條件表達式條件表達式語句體語句體1F語句體語句體22021/8/1411例7-2 已知x,求程序代碼如下:Private Sub CmdCul_Click() Dim x As Single, y As Single x = Val(txtX.Text) 第1個文本框的名

6、稱是txtX If x 0 Then MsgBox x不能小于不能小于0 Else y = Sqr(x) txtY.Text = Str(y) 第2個文本框的名稱是txtY End IfEnd Subxy 等價于:等價于:If x =“a” And ch=“A” And ch=“0” And ch=“a” And ch=“A” And ch=“a” And ch=“A” And ch=“0” And ch=“0” And ch=“9” ThenPrint “Print “數(shù)字字符數(shù)字字符”ElseIf ch=“ ” ThenElseIf ch=“ ” ThenPrint “Print “空格空

7、格” ElseElsePrint “Print “其他字符其他字符”End IfEnd If2021/8/14157.1.3 IfThenElseIf結(jié)構(gòu)例7-3 旅客乘車旅行,可免費攜帶30公斤行李,超過30公斤的部分每公斤需支付托運費10元,超過50公斤部分則每公斤需支付20元托運費。請編程根據(jù)每位旅客行李的重量計算其應(yīng)付的行李托運費。2021/8/1416例7-3此分段函數(shù)用程序代碼表示如下此分段函數(shù)用程序代碼表示如下:Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x 30

8、 Then x30 y = 0 ElseIf x = 50 Then 30=x50 y = (x - 50) * 20 + 20 * 10 End If Text2.Text = yEnd Sub5050303010*2020*)50(10*)30(0 xxxxxy可以,但可以,但ElseElse已經(jīng)包含了已經(jīng)包含了x=30 x=30的信息的信息2021/8/14177.1.4 If語句的嵌套If語句中又包含If語句n在Then子句或Else子句的語句體中包含完整的一條If語句n如: If x y ThenPrint x & “” & yElseIf xy ThenPrint

9、x & “” & yElse Print x & “=” & yEnd If End If一條一條IfIf語句語句一條一條IfIf語句語句2021/8/14187.1.4 If語句的嵌套n注1: If語句的完整性,即內(nèi)層If語句必須完整地出現(xiàn)在外層If語句的Then子句或Else子句中。外層外層IfIf內(nèi)層內(nèi)層IfIf內(nèi)層內(nèi)層IfIf內(nèi)外層不能有交叉!內(nèi)外層不能有交叉!2021/8/14197.1.4 If語句的嵌套n注2:ElseIf的匹配原則Else始終與上面距離其最近的未被匹配過的 If匹配注3: If End If的匹配If 塊必須以一個 End If

10、語句結(jié)束If ThenIf Then Else End IfElseIf Then If Then Else End IfEnd If2021/8/14207.1.4 If語句的嵌套為使程序結(jié)構(gòu)更為清晰,要養(yǎng)成良好的書寫習(xí)慣。If ThenIf Then Else End IfElseIf Then If Then Else End IfEnd If為體現(xiàn)層次,可以使用為體現(xiàn)層次,可以使用TabTab健健排放不同層次的排放不同層次的語句語句2021/8/14217.1.4 If語句的嵌套例7-4 根據(jù)用戶輸入年齡和性別,輸出不同的歡迎信息。其中小于14歲的男性為boy,大于14歲的男性為guy

11、,其中小于14歲的女性為girl,大于14歲的女性為miss。2021/8/1422例7-4程序代碼如下:程序代碼如下:Private Sub Command1_Click() If Op_male.Value = True Then If Val(Txt_age.Text) 14 Then 小于小于14歲的男性歲的男性 MsgBox Hello,boy! Else 大于或等于大于或等于14歲的男性歲的男性 MsgBox Hello,guy! End If Else If Val(Txt_age.Text) b Thenmax=aElsemax=bEnd Ifmax= IIf ( ab , a

12、 , b ) 2021/8/14251. IIf函數(shù)函數(shù)IIf函數(shù)實際上是IfThenElse結(jié)構(gòu)的一個簡寫 IIf函數(shù)中后兩個表達式可以是各種類型的表達式,也可以是一個IIf函數(shù)的調(diào)用Print x & IIf(x 0, “大于0”, “小于或小于0”) s = IIf(x 0, 1, IIf(x = 0, 0, -1) 判斷x的符號 2021/8/14261. IIf函數(shù)函數(shù)將If語句改寫成使用IIf函數(shù): If x 30 Then y = 0 ElseIf x = 50 Then y = (x - 30) * 10 Else y = (x - 50) * 20 + 20 * 10

13、 End If等價于:等價于:y = IIf(x 30, 0, IIf(x =90,A,grade=80,B,grade=90,A,grade=80,B,grade80,C)用于多分支情況用于多分支情況 條件表達式和值必須成對出現(xiàn)條件表達式和值必須成對出現(xiàn) ! 2021/8/14282. Switch函數(shù)函數(shù)將If語句改寫成使用Switch函數(shù): If x 30 Then y = 0 ElseIf x = 50 Then y = (x - 30) * 10 Else y = (x - 50) * 20 + 20 * 10 End If等價于:等價于:y = Switch(x 30, 0, x5

14、0, (x-50)*20+20*10) 條件條件條件條件條件條件值值值值值值2021/8/14297.2 Select Case語句(多分支語句)格式:2021/8/14307.2 Select Case語句T表達式表達式1語句體語句體1表達式表達式2語句體語句體2T表達式表達式n語句體語句體n語句體語句體n+1T執(zhí)行過程執(zhí)行過程:計算測試表達式的值;計算測試表達式的值;依次比較依次比較各個表達式,符合條件則進入相應(yīng)的語句體執(zhí)行;各個表達式,符合條件則進入相應(yīng)的語句體執(zhí)行;執(zhí)行執(zhí)行Select Case語句的下一條語句。語句的下一條語句。計算測試表達式的值計算測試表達式的值2021/8/143

15、17.2 Select Case語句n注注1:測試表達式測試表達式可以是數(shù)值或字符串表達式可以是數(shù)值或字符串表達式;n注注2:各:各表達式列表表達式列表 合法的格式:合法的格式:一個常量或常量表達式一個常量或常量表達式多個常量或常量表達式,用逗號隔開,逗號相當(dāng)于多個常量或常量表達式,用逗號隔開,逗號相當(dāng)于“或或” ,如:,如:Case 1,3,5,7表達式表達式1 to 表達式表達式2,表示從表達式,表示從表達式1到表達式到表達式2中所有的值,其中中所有的值,其中表達式表達式1的值必須小于表達式的值必須小于表達式2的值。如:的值。如:Case 1 to 5Is關(guān)系運算表達式,可以使用的關(guān)系運算

16、符為:關(guān)系運算表達式,可以使用的關(guān)系運算符為:、=、=、=,不可以使用邏輯運算符表示多個范圍。,不可以使用邏輯運算符表示多個范圍。 前面四種情況的組合,如前面四種情況的組合,如Case Is10,2,4,6,Is =“a” And ch=“A” And ch=“0” And ch=“9” “0” To “9”空格字符:ch=“ ” “ ”Is=“ ”n實現(xiàn):Select Case Select Case chchCase “a” To “z”, “A” to “Z”Case “a” To “z”, “A” to “Z”Print “Print “字母字符字母字符” Case “0” To “9

17、”Case “0” To “9”Print “Print “數(shù)字字符數(shù)字字符”Case “ ”Case “ ”Print “Print “空格空格”Case ElseCase ElsePrint “Print “其他字符其他字符”End SelectEnd Select2021/8/14337.2 Select Case語句例例7-57-5簡單運算器簡單運算器n分析:運算符的判斷:共四種取值,事先已在ComboBox中 Select Case Cmbop.Text Case txtresult = Val(txtX) + Val(txtY) Case txtresult = Val(txtX)

18、 - Val(txtY) Case txtresult = Val(txtX) * Val(txtY) Case txtresult = Val(txtX) / Val(txtY)End Select If Val(txtY) 0 Then txtresult = Val(txtX) / Val(txtY)Else MsgBox 被被0除除 txtY = : txtY.SetFocusEnd If2021/8/14347.2 Select Case語句 所有Select Case語句可以替換為IfThenElseIf語句。只有在If語句和每一個ElseIf語句計算相同條件表達式時,才能用Sel

19、ect Case結(jié)構(gòu)替換IfThenElseIf結(jié)構(gòu)。 If x 30 Then y = 0 ElseIf x = 50 Then y = (x - 30) * 10 Else y = (x - 50) * 20 + 20 * 10 End IfSelect Case x Case Is 50 y = (x - 50) * 20 + 20 * 10End Select2021/8/14357.3 基本算法及應(yīng)用7.3.1 求兩個數(shù)的最大(?。┲?.3.2 用戶輸入時按鍵的判斷7.3.3 信息的有效性驗證7.3.4 單選鈕和復(fù)選框的應(yīng)用 2021/8/14367.3.1求兩個數(shù)的最大(小)值求兩

20、個數(shù)的最大(?。┲捣治觯簝蓚€數(shù)的關(guān)系無非有3種情形,即:AB,A=B,A= B Then Max = A Else Max = B If A B Then Max = A Else Max = B 2021/8/14377.3.2用戶輸入時按鍵的判斷用戶輸入時按鍵的判斷兩種方法:兩種方法:n一是一是在輸入時判斷,使用文本框的在輸入時判斷,使用文本框的Key事件;事件;n常用:常用:KeyPressKeyPress事件(事件(KeyAsciiKeyAscii參數(shù))參數(shù))n二是在全部輸入完成后再對每個字符進行判斷,使二是在全部輸入完成后再對每個字符進行判斷,使用循環(huán)結(jié)構(gòu)依次獲取字符串中的字符。用循

21、環(huán)結(jié)構(gòu)依次獲取字符串中的字符。 例例7-7 在文本框中輸入一個字符串,要求只能出現(xiàn)字母。在文本框中輸入一個字符串,要求只能出現(xiàn)字母。 Private Sub Text1_KeyPress(KeyAscii As Integer) If (KeyAscii Asc(z) And _ (KeyAscii Asc(Z) Then KeyAscii = 0End Sub2021/8/14387.3.3信息的有效性驗證信息的有效性驗證例7-8 登錄界面設(shè)計“確定確定”按鈕的按鈕的Click事件過程如下:事件過程如下:Private Sub cmdok_Click() If txtuser.Text =

22、Or txtpwd.Text = Then MsgBox 請輸入完整信息! Else If txtpwd.Text 20082008 Then MsgBox 密碼錯誤,不能登錄! txtpwd .Text = txtpwd.SetFocus Else MsgBox txtuser.Text & ,歡迎您! End If End IfEnd Sub 有效信息:有效信息:帳號和密碼都不能空帳號和密碼都不能空密碼符合要求密碼符合要求這樣的密碼設(shè)置方法,安全性差這樣的密碼設(shè)置方法,安全性差2021/8/14397.3.4 單選鈕和復(fù)選框的應(yīng)用單選鈕和復(fù)選框的應(yīng)用單選鈕單選鈕多選一多選一n在同一

23、組單選鈕中只有一個按鈕的在同一組單選鈕中只有一個按鈕的ValueValue屬屬性值為性值為1 1,通常使用,通常使用IfThenElseIfIfThenElseIf的的語句格式進行判斷。語句格式進行判斷。 復(fù)選框復(fù)選框多選多多選多n同一組復(fù)選框中可以同時有多個被選中,也同一組復(fù)選框中可以同時有多個被選中,也可以只選中一個,也可以一個都不選中,通可以只選中一個,也可以一個都不選中,通常我們對各個復(fù)選框進行獨立判斷。常我們對各個復(fù)選框進行獨立判斷。 2021/8/14407.3.4 單選鈕和復(fù)選框的應(yīng)用單選鈕和復(fù)選框的應(yīng)用例例7-9 根據(jù)用戶選擇,求若干門課程的總分或平均分根據(jù)用戶選擇,求若干門課

24、程的總分或平均分參考代碼如下:參考代碼如下:Private Sub cmdCal_Click() Dim sum As Integer, n As Integer If chkChinese.Value = 1 Then sum = sum + Val(txtChinese.Text): n = n + 1 If chkMath.Value = 1 Then sum = sum + Val(txtMath.Text): n = n + 1 If chkEnglish.Value = 1 Then sum = sum + Val(txtEnglish.Text): n = n + 1 If op

25、tTotal.Value Then txtResult.Text = n & 門課總分: & vbCrLf & sum Else If n 0 Then txtResult.Text = n & 門課平均分: & vbCrLf & sum / n End IfEnd Sub 問:變量問:變量n的作用是什么?的作用是什么?2021/8/14417.4 其他應(yīng)用舉例例7-10例7-11例7-12例7-132021/8/1442例7-10例7-10 調(diào)整3個文本框中的數(shù)值,使其中的數(shù)值按小到大的順序排放 If a b Then temp = a: a

26、= b: b = temp 如果a大于b,交換a和b的值 If a c Then temp = a: a = c: c = temp 如果a大于c,交換a和c的值 If b c Then temp = b: b = c: c = temp 如果b大于c,交換b和c的值2021/8/1443例7-11例7-11 求一元二次方程ax2+bx+c=0的根 根據(jù)數(shù)學(xué)中一元二次方程的求根公式,令:當(dāng)0時,方程有兩個不相等的實根;當(dāng)=0時,方程有兩個相等的實根;當(dāng)0時,方程有兩個不相等的虛根。 24bac2142bbacxa 2242bbacxa 122bxxa 2142biacbxa 2242biacb

27、xa 2021/8/1444例7-11If a 0 Then delta = b * b - 4 * a * c If delta 0 Then x1 = (-b + Sqr(delta) / (2 * a) 第1個根 x2 = (-b - Sqr(delta) / (2 * a) 第2個根 txtroot = X1= & x1 & Chr(13) & Chr(10) & X2= & x2 ElseIf delta = 0 Then x1 = -b / (2 * a) txtroot = Two equal root,X1=X2= & x1 El

28、se x1 = -b / (2 * a) 根的實部 x2 = Sqr(-delta) / (2 * a) 根的虛部 txtroot = X1= & x1 & + & x2 & i & Chr(13) & Chr(10) & X2= & x1 & - & x2 & i End If End If2021/8/1445例7-12例7-12 編程實現(xiàn)輸入一個整數(shù),判斷其能否被3、5、7整除,并輸出以下信息之一:(1)能被3、5、7整除。(2)能被其中兩個數(shù)(要指出哪兩個)整除。(3)能被其中一個數(shù)(要指出哪一個)

29、整除。(4)不能被3、5、7任一個整除。2021/8/1446代碼1If x Mod 3 = 0 And x Mod 5 = 0 And x Mod 7 = 0 Then MsgBox 能被3,5,7整除If x Mod 3 = 0 And x Mod 5 = 0 And x Mod 7 0 Then MsgBox 能被3,5整除If x Mod 3 = 0 And x Mod 7 = 0 And x Mod 5 0 Then MsgBox 能被3,7整除If x Mod 5 = 0 And x Mod 7 = 0 And x Mod 3 0 Then MsgBox 能被5,7整除If x M

30、od 3 = 0 Then MsgBox 能被3整除If x Mod 5 = 0 Then MsgBox 能被5整除If x Mod 7 = 0 Then MsgBox 能被7整除2021/8/1447代碼2 If x Mod 3 = 0 And x Mod 5 = 0 And x Mod 7 = 0 Then MsgBox 能被3,5,7整除 ElseIf x Mod 3 = 0 And x Mod 5 = 0 And x Mod 7 0 Then MsgBox 能被3,5整除 ElseIf x Mod 3 = 0 And x Mod 7 = 0 And x Mod 5 0 Then Msg

31、Box 能被3,7整除 ElseIf x Mod 5 = 0 And x Mod 7 = 0 And x Mod 3 0 Then MsgBox 能被5,7整除 ElseIf x Mod 3 = 0 Then MsgBox 能被3整除 ElseIf x Mod 5 = 0 Then MsgBox 能被5整除 ElseIf x Mod 7 = 0 Then MsgBox 能被7整除 Else MsgBox 不能被3、5、7任一數(shù)整除 End If2021/8/1448代碼3 If x Mod 3 = 0 Then n = n + 1 s = s & 3 End If If x Mod 5

32、 = 0 Then n = n + 1 s = s & 5 End If If x Mod 7 = 0 Then n = n + 1 s = s & 7 End If If n 0 Then MsgBox 能被 & s & 這 & n & 個數(shù)整除 Else MsgBox 不能被任一數(shù)整除 End If2021/8/1449代碼4 n=0 If x Mod 3 = 0 Then n = n + 1 End If If x Mod 5 = 0 Then n = n + 2 End If If x Mod 7 = 0 Then n = n + 4 End If Select Case n Case 0: MsgBox 不能被任一數(shù)整除 Case 1: MsgBox 能被3整除 Case 2: MsgBox 能被5整除 Case 3: MsgBox 能被3,5整除 Case 4: MsgBox 能被7整

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論