版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
4.2選擇結(jié)構(gòu)程序設(shè)計有些實際問題中,往往需要根據(jù)條件成立與否,決定程序的執(zhí)行方向,在不同的條件下,進行不同的處理。使用順序結(jié)構(gòu)是無法解決這一問題的,需要用選擇結(jié)構(gòu)。即:
單行結(jié)構(gòu)條件語句If…Then…Else…塊結(jié)構(gòu)條件語句If…Then…EndIf多分支選擇語句SelectCase…EndSelect
以上語句又統(tǒng)稱為條件語句,其功能都是根據(jù)條件或表達式的值有選擇地執(zhí)行一組語句。一、If語句1、單行結(jié)構(gòu)的If……Then……Else語句格式1:
If<條件>Then<語句體1>[Else<語句體2>]功能:如果<條件>成立,則執(zhí)行<語句體1>,否則執(zhí)行<語句體2>。<條件>可以是關(guān)系表達式、邏輯表達式、數(shù)值表達式或字符串表達式。
對于數(shù)值表達式,VB將0作為False、非0作為True處理;對于字符串表達式,VB只允許包含數(shù)字的字符串,當(dāng)字符串中的數(shù)字值為0時,則認為是False,否則認為是True。
<語句體1>和<語句體2>可以有多條語句,各語句之間用冒號隔開。例4-1:N=5A=3B=9IfN>0ThenA=A+B:B=B+AElseA=A-B:B=B-APRINTA,B
可以沒有Else部分,但必須有<語句體1>。
例如:IfX<>"aaa"ThenPrintX注意:1)單行結(jié)構(gòu)條件語句應(yīng)作為一條語句書寫。如果語句太長需要換行,必須在換行處使用續(xù)行符號,即一個空格跟一個下劃線。
2)無論條件是否成立,單行結(jié)構(gòu)條件語句的出口都是本條件語句之后的語句。
IfX>=0ThenX=1+XElseX=5-XY=1-XPrint“Y=“;Y
當(dāng)X=4時,條件X>0成立,執(zhí)行Then之后的語句X=1+X,使X的值成為5,然后執(zhí)行條件語句之后的語句Y=1-X,使Y的值成為-4,所以輸出Y=-4。
當(dāng)X=-4時,條件X>=0不成立,執(zhí)行Else之后的語句X=5-X,使X的值成為9,然后同樣執(zhí)行條件語句之后的語句Y=1-X,使Y的值成為-8,所以輸出Y=-8。即無論條件X>=0是否成立,都要執(zhí)行If語句后面的語句Y=1-X。3)單行結(jié)構(gòu)條件語句可以嵌套,也就是說,在<語句體1>或<語句體2>中可以包含另外一個單行結(jié)構(gòu)條件語句。例4-2:1(X>0)Y=0(X=0)-1(X<0)IFX>=0THENIFX>0THENY=1ELSEY=0ELSE_Y=-12、塊結(jié)構(gòu)雙分支條件語句If…Then…Else語句
格式1:If<條件>Then<語句體1>[Else<語句體2>]ENDIf
如果<條件>成立,則執(zhí)行<語句體1>,否則執(zhí)行<語句體2>。
FT條件表達式語句體1
If...Then...Else結(jié)構(gòu)流程圖語句體2 [例4-3]判斷文本框中輸入的是否是數(shù)值型數(shù)據(jù)
判斷”按鈕的單擊事件為:PrivateSubcmdjudge_Click()IfIsNumeric(Text1)ThenMsgBox"是數(shù)字"ElseMsgBox"不是數(shù)字"EndIfEndSub書中例4-5:輸入三個數(shù),求其中最大數(shù).注:塊IF結(jié)構(gòu)可以嵌套完整的塊IF結(jié)構(gòu).
1(X>0)例如:Y=0(X=0)-1(X<0)IFX>0THEN Y=1 ELSE
IFX=0THEN Y=0ELSE Y=-1ENDIF ENDIF3、塊結(jié)構(gòu)多分支條件語句If…Then…ElseIf語句格式:If<條件1>Then[<語句組1>][ElseIf<條件2>Then[<語句組2>]]…[Elself<條件N>Then[<語句組n>]][Else[<其他語句組>]]EndIf條件1語句組1條件2語句組2條件n語句組n其他語句組…功能:執(zhí)行該塊結(jié)構(gòu)條件語句時,首先判斷<條件1>是否成立,若成立,則執(zhí)行<語句組1>,若不成立,則繼續(xù)判斷ElseIf子句后的<條件2>是否成立,若成立,則執(zhí)行<語句組2>,否則,繼續(xù)判斷以下的各個條件,依此類推。如果<條件1>到<條件N>都不成立,則執(zhí)行Else子句后面的<其他語句組>。當(dāng)某個條件成立而執(zhí)行了相應(yīng)的語句組后,將不再繼續(xù)往下判斷其他條件,而直接退出塊結(jié)構(gòu),執(zhí)行EndIf之后的語句。[例4-4]求分段函數(shù)
PrivateSubcmdcul_Click() DimxAsDouble,yAsDouble x=Val(Text1.Text) Ifx>10Then y=3*Cos(x)-x^2+9 ElseIfx>3Then y=Sin(x)-2*x Else y=9 EndIf Text2.Text=yEndSub例4-4中的代碼可以改寫為: Ifx>10Then'x>10y=3*Cos(x)-x^2+9 ElseIfx>3Then'3<x≤10 y=Sin(x)-2*x Else'x≤3 y=9 EndIf EndIf其中,Else子句中又包含了一個完整的If語句二、多分支條件選擇語句(SelectCase)
格式: SelectCase<測試表達式> Case表達式列表1 <語句塊1> Case表達式列表2 <語句塊2> …… [CaseElse <語句塊n+1>] EndSelect
根據(jù)<測試表達式>的值,按順序匹配Case后的表達式表,如果匹配成功,則執(zhí)行該Case下的語句組,然后轉(zhuǎn)到EndSelect語句之后繼續(xù)執(zhí)行;如果<測試表達式>的值與各表達式表都不匹配,則執(zhí)行CaseElse之后的<語句組n>,再轉(zhuǎn)到EndSelect語句之后繼續(xù)執(zhí)行。<測試表達式>可以是任何數(shù)值表達式或字符表達式。Case后的表達式表可以有如下形式之一:
1)<表達式1>[,<表達式2>]…如:Casel,3,5表示<測試表達式>的值為1或3或5時將執(zhí)行該Case語句之后的語句組。
2)<表達式1>TO<表達式2>
如:Casel0TO30表示<測試表達式>的值在10到30之間(包括10和30)時將執(zhí)行該Case語句之后的語句組。
又如:Case“A”TO“Z”表示<測試表達式>的值在“A”到“Z”之間(包括“A”和“Z”)時將執(zhí)行該Case語句之后的語句組。
3)Is<關(guān)系運算符><表達式>如:CaseIs>=10表示<測試表達式>的值大于或等于10時將執(zhí)行該Case語句之后的語句組。
以上三種方式可以同時出現(xiàn)在同一個Case語句之后,各項之間用逗號隔開。
如:Casel,3,10T020,Is<0表示<測試表達式>的值為1或3,或在10到20之間(包括10和20),或小于0時將執(zhí)行該Case語句之后的語句組。設(shè)從文本框Textl輸人X的值,單擊命令按鈕Commandl計算Y的值,結(jié)果顯示于文本Text2中:PrivateSubCommand1_Click()-1x<0X=Val(Text1.Text)Y=0x=0SelectCaseX1x>0CaseIs<0Y=-1Case0‘CaseIs=0Y=0CaseIs>0Y=1EndSelectText2.Text=YEndSub例4-5:求符號函數(shù)y的值例4-6:將輸入的百分制成績轉(zhuǎn)換為等級制輸出。注意:1)<測試表達式>的類型應(yīng)與Case后的表達式類型一致。2)不可以在Case后的表達式中使用<測試表達式>中的變量。3)<測試表達式>只能是一個變量或表達式,而不能是變量表或表達式表。4)不要在Case后直接使用布爾運算符來表示條件,例如,要表示條件0<X<100,不能寫成:SelectCaseXCaseX>0AndX<100…EndSelect對于較復(fù)雜的條件,可以用塊If語句來實現(xiàn),而有些條件完全可以轉(zhuǎn)換成Case語句允許的幾種形式之一.以上三種條件結(jié)構(gòu)都能解決需要多分支處理的問題,但根據(jù)不同的要求選擇適當(dāng)?shù)慕Y(jié)構(gòu)進行編程,可以簡化編程,使程序結(jié)構(gòu)更加清楚,便于閱讀和查錯。對于簡單的兩個分支的情況,使用單行結(jié)構(gòu)條件語句就比較方便;使用塊結(jié)構(gòu)條件語句可以處理分支較多,條件較復(fù)雜的情況;而多分支選擇結(jié)構(gòu)更適合于對單一表達式進行多種條件判斷的情況。編程時,使用條件結(jié)構(gòu)語句尤其要注意兩個問題,一是條件的書寫,二是不同語句結(jié)構(gòu)之間的格式區(qū)別。例4-7判斷用戶輸入的用戶名和密碼是否正確。PrivateSubCommand1_Click()IfText1.Text="王剛"ThenIfUCase(Text2.Text)="ABCDE"ThenMsgBox"口令正確!"ElseBeepMsgBox"口令錯誤!"EndEndIfElseBeepMsgBox"用戶名錯誤!"EndEndIfPrintPrintSpc(20);"歡迎使用!"EndSub例4-8:運費計算.規(guī)則如下:50km以內(nèi):運費=運量(t)*距離(km)*1(元)50~100km:運費=運量(t)*距離(km)*0.8(元)101~300km:運費=運量(t)*距離(km)*0.6(元)300km以上:運費=運量(t)*距離(km)*0.5(元)PrivateSubCommand2_Click()Dimy1,j1,yfAsSingley1=Text1.Textj1=Text2.TextSelectCasej1CaseIs<50yf=y1*j1*1Case50To100yf=y1*j1*0.8Case101To300yf=y1*j1*0.6CaseIs>300yf=y1*j1*0.5EndSelectText3.Text=CStr(yf)EndSubPrivateSubCommand1_Click()Text1.Text=""Text2.Text=""Text3.Text=""EndSubPrivateSubCommand3_Click()EndEndSub [例6-4]簡單運算器 本題中運算符是由下拉列表框提供給用戶選擇,共有+、-、×、÷四個選項 參考界面如左圖所示,各
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (2025年)安全食品考試試題附參考答案
- 食品安全考試題及答案2025年
- 2025年重慶經(jīng)貿(mào)職業(yè)學(xué)院招聘筆試真題附答案詳解
- 2026浙江杭州聯(lián)合銀行招聘4人備考題庫及一套答案詳解
- 廣東中山市神灣神舟學(xué)校2026年春季中學(xué)教師招聘5人備考題庫及完整答案詳解一套
- 2026河南新鄉(xiāng)育才高級中學(xué)、新鄉(xiāng)市育才實驗學(xué)校教師招聘備考題庫及答案詳解一套
- 2026陜西安康石泉縣物業(yè)管理與房產(chǎn)交易所公益性崗位招錄備考題庫含答案詳解
- 2026浙江溫州市中國聯(lián)通蒼南縣分公司招聘備考題庫及1套參考答案詳解
- 2026黑龍江二龍濤濕地省級自然保護區(qū)管護中心公益性崗位招聘5人備考題庫及答案詳解(易錯題)
- 技術(shù)創(chuàng)新項目可行性分析與報告模板
- 醫(yī)院患者風(fēng)險評估表及管理流程
- GB/T 21790-2025閃點的測定用小型閉杯試驗儀測定閃燃非閃燃和閃點的方法
- 肝臟代謝重編程-洞察與解讀
- 2025年無人機電池?zé)峁芾砑夹g(shù)在低空經(jīng)濟中的應(yīng)用前景報告
- 2025年水利工程質(zhì)量檢測員資格考試模擬試題:(混凝土工程)復(fù)習(xí)題庫及答案
- 龍湖物業(yè)質(zhì)量管理標(biāo)準(zhǔn)操作手冊
- 《腹部手術(shù)圍手術(shù)期疼痛管理指南(2025版)》解讀
- 采購辦公家具知識培訓(xùn)課件
- 2025年醫(yī)療器械經(jīng)營自查報告
- 道路硬化安全施工方案
- 《硅墨烯保溫裝飾一體板應(yīng)用技術(shù)規(guī)程》
評論
0/150
提交評論