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

下載本文檔

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

文檔簡(jiǎn)介

1、第7章 選擇結(jié)構(gòu)程序設(shè)計(jì),學(xué)習(xí)重點(diǎn),If語句、IIf函數(shù)、Switch函數(shù)、Select Case語句的格式與使用。 If 語句的嵌套使用。 掌握常用的選擇結(jié)構(gòu)算法。,本章內(nèi)容,7.1 If語句 7.2 Select Case語句 7.3 基本算法及應(yīng)用 7.4 其他應(yīng)用舉例 本章小結(jié),引言,分支結(jié)構(gòu),7.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語句有關(guān)的函數(shù),注1:條件表達(dá)式的值為True或False,一般是邏輯或關(guān)系表達(dá)式,也可以是算術(shù)表達(dá)式(轉(zhuǎn)換為邏輯值),7

2、.1.1 IfThen結(jié)構(gòu),兩種格式:,格式1: 塊形式 If Then 語句體 End If,格式2:?jiǎn)涡行问?If Then 語句體,注2:當(dāng)條件為True時(shí)執(zhí)行語句體,否則執(zhí)行If語句的下一條語句,注3:語句體中可以是多條語句,當(dāng)采用格式2時(shí),所有的語句必須寫在一行,用冒號(hào)隔開語句體中的語句,7.1.1 IfThen結(jié)構(gòu),例:已知有兩數(shù)x、y,編程使x中存放較大的數(shù) 分析:如果x=y,則不需要做處理 如果xy,則做交換處理 實(shí)現(xiàn):If x y Thentemp = xx = yy = tempEnd If 用格式2描述: If x y Then temp = x:x = y:y = te

3、mp,特別注意: 塊結(jié)構(gòu)時(shí)If和End If成對(duì)出現(xiàn),7.1.1 IfThen結(jié)構(gòu),例7-1 電子鬧鐘設(shè)計(jì),主要利用文本框、按鈕、計(jì)時(shí)器控件實(shí)現(xiàn)鬧鐘功能。,例7-1,程序代碼如下: Private Sub Command1_Click() Timer1.Enabled = Not Timer1.Enabled 用Not運(yùn)算進(jìn)行開關(guān)控制 End Sub Private Sub Timer1_Timer() Dim d As Date d = Text1.Text If Hour(Time) = Hour(d) And Minute(Time) = Minute(d) Then Beep 到達(dá)時(shí)間

4、后發(fā)聲 End Sub,功能: 連續(xù)1分鐘響鈴,60次,等價(jià)于: If Hour(Time) = Hour(d) And Minute(Time) = Minute(d) Then Beep End If,7.1.2 IfThenElse結(jié)構(gòu),兩種格式:,格式1: If Then 語句體1 Else 語句體2 End If,格式2: If Then 語句體1 Else 語句體2,注:當(dāng)條件為True時(shí)執(zhí)行語句體1,否則執(zhí)行語句體2,例7-2 已知x,求,程序代碼如下: Private Sub CmdCul_Click() Dim x As Single, y As Single x = Val

5、(txtX.Text) 第1個(gè)文本框的名稱是txtX If x 0 Then MsgBox x不能小于0 Else y = Sqr(x) txtY.Text = Str(y) 第2個(gè)文本框的名稱是txtY End If End Sub,等價(jià)于: If x 0 Then MsgBox x不能小于0 Else y = Sqr(x) : txtY.Text = Str(y),7.1.3 IfThenElseIf結(jié)構(gòu),If Then語句體1ElseIf Then語句體2Else語句體n+1End If,格式:,7.1.3 IfThenElseIf結(jié)構(gòu),判斷的順序?yàn)楸磉_(dá)式1、表達(dá)式2 只有當(dāng)表達(dá)式1為F

6、alse時(shí)才判斷表達(dá)式2,當(dāng)表達(dá)式1和表達(dá)式2都為False時(shí),才判斷表達(dá)式3, 程序執(zhí)行語句體n+1的條件為前n個(gè)表達(dá)式均為False。,7.1.3 IfThenElseIf結(jié)構(gòu),例:已知變量ch中存放了一個(gè)字符,判斷該字符是字母字符、數(shù)字字符、空格還是其它字符。 分析:字母字符:ch=“a” And ch=“A” And ch=“0” And ch=“9”空格字符:ch=“ ” 實(shí)現(xiàn):,If ch=“a” And ch=“A” And ch=“0” And ch=“9” ThenPrint “數(shù)字字符”ElseIf ch=“ ” ThenPrint “空格” ElsePrint “其他字符

