版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章選擇結構程序設計
第7章選擇結構程序設計1學習重點
If語句、IIf函數、Switch函數、SelectCase語句的格式與使用。If語句的嵌套使用。掌握常用的選擇結構算法。學習重點If語句、IIf函數、Switch函數、Selec2本章內容7.1If語句7.2SelectCase語句7.3基本算法及應用7.4其他應用舉例本章小結
本章內容7.1If語句3引言分支結構
True
False
P
A
B
引言分支結構TrueFalsePAB47.1If語句7.1.1If…Then…結構
7.1.2If…Then…Else…結構
7.1.3If…Then…ElseIf…結構
7.1.4If語句的嵌套
7.1.5與If語句有關的函數
7.1If語句7.1.1If…Then…結構5注1:條件表達式的值為True或False,一般是邏輯或關系表達式,也可以是算術表達式(轉換為邏輯值)7.1.1If…Then…結構兩種格式:格式1:
塊形式
If<條件表達式>Then 語句體EndIf
格式2:單行形式
If<條件表達式>Then語句體條件表達式語句體TrueFalse注2:當條件為True時執(zhí)行語句體,否則執(zhí)行If語句的下一條語句注3:語句體中可以是多條語句,當采用格式2時,所有的語句必須寫在一行,用冒號隔開語句體中的語句注1:條件表達式的值為True或False,一般是邏輯或關系67.1.1If…Then…結構例:已知有兩數x、y,編程使x中存放較大的數分析:如果x>=y,則不需要做處理
如果x<y,則做交換處理實現:
Ifx<yThen
temp=x
x=y
y=temp
EndIf用格式2描述:
Ifx<yThentemp=x:x=y:y=temp特別注意:塊結構時If和EndIf成對出現7.1.1If…Then…結構例:已知有兩數x、y,編程77.1.1If…Then…結構例7-1電子鬧鐘設計,主要利用文本框、按鈕、計時器控件實現鬧鐘功能。
7.1.1If…Then…結構例7-1電子鬧鐘設計,8例7-1程序代碼如下:PrivateSubCommand1_Click()Timer1.Enabled=NotTimer1.Enabled '用Not運算進行開關控制EndSubPrivateSubTimer1_Timer()DimdAsDated=Text1.Text
IfHour(Time)=Hour(d)AndMinute(Time)=Minute(d)ThenBeep'到達時間后發(fā)聲EndSub功能:連續(xù)1分鐘響鈴,60次等價于:IfHour(Time)=Hour(d)AndMinute(Time)=Minute(d)ThenBeepEndIf例7-1程序代碼如下:功能:連續(xù)1分鐘響鈴,60次等價于:97.1.2If…Then…Else…結構兩種格式:格式1:If<條件表達式>Then 語句體1Else
語句體2EndIf格式2:If<條件表達式>Then語句體1Else語句體2注:當條件為True時執(zhí)行語句體1,否則執(zhí)行語句體2T條件表達式語句體1F語句體27.1.2If…Then…Else…結構兩種格式:格式110例7-2
已知x,求程序代碼如下:PrivateSubCmdCul_Click()DimxAsSingle,yAsSinglex=Val(txtX.Text) '第1個文本框的名稱是txtXIfx<0ThenMsgBox"x不能小于0"Elsey=Sqr(x)txtY.Text=Str(y) '第2個文本框的名稱是txtYEndIfEndSub等價于:Ifx<0ThenMsgBox"x不能小于0"Elsey=Sqr(x):txtY.Text=Str(y)
例7-2已知x,求程序代碼如下:等價于:117.1.3If…Then…ElseIf…結構
If<表達式1>Then
語句體1
ElseIf<表達式2>Then
語句體2
……
[Else
語句體n+1]
EndIf表達式1=True執(zhí)行語句體1False表達式2=True執(zhí)行語句體2False表達式3=……Else和If間無空格格式:7.1.3If…Then…ElseIf…結構
If127.1.3If…Then…ElseIf…結構FT表達式1語句體1表達式2語句體2TF……表達式n語句體n……F語句體n+1……T判斷的順序為表達式1、表達式2……只有當表達式1為False時才判斷表達式2,當表達式1和表達式2都為False時,才判斷表達式3,程序執(zhí)行語句體n+1的條件為前n個表達式均為False。7.1.3If…Then…ElseIf…結構FT表達式1137.1.3If…Then…ElseIf…結構例:已知變量ch中存放了一個字符,判斷該字符是字母字符、數字字符、空格還是其它字符。分析:
字母字符:
ch>=“a”Andch<=“z”O(jiān)rch>=“A”Andch<=“Z”
數字字符:ch>=“0”Andch<=“9”
空格字符:ch=“”實現:
Ifch>=“a”Andch<=“z”O(jiān)rch>=“A”Andch<=“Z”Then
Print“字母字符”
ElseIfch>=“0”Andch<=“9”Then
Print“數字字符”
ElseIfch=“”Then
Print“空格”
Else
Print“其他字符”
EndIf7.1.3If…Then…ElseIf…結構例:已知變量147.1.3If…Then…ElseIf…結構例7-3旅客乘車旅行,可免費攜帶30公斤行李,超過30公斤的部分每公斤需支付托運費10元,超過50公斤部分則每公斤需支付20元托運費。請編程根據每位旅客行李的重量計算其應付的行李托運費。7.1.3If…Then…ElseIf…結構例7-315例7-3此分段函數用程序代碼表示如下:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx<30Then 'x<30y=0ElseIfx<=50Then '30<=x<=50y=(x-30)*10Else 'x>50y=(x-50)*20+20*10EndIfText2.Text=yEndSubx>=30Andx<=50能否寫成?可以,但Else已經包含了x>=30的信息例7-3此分段函數用程序代碼表示如下:x>=30And167.1.4If語句的嵌套If語句中又包含If語句在Then子句或Else子句的語句體中包含完整的一條If語句如:Ifx>yThen
Printx&“>”&y
Else
Ifx<yThen
Printx&“<”&y
Else
Printx&“=”&y EndIf
EndIf一條If語句一條If語句7.1.4If語句的嵌套If語句中又包含If語句一條If177.1.4If語句的嵌套注1:If語句的完整性,即內層If語句必須完整地出現在外層If語句的Then子句或Else子句中。外層If內層If內層If內外層不能有交叉!7.1.4If語句的嵌套注1:If語句的完整性,即內層187.1.4If語句的嵌套注2:Else-If的匹配原則Else始終與上面距離其最近的未被匹配過的If匹配注3:If-EndIf的匹配If塊必須以一個EndIf語句結束If…Then
If…Then
……
Else
……
EndIf
Else
If…Then……
If……Then
……
Else
……
EndIf
EndIf7.1.4If語句的嵌套注2:Else-If的匹配原則I197.1.4If語句的嵌套 為使程序結構更為清晰,
要養(yǎng)成良好的書寫習慣。If…Then
If…Then
……
Else
……
EndIf
Else
If…Then……
If……Then
……
Else
……
EndIf
EndIf為體現層次,可以使用Tab健排放不同層次的語句①④②③7.1.4If語句的嵌套 為使程序結構更為清晰,
要養(yǎng)成207.1.4If語句的嵌套例7-4根據用戶輸入年齡和性別,輸出不同的歡迎信息。其中小于14歲的男性為boy,大于14歲的男性為guy,其中小于14歲的女性為girl,大于14歲的女性為miss。7.1.4If語句的嵌套例7-4根據用戶輸入年齡和性21例7-4程序代碼如下:PrivateSubCommand1_Click()IfOp_male.Value=TrueThenIfVal(Txt_age.Text)<14Then '小于14歲的男性MsgBox"Hello,boy!"Else '大于或等于14歲的男性MsgBox"Hello,guy!"EndIfElseIfVal(Txt_age.Text)<14Then '小于14歲的女性MsgBox"Hello,girl!"Else '大于或等于14歲的女性MsgBox"Hello,miss!"EndIfEndIfEndSub①②③例7-4程序代碼如下:①②③227.1.5與If語句有關的函數1.IIf函數*2.Switch函數7.1.5與If語句有關的函數1.IIf函數231.IIf函數格式:IIf(條件表達式,條件為True時的表達式,條件為False時的表達式)功能:
根據條件表達式的值,確定函數返回后面兩個表達式的其中一個的值。
Ifa>bThen
max=a
Else
max=b
EndIfmax=IIf(a>b,a,b)1.IIf函數格式:Ifa>bThen
max=a
241.IIf函數IIf函數實際上是If…Then…Else結構的一個簡寫IIf函數中后兩個表達式可以是各種類型的表達式,也可以是一個IIf函數的調用①Printx&IIf(x>0,“大于0”,“小于或小于0”)②s=IIf(x>0,1,IIf(x=0,0,-1))
’判斷x的符號
1.IIf函數IIf函數實際上是If…Then…Else結251.IIf函數將If語句改寫成使用IIf函數:Ifx<30Theny=0ElseIfx<=50Theny=(x-30)*10Elsey=(x-50)*20+20*10EndIf等價于:y=IIf(x<30,0,IIf(x<=50,(x-30)*10,(x-50)*20+20*10))1.IIf函數將If語句改寫成使用IIf函數:If262.Switch函數格式
Switch(表達式1,值1[,表達式2,值2…[,表達式n,值n]])
功能
計算一組條件表達式列表的值,然后返回與條件表達式列表中最先為True的表達式所對應的Variant型數值或表達式。如:
lblstatus.Caption=_
Switch(grade>=90,"A",grade>=80,"B",grade<80,"C")用于多分支情況
條件表達式和值必須成對出現!2.Switch函數格式
Switch(表達式1,值1[,272.Switch函數將If語句改寫成使用Switch函數:Ifx<30Theny=0ElseIfx<=50Theny=(x-30)*10Elsey=(x-50)*20+20*10EndIf等價于:y=Switch(x<30,0,x<=50,(x-30)*10,x>50,(x-50)*20+20*10)條件條件條件值值值2.Switch函數將If語句改寫成使用Switch函數:287.2SelectCase語句(多分支語句)格式:
SelectCase<測試表達式>
Case表達式列表1
<語句塊1>
Case表達式列表2
<語句塊2>
……
[CaseElse
<語句塊n+1>]
EndSelect7.2SelectCase語句(多分支語句)297.2SelectCase語句T表達式1語句體1表達式2語句體2T……表達式n語句體n……語句體n+1……T執(zhí)行過程:①計算測試表達式的值;②依次比較各個表達式,符合條件則進入相應的語句體執(zhí)行;③執(zhí)行SelectCase語句的下一條語句。計算測試表達式的值7.2SelectCase語句T表達式1語句體1表達式307.2SelectCase語句注1:測試表達式可以是數值或字符串表達式;注2:各表達式列表
合法的格式:①一個常量或常量表達式②多個常量或常量表達式,用逗號隔開,逗號相當于“或”,如:Case1,3,5,7③表達式1to表達式2,表示從表達式1到表達式2中所有的值,其中表達式1的值必須小于表達式2的值。如:Case1to5④Is關系運算表達式,可以使用的關系運算符為:>、>=、<、<=、<>、=,不可以使用邏輯運算符表示多個范圍。⑤前面四種情況的組合,如CaseIs>10,2,4,6,Is<0
注3:若有多個Case表達式符合條件,則只執(zhí)行第一個符合的Case下的語句體。
7.2SelectCase語句注1:測試表達式可以是數317.2SelectCase語句例:已知變量ch中存放了一個字符,判斷該字符是字母字符、數字字符、空格還是其它字符。(用SelectCase語句改寫)分析:
將各種字符的判斷條件改寫成符合要求的Case條件字母字符:ch>=“a”Andch<=“z”O(jiān)rch>=“A”Andch<=“Z”
“a”To“z”,“A”to“Z”數字字符:ch>=“0”Andch<=“9”
“0”To“9”空格字符:ch=“”
“”
Is=“”實現:SelectCasech
Case“a”To“z”,“A”to“Z”
Print“字母字符”
Case“0”To“9”
Print“數字字符”
Case“”
Print“空格”
CaseElse
Print“其他字符”
EndSelect7.2SelectCase語句例:已知變量ch中存放了327.2SelectCase語句例7-5簡單運算器分析:
運算符的判斷:共四種取值,事先已在ComboBox中SelectCaseCmbop.Text
Case"+"
txtresult=Val(txtX)+Val(txtY)Case"-" txtresult=Val(txtX)-Val(txtY)Case"×" txtresult=Val(txtX)*Val(txtY)Case"÷" txtresult=Val(txtX)/Val(txtY)EndSelect
除數為0?IfVal(txtY)<>0Thentxtresult=Val(txtX)/Val(txtY)ElseMsgBox"被0除"txtY="":txtY.SetFocusEndIf7.2SelectCase語句例7-5簡單運算器Sel337.2SelectCase語句所有SelectCase語句可以替換為If…Then…ElseIf…語句。只有在If語句和每一個ElseIf語句計算相同條件表達式時,才能用SelectCase結構替換If…Then…ElseIf…結構。Ifx<30Theny=0ElseIfx<=50Theny=(x-30)*10Elsey=(x-50)*20+20*10EndIfSelectCasexCaseIs<30y=0Case30To50y=(x-30)*10CaseIs>50y=(x-50)*20+20*10EndSelect7.2SelectCase語句所有SelectCa347.3基本算法及應用7.3.1求兩個數的最大(?。┲?.3.2用戶輸入時按鍵的判斷7.3.3信息的有效性驗證7.3.4單選鈕和復選框的應用
7.3基本算法及應用7.3.1求兩個數的最大(?。┲?57.3.1求兩個數的最大(?。┲捣治觯簝蓚€數的關系無非有3種情形,即:
A>B,A=B,A<B。實現:(最大值)IfA>=BThenMax=AElseMax=B
IfA>BThenMax=AElseMax=B
7.3.1求兩個數的最大(?。┲捣治觯?67.3.2用戶輸入時按鍵的判斷兩種方法:一是在輸入時判斷,使用文本框的Key事件;常用:KeyPress事件(KeyAscii參數)二是在全部輸入完成后再對每個字符進行判斷,使用循環(huán)結構依次獲取字符串中的字符。
例7-7在文本框中輸入一個字符串,要求只能出現字母。PrivateSubText1_KeyPress(KeyAsciiAsInteger)
If(KeyAscii<Asc("a")OrKeyAscii>Asc("z"))And_(KeyAscii<Asc("A")OrKeyAscii>Asc("Z"))ThenKeyAscii=0EndSub7.3.2用戶輸入時按鍵的判斷兩種方法:例7-7在文本框377.3.3信息的有效性驗證例7-8登錄界面設計“確定”按鈕的Click事件過程如下:PrivateSubcmdok_Click()If txtuser.Text=""Ortxtpwd.Text=""ThenMsgBox"請輸入完整信息!"ElseIftxtpwd.Text<>"20082008"ThenMsgBox "密碼錯誤,不能登錄!"txtpwd.Text=""txtpwd.SetFocusElseMsgBox txtuser.Text&",歡迎您!"EndIfEndIfEndSub有效信息:①帳號和密碼都不能空②密碼符合要求這樣的密碼設置方法,安全性差7.3.3信息的有效性驗證例7-8登錄界面設計“確定”按387.3.4單選鈕和復選框的應用單選鈕——多選一在同一組單選鈕中只有一個按鈕的Value屬性值為1,通常使用If…Then…ElseIf…的語句格式進行判斷。復選框——多選多同一組復選框中可以同時有多個被選中,也可以只選中一個,也可以一個都不選中,通常我們對各個復選框進行獨立判斷。
7.3.4單選鈕和復選框的應用單選鈕——多選一397.3.4單選鈕和復選框的應用例7-9根據用戶選擇,求若干門課程的總分或平均分參考代碼如下:PrivateSubcmdCal_Click()DimsumAsInteger,nAsIntegerIfchkChinese.Value=1Thensum=sum+Val(txtChinese.Text):n=n+1IfchkMath.Value=1Thensum=sum+Val(txtMath.Text):n=n+1IfchkEnglish.Value=1Thensum=sum+Val(txtEnglish.Text):n=n+1IfoptTotal.ValueThentxtResult.Text=n&"門課總分:"&vbCrLf&sumElseIfn<>0ThentxtResult.Text=n&"門課平均分:"&vbCrLf&sum/nEndIfEndSub問:變量n的作用是什么?7.3.4單選鈕和復選框的應用例7-9根據用戶選擇,求407.4其他應用舉例例7-10例7-11例7-12例7-137.4其他應用舉例例7-1041例7-10例7-10調整3個文本框中的數值,使其中的數值按小到大的順序排放
Ifa>bThentemp=a:a=b:b=temp'如果a大于b,交換a和b的值Ifa>cThentemp=a:a=c:c=temp'如果a大于c,交換a和c的值Ifb>cThentemp=b:b=c:c=temp'如果b大于c,交換b和c的值例7-10例7-10調整3個文本框中的數值,使其中42例7-11例7-11求一元二次方程ax2+bx+c=0的根根據數學中一元二次方程的求根公式,令:當Δ>0時,方程有兩個不相等的實根;當Δ=0時,方程有兩個相等的實根;當Δ<0時,方程有兩個不相等的虛根。
例7-11例7-11求一元二次方程ax2+bx+c=0的43例7-11Ifa<>0Thendelta=b*b-4*a*cIfdelta>0Thenx1=(-b+Sqr(delta))/(2*a) '第1個根x2=(-b-Sqr(delta))/(2*a) '第2個根txtroot="X1="&x1&Chr(13)&Chr(10)&"X2="&x2ElseIfdelta=0Thenx1=-b/(2*a)txtroot="Twoequalroot,X1=X2="&x1Elsex1=-b/(2*a) '根的實部x2=Sqr(-delta)/(2*a) '根的虛部txtroot="X1="&x1&"+"&x2&"i"&Chr(13)&Chr(10)&"X2="&x1&"-"&x2&"i"EndIfEndIf例7-11Ifa<>0Then44例7-12例7-12編程實現輸入一個整數,判斷其能否被3、5、7整除,并輸出以下信息之一:(1)能被3、5、7整除。(2)能被其中兩個數(要指出哪兩個)整除。(3)能被其中一個數(要指出哪一個)整除。(4)不能被3、5、7任一個整除。例7-12例7-12編程實現輸入一個整數,判斷其能否被345代碼1IfxMod3=0AndxMod5=0AndxMod7=0ThenMsgBox"能被3,5,7整除"IfxMod3=0AndxMod5=0AndxMod7<>0ThenMsgBox"能被3,5整除"IfxMod3=0AndxMod7=0AndxMod5<>0ThenMsgBox"能被3,7整除"IfxMod5=0AndxMod7=0AndxMod3<>0ThenMsgBox"能被5,7整除"IfxMod3=0ThenMsgBox"能被3整除"IfxMod5=0ThenMsgBox"能被5整除"IfxMod7=0ThenMsgBox"能被7整除"代碼1IfxMod3=0AndxMod546代碼2IfxMod3=0AndxMod5=0AndxMod7=0ThenMsgBox"能被3,5,7整除"ElseIfxMod3=0AndxMod5=0AndxMod7<>0ThenMsgBox"能被3,5整除"ElseIfxMod3=0AndxMod7=0AndxMod5<>0ThenMsgBox"能被3,7整除"ElseIfxMod5=0AndxMod7=0AndxMod3<>0ThenMsgBox"能被5,7整除"ElseIfxMod3=0ThenMsgBox"能被3整除"ElseIfxMod5=0ThenMsgBox"能被5整除"ElseIfxMod7=0ThenMsgBox"能被7整除"ElseMsgBox"不能被3、5、7任一數整除"EndIf代碼2IfxMod3=0AndxMod547代碼3IfxMod3=0Thenn=n+1s=s&"3"EndIfIfxMod5=0Thenn=n+1s=s&"5"EndIfIfxMod7=0Thenn=n+1s=s&"7"EndIfIfn<>0ThenMsgBox"能被"&s&"這"&n&"個數整除"ElseMsgBox"不能被任一數整除"EndIf代碼3IfxMod3=0Then48代碼4n=0IfxMod3=0Thenn=n+1EndIfIfxMod5=0Thenn=n+2EndIfIfxMod7=0Thenn=n+4EndIf
SelectCasenCase0:MsgBox"不能被任一數整除"Case1:MsgBox"能被3整除"Case2:MsgBox"能被5整除"Case3:MsgBox"能被3,5整除"Case4:MsgBox"能被7整除"Case5:MsgBox"能
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度企業(yè)培訓中心新生入學服務協(xié)議書3篇
- 2024-2030年中國家庭食物垃圾處理器行業(yè)運行動態(tài)與發(fā)展戰(zhàn)略分析報告
- 2024年度工廠總經理績效考核合同2篇
- 2024年某市區(qū)居民區(qū)垃圾清運服務定制合同
- 2024安置房買賣協(xié)議樣本3篇
- 2024年物流合作共識:貨車租賃合同模板
- 綜合項目-畢業(yè)紀念冊實訓項目指導書
- 2024全新商務辦公樓使用權出售協(xié)議下載3篇
- 2024年度櫥柜定制與綠色建材采購合同3篇
- 2024年度加盟商合作合同5篇
- GB 19517-2004國家電氣設備安全技術規(guī)范
- 模具定期保養(yǎng)點檢表
- 山西省太原市市藥品零售藥店企業(yè)藥房名單目錄
- 工程部長橋梁工程施工技術(PPT116)
- 全面設備保養(yǎng)TPM培訓教材課件
- 茶葉企業(yè)營銷課件
- 高爐無料鐘爐頂設備安裝與調試技術
- 初中語文人教九年級上冊如何分析環(huán)境描寫的作用 教案
- 壓力容器壁厚快速計算
- 抗菌藥物供應目錄備案表
- 關于轉包及違規(guī)分包的關系(特別詳細)
評論
0/150
提交評論