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

下載本文檔

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

文檔簡介

4.2選擇結(jié)構(gòu)程序設(shè)計(jì)有些實(shí)際問題中,往往需要根據(jù)條件成立與否,決定程序的執(zhí)行方向,在不同的條件下,進(jìn)行不同的處理。使用順序結(jié)構(gòu)是無法解決這一問題的,需要用選擇結(jié)構(gòu)。即:

單行結(jié)構(gòu)條件語句If…Then…Else…塊結(jié)構(gòu)條件語句If…Then…EndIf多分支選擇語句SelectCase…EndSelect

以上語句又統(tǒng)稱為條件語句,其功能都是根據(jù)條件或表達(dá)式的值有選擇地執(zhí)行一組語句。一、If語句1、單行結(jié)構(gòu)的If……Then……Else語句格式1:

If<條件>Then<語句體1>[Else<語句體2>]功能:如果<條件>成立,則執(zhí)行<語句體1>,否則執(zhí)行<語句體2>。<條件>可以是關(guān)系表達(dá)式、邏輯表達(dá)式、數(shù)值表達(dá)式或字符串表達(dá)式。

對于數(shù)值表達(dá)式,VB將0作為False、非0作為True處理;對于字符串表達(dá)式,VB只允許包含數(shù)字的字符串,當(dāng)字符串中的數(shù)字值為0時(shí),則認(rèn)為是False,否則認(rèn)為是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時(shí),條件X>0成立,執(zhí)行Then之后的語句X=1+X,使X的值成為5,然后執(zhí)行條件語句之后的語句Y=1-X,使Y的值成為-4,所以輸出Y=-4。

當(dāng)X=-4時(shí),條件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條件表達(dá)式語句體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)條件語句時(shí),首先判斷<條件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<測試表達(dá)式> Case表達(dá)式列表1 <語句塊1> Case表達(dá)式列表2 <語句塊2> …… [CaseElse <語句塊n+1>] EndSelect

根據(jù)<測試表達(dá)式>的值,按順序匹配Case后的表達(dá)式表,如果匹配成功,則執(zhí)行該Case下的語句組,然后轉(zhuǎn)到EndSelect語句之后繼續(xù)執(zhí)行;如果<測試表達(dá)式>的值與各表達(dá)式表都不匹配,則執(zhí)行CaseElse之后的<語句組n>,再轉(zhuǎn)到EndSelect語句之后繼續(xù)執(zhí)行。<測試表達(dá)式>可以是任何數(shù)值表達(dá)式或字符表達(dá)式。Case后的表達(dá)式表可以有如下形式之一:

1)<表達(dá)式1>[,<表達(dá)式2>]…如:Casel,3,5表示<測試表達(dá)式>的值為1或3或5時(shí)將執(zhí)行該Case語句之后的語句組。

2)<表達(dá)式1>TO<表達(dá)式2>

如:Casel0TO30表示<測試表達(dá)式>的值在10到30之間(包括10和30)時(shí)將執(zhí)行該Case語句之后的語句組。

又如:Case“A”TO“Z”表示<測試表達(dá)式>的值在“A”到“Z”之間(包括“A”和“Z”)時(shí)將執(zhí)行該Case語句之后的語句組。

3)Is<關(guān)系運(yùn)算符><表達(dá)式>如:CaseIs>=10表示<測試表達(dá)式>的值大于或等于10時(shí)將執(zhí)行該Case語句之后的語句組。

以上三種方式可以同時(shí)出現(xiàn)在同一個Case語句之后,各項(xiàng)之間用逗號隔開。

如:Casel,3,10T020,Is<0表示<測試表達(dá)式>的值為1或3,或在10到20之間(包括10和20),或小于0時(shí)將執(zhí)行該Case語句之后的語句組。設(shè)從文本框Textl輸人X的值,單擊命令按鈕Commandl計(jì)算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)<測試表達(dá)式>的類型應(yīng)與Case后的表達(dá)式類型一致。2)不可以在Case后的表達(dá)式中使用<測試表達(dá)式>中的變量。3)<測試表達(dá)式>只能是一個變量或表達(dá)式,而不能是變量表或表達(dá)式表。4)不要在Case后直接使用布爾運(yùn)算符來表示條件,例如,要表示條件0<X<100,不能寫成:SelectCaseXCaseX>0AndX<100…EndSelect對于較復(fù)雜的條件,可以用塊If語句來實(shí)現(xiàn),而有些條件完全可以轉(zhuǎn)換成Case語句允許的幾種形式之一.以上三種條件結(jié)構(gòu)都能解決需要多分支處理的問題,但根據(jù)不同的要求選擇適當(dāng)?shù)慕Y(jié)構(gòu)進(jìn)行編程,可以簡化編程,使程序結(jié)構(gòu)更加清楚,便于閱讀和查錯。對于簡單的兩個分支的情況,使用單行結(jié)構(gòu)條件語句就比較方便;使用塊結(jié)構(gòu)條件語句可以處理分支較多,條件較復(fù)雜的情況;而多分支選擇結(jié)構(gòu)更適合于對單一表達(dá)式進(jìn)行多種條件判斷的情況。編程時(shí),使用條件結(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:運(yùn)費(fèi)計(jì)算.規(guī)則如下:50km以內(nèi):運(yùn)費(fèi)=運(yùn)量(t)*距離(km)*1(元)50~100km:運(yùn)費(fèi)=運(yùn)量(t)*距離(km)*0.8(元)101~300km:運(yùn)費(fèi)=運(yùn)量(t)*距離(km)*0.6(元)300km以上:運(yùn)費(fèi)=運(yùn)量(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]簡單運(yùn)算器 本題中運(yùn)算符是由下拉列表框提供給用戶選擇,共有+、-、×、÷四個選項(xiàng) 參考界面如左圖所示,各

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論