7、”End If,7.1.3 IfThenElseIf結(jié)構(gòu),例7-3 旅客乘車旅行,可免費(fèi)攜帶30公斤行李,超 過30公斤的部分每公斤需支付托運(yùn)費(fèi)10元,超過50 公斤部分則每公斤需支付20元托運(yùn)費(fèi)。請(qǐng)編程根據(jù) 每位旅客行李的重量計(jì)算其應(yīng)付的行李托運(yùn)費(fèi)。,例7-3,此分段函數(shù)用程序代碼表示如下: Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x 50 y = (x - 50) * 20 + 20 * 10 End If Text2.Text = y End Sub,能否寫成?,可以

8、,但Else已經(jīng)包含了x=30的信息,7.1.4 If語句的嵌套,If語句中又包含If語句 在Then子句或Else子句的語句體中包含完整的一條If語句 如: If x y ThenPrint x & “” & yElse If xy ThenPrint x & “” & yElse Print x & “=” & y End If End If,7.1.4 If語句的嵌套,注1: If語句的完整性,即內(nèi)層If語句必須完整地出現(xiàn)在外層If語句的Then子句或Else子句中。,內(nèi)外層不能有交叉!,7.1.4 If語句的嵌套,注2:ElseIf的匹配原則 Else始終與上面距離其最近的未被匹配過的

9、 If匹配 注3: If End If的匹配 If 塊必須以一個(gè) End If 語句結(jié)束,If ThenIf Then Else End IfElseIf Then If Then Else End IfEnd If,7.1.4 If語句的嵌套,為使程序結(jié)構(gòu)更為清晰,要養(yǎng)成良好的書寫習(xí)慣。,If ThenIf Then Else End IfElseIf Then If Then Else End IfEnd If,為體現(xiàn)層次,可以使用Tab健排放不同層次的語句,7.1.4 If語句的嵌套,例7-4 根據(jù)用戶輸入年齡和性別,輸出不同的歡迎信息。其中小于14歲的男性為boy,大于14歲的男性為g

10、uy,其中小于14歲的女性為girl,大于14歲的女性為miss。,例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) 14 Then 小于14歲的女性 MsgBox Hello,girl! Else 大于或等于14歲的女性 MsgBox Hello,miss!

11、 End If End If End Sub,7.1.5 與If語句有關(guān)的函數(shù),1. IIf函數(shù) *2. Switch函數(shù),1. IIf函數(shù),格式: IIf(條件表達(dá)式,條件為True時(shí)的表達(dá)式,條件為False 時(shí)的表達(dá)式) 功能:根據(jù)條件表達(dá)式的值,確定函數(shù)返回后面兩個(gè)表達(dá)式的其中一個(gè)的值。,1. IIf函數(shù),IIf函數(shù)實(shí)際上是IfThenElse結(jié)構(gòu)的一個(gè)簡(jiǎn)寫 IIf函數(shù)中后兩個(gè)表達(dá)式可以是各種類型的表達(dá)式,也可以是一個(gè)IIf函數(shù)的調(diào)用 Print x & IIf(x 0, “大于0”, “小于或小于0”) s = IIf(x 0, 1, IIf(x = 0, 0, -1) 判斷x的符號(hào)

12、,1. IIf函數(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 End If,等價(jià)于: y = IIf(x 30, 0, IIf(x = 50, (x - 30) * 10, (x - 50) * 20 + 20 * 10),2. Switch函數(shù),格式Switch(表達(dá)式1,值1, 表達(dá)式2,值2 , 表達(dá)式n,值n) 功能計(jì)算一組條件表達(dá)式列表的值,然后返回與條件表達(dá)式列表中最先為True的表達(dá)式所對(duì)應(yīng)的Variant型數(shù)值

13、或表達(dá)式。 如:lblstatus.Caption= _ Switch(grade=90,A,grade=80,B,grade80,C) 用于多分支情況 條件表達(dá)式和值必須成對(duì)出現(xiàn) !,2. Switch函數(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,等價(jià)于: y = Switch(x 50, (x-50)*20+20*10),7.2 Select Case語句,(多分支語句) 格式: Select Cas

14、e Case 表達(dá)式列表1Case 表達(dá)式列表2Case ElseEnd Select,7.2 Select Case語句,T,表達(dá)式1,語句體1,表達(dá)式2,語句體2,T,表達(dá)式n,語句體n,語句體n+1,T,執(zhí)行過程: 計(jì)算測(cè)試表達(dá)式的值; 依次比較各個(gè)表達(dá)式,符合條件則進(jìn)入相應(yīng)的語句體執(zhí)行; 執(zhí)行Select Case語句的下一條語句。,計(jì)算測(cè)試表達(dá)式的值,7.2 Select Case語句,注1:測(cè)試表達(dá)式可以是數(shù)值或字符串表達(dá)式; 注2:各表達(dá)式列表 合法的格式: 一個(gè)常量或常量表達(dá)式 多個(gè)常量或常量表達(dá)式,用逗號(hào)隔開,逗號(hào)相當(dāng)于“或” ,如:Case 1,3,5,7 表達(dá)式1 to

15、表達(dá)式2,表示從表達(dá)式1到表達(dá)式2中所有的值,其中表達(dá)式1的值必須小于表達(dá)式2的值。如:Case 1 to 5 Is關(guān)系運(yùn)算表達(dá)式,可以使用的關(guān)系運(yùn)算符為:、=、=,不可以使用邏輯運(yùn)算符表示多個(gè)范圍。 前面四種情況的組合,如Case Is10,2,4,6,Is 0 注3:若有多個(gè)Case表達(dá)式符合條件,則只執(zhí)行第一個(gè)符合的Case下的語句體。,7.2 Select Case語句,例:已知變量ch中存放了一個(gè)字符,判斷該字符是字母字符、數(shù)字字符、空格還是其它字符。(用Select Case語句改寫) 分析:將各種字符的判斷條件改寫成符合要求的Case條件 字母字符:ch=“a” And ch=“

16、A” And ch=“0” And ch=“9” “0” To “9” 空格字符:ch=“ ” “ ”Is=“ ” 實(shí)現(xiàn):,Select Case chCase “a” To “z”, “A” to “Z”Print “字母字符” Case “0” To “9”Print “數(shù)字字符”Case “ ”Print “空格”Case ElsePrint “其他字符”End Select,7.2 Select Case語句,例7-5簡(jiǎn)單運(yùn)算器 分析:運(yùn)算符的判斷:共四種取值,事先已在ComboBox中,Select Case Cmbop.Text Case txtresult = Val(txtX)

17、 + Val(txtY) Case txtresult = Val(txtX) - Val(txtY) Case txtresult = Val(txtX) * Val(txtY) Case txtresult = Val(txtX) / Val(txtY) End Select,7.2 Select Case語句,所有Select Case語句可以替換為IfThenElseIf語句。 只有在If語句和每一個(gè)ElseIf語句計(jì)算相同條件表達(dá)式時(shí),才能用Select Case結(jié)構(gòu)替換IfThenElseIf結(jié)構(gòu)。,7.3 基本算法及應(yīng)用,7.3.1 求兩個(gè)數(shù)的最大(?。┲?7.3.2 用戶輸入時(shí)

18、按鍵的判斷 7.3.3 信息的有效性驗(yàn)證 7.3.4 單選鈕和復(fù)選框的應(yīng)用,7.3.1求兩個(gè)數(shù)的最大(?。┲?分析: 兩個(gè)數(shù)的關(guān)系無非有3種情形,即:AB,A=B,A= B Then Max = A Else Max = B If A B Then Max = A Else Max = B,7.3.2用戶輸入時(shí)按鍵的判斷,兩種方法: 一是在輸入時(shí)判斷,使用文本框的Key事件; 常用:KeyPress事件(KeyAscii參數(shù)) 二是在全部輸入完成后再對(duì)每個(gè)字符進(jìn)行判斷,使用循環(huán)結(jié)構(gòu)依次獲取字符串中的字符。,例7-7 在文本框中輸入一個(gè)字符串,要求只能出現(xiàn)字母。 Private Sub Text

19、1_KeyPress(KeyAscii As Integer) If (KeyAscii Asc(z) And _ (KeyAscii Asc(Z) Then KeyAscii = 0 End Sub,7.3.3信息的有效性驗(yàn)證,例7-8 登錄界面設(shè)計(jì),“確定”按鈕的Click事件過程如下: Private Sub cmdok_Click() If txtuser.Text = Or txtpwd.Text = Then MsgBox 請(qǐng)輸入完整信息! Else If txtpwd.Text 20082008 Then MsgBox密碼錯(cuò)誤,不能登錄! txtpwd .Text = txtpw

20、d.SetFocus Else MsgBoxtxtuser.Text & ,歡迎您! End If End If End Sub,有效信息: 帳號(hào)和密碼都不能空 密碼符合要求,這樣的密碼設(shè)置方法,安全性差,7.3.4 單選鈕和復(fù)選框的應(yīng)用,單選鈕多選一 在同一組單選鈕中只有一個(gè)按鈕的Value屬性值為1,通常使用IfThenElseIf的語句格式進(jìn)行判斷。 復(fù)選框多選多 同一組復(fù)選框中可以同時(shí)有多個(gè)被選中,也可以只選中一個(gè),也可以一個(gè)都不選中,通常我們對(duì)各個(gè)復(fù)選框進(jìn)行獨(dú)立判斷。,7.3.4 單選鈕和復(fù)選框的應(yīng)用,例7-9 根據(jù)用戶選擇,求若干門課程的總分或平均分,參考代碼如下: Private

21、 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 optTotal.Value Then txtResult.T

22、ext = n & 門課總分: & vbCrLf & sum Else If n 0 Then txtResult.Text = n & 門課平均分: & vbCrLf & sum / n End If End Sub,問:變量n的作用是什么?,7.4 其他應(yīng)用舉例,例7-10 例7-11 例7-12 例7-13,例7-10,例7-10 調(diào)整3個(gè)文本框中的數(shù)值,使其中 的數(shù)值按小到大的順序排放,If a b Then temp = a: a = b: b = temp 如果a大于b,交換a和b的值 If a c Then temp = a: a = c: c = temp 如果a大于c,交換a

23、和c的值 If b c Then temp = b: b = c: c = temp 如果b大于c,交換b和c的值,例7-11,例7-11 求一元二次方程ax2+bx+c=0的根,根據(jù)數(shù)學(xué)中一元二次方程的求根公式,令: 當(dāng)0時(shí),方程有兩個(gè)不相等的實(shí)根; 當(dāng)=0時(shí),方程有兩個(gè)相等的實(shí)根; 當(dāng)0時(shí),方程有兩個(gè)不相等的虛根。,例7-11,If a 0 Then delta = b * b - 4 * a * c If delta 0 Then x1 = (-b + Sqr(delta) / (2 * a) 第1個(gè)根 x2 = (-b - Sqr(delta) / (2 * a) 第2個(gè)根 txtro

24、ot = X1= & x1 & Chr(13) & Chr(10) & X2= & x2 ElseIf delta = 0 Then x1 = -b / (2 * a) txtroot = Two equal root,X1=X2= & x1 Else x1 = -b / (2 * a) 根的實(shí)部 x2 = Sqr(-delta) / (2 * a) 根的虛部 txtroot = X1= & x1 & + & x2 & i & Chr(13) & Chr(10) & X2= & x1 & - & x2 & i End If End If,例7-12,例7-12 編程實(shí)現(xiàn)輸入一個(gè)整數(shù),判斷其能否

25、被3、 5、7整除,并輸出以下信息之一: (1)能被3、5、7整除。(2)能被其中兩個(gè)數(shù) (要指出哪兩個(gè))整除。(3)能被其中一個(gè)數(shù) (要指出哪一個(gè))整除。(4)不能被3、5、7任 一個(gè)整除。,代碼1,If 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整除

26、If x Mod 5 = 0 And x Mod 7 = 0 And x Mod 3 0 Then MsgBox 能被5,7整除 If x Mod 3 = 0 Then MsgBox 能被3整除 If x Mod 5 = 0 Then MsgBox 能被5整除 If x Mod 7 = 0 Then MsgBox 能被7整除,代碼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 能被

27、3,5整除 ElseIf x Mod 3 = 0 And x Mod 7 = 0 And x Mod 5 0 Then MsgBox 能被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 If,代碼3,If x Mod

28、 3 = 0 Then n = n + 1 s = s & 3 End If If x Mod 5 = 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 & 個(gè)數(shù)整除 Else MsgBox 不能被任一數(shù)整除 End If,代碼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整除 Case 5: MsgBox 能被3,7整除 Case 6: MsgBox 能被5,7整除 Case

溫馨提示

  • 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)論