版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章選擇結(jié)構(gòu)程序設(shè)計(jì)關(guān)系表達(dá)式和邏輯表達(dá)式用行IF語句實(shí)現(xiàn)選擇結(jié)構(gòu)用塊IF實(shí)現(xiàn)選擇多分支選擇結(jié)構(gòu)多分支轉(zhuǎn)移語句選擇結(jié)構(gòu)程序設(shè)計(jì)2020/12/111問題的提出在實(shí)際問題中,要求計(jì)算機(jī)進(jìn)行邏輯判斷,即給出一個(gè)條件,讓計(jì)算機(jī)判斷是否滿足條件,并按照判斷的結(jié)果來做不同的處理。從鍵盤輸入一個(gè)數(shù),如果是正數(shù)則打印出來,否則不做任何處理;將學(xué)生中成績(jī)不合格者打印出來;將職工工資低于300元者打印出來;根判別式b2-4ac<0,則終止程序執(zhí)行,否則求解。2020/12/112關(guān)系運(yùn)算符關(guān)系運(yùn)算符含義相當(dāng)于數(shù)學(xué)符號(hào)舉例>大于>a>b<小于<x<y=等于=c=d>=大于等于≥e>=-1<=小于等于≤h<=I<>不等于≠u<>v2020/12/113關(guān)系表達(dá)式用一個(gè)關(guān)系運(yùn)算符把兩個(gè)運(yùn)算量(數(shù)值量或字符串)聯(lián)結(jié)起來稱關(guān)系表達(dá)式;每個(gè)關(guān)系表達(dá)式都有一個(gè)值,這個(gè)值稱作邏輯值(即“真”或“假”);在QBASIC中,如果表達(dá)式不成立,即“假”,則此表達(dá)式的值為“0”,否則為“-1”;舉例:PRINT15>13,13>15運(yùn)行結(jié)果:-102020/12/114邏輯運(yùn)算符問題的提出:如果需要判斷一個(gè)數(shù)是否滿足0≤x≤10,語句IF0=<x<=10THEN語句1ELSE語句2是錯(cuò)誤的,因?yàn)樵赒B中只能使用簡(jiǎn)單的關(guān)系表達(dá)式。IFx>=0ANDx<=10THEN語句1ELSE語句2(正確)QB的邏輯運(yùn)算符:
AND(與):所聯(lián)結(jié)的關(guān)系表達(dá)式必須同時(shí)成立才為真;
OR(或):所聯(lián)結(jié)的關(guān)系表達(dá)式只要有一個(gè)為真,即為真;
NOT(非):將原來的邏輯值取反。2020/12/115邏輯運(yùn)算符的運(yùn)算規(guī)則ABAANDBAORBNOTANOTB真真真真假假真假假真假真假真假真真假假假假假真真2020/12/116邏輯表達(dá)式的預(yù)算次序一個(gè)邏輯表達(dá)式一般包括邏輯運(yùn)算符、關(guān)系表達(dá)式或其他運(yùn)算量;算術(shù)運(yùn)算→關(guān)系運(yùn)算→邏輯運(yùn)算(NOT→AND→OR)如以下表達(dá)式,其中a=5,b=3,c=-2,d=8a-c>b+dORc>dANDABS(c)=aORNOTc>d+57>11ORc>dAND2=aORNOTc>13假OR假AND假ORNOT假假OR假OR真真2020/12/117IF語句語法:IF關(guān)系表達(dá)式THEN語句1[ELSE語句2]在IF語句中,實(shí)際是判別關(guān)系表達(dá)式的邏輯值是零還是非零。如果是非零(即條件成立),則執(zhí)行THEN后的語句,否則執(zhí)行ELSE后的語句(有ELSE語句?。F5>3THENPRINT“Thisistrue.”ELSEPRINT“Thisisfalse”IF3>5THENPRINT“Thisistrue.”ELSEPRINT“Thisisfalse”IF2THENPRINT“Thisistrue.”ELSEPRINT“Thisisfalse”IF0THENPRINT“Thisistrue.”ELSEPRINT“Thisisfalse”表達(dá)式的邏輯值可以賦值給變量:x=5>3x=5=32020/12/118用行IF語句實(shí)現(xiàn)選擇結(jié)構(gòu)行IF語句有二種形式:(1)IF條件THEN語句例如:IFx>0THENPRINTx(2)IF條件THEN語句1ELSE語句2例如:IFx>0THENPRINTxELSEPRINT–x一般形式:IF條件THEN語句1[ELSE語句2]求解一元二次方程ax2+bx+c=0(參見SAMP4-2.BAS)輸入a,b,cd=b2-4acp=-b/2ad≥0是否x1=p+qx2=p-qx1=p+q”i”x2=p-q”i”2020/12/119選擇結(jié)構(gòu)的嵌套在一個(gè)選擇結(jié)構(gòu)中包含另外一個(gè)選擇結(jié)構(gòu),就稱為選擇結(jié)構(gòu)的嵌套y=0(x=0)1(x>0)-1(x<0)舉例:輸入xx>0是否y=1x=0是否y=0y=-1INPUT“Pleaseinputx”IFx>0THENy=1ELSEIFx=0THENy=0ELSEy=-1PRINT“y=“;y:END
2020/12/1110對(duì)選擇結(jié)構(gòu)的嵌套的理解選擇結(jié)構(gòu)的嵌套實(shí)際上是把一個(gè)IF結(jié)構(gòu)的語句作為它外層IF結(jié)構(gòu)的THEN或ELSE子句中應(yīng)該執(zhí)行的語句。對(duì)比:IF邏輯表達(dá)式THEN語句1ELSE語句2IFx>0THENy=1ELSEIFx=0THENy=0ELSEy=-1IFx>=0THENIFx>0THENy=1ELSEy=0ELSEy=-1內(nèi)層IF-ELSE外層IF-ELSEIFx>=0THENIFx>0THENy=1ELSEy=-1IFx>=0THENIFx>0THENy=1ELSEy=-1內(nèi)層IF-ELSEIFx>=0THENIFx>0THENy=1ELSEy=-1內(nèi)層IF-ELSE√規(guī)定:ELSE與離它最近的IF配對(duì)2020/12/1111關(guān)于選擇結(jié)構(gòu)嵌套的兩點(diǎn)說明將內(nèi)層的THEN子句和ELSE子句寫全,即使不需要ELSE子句,也應(yīng)寫上ELSE子句,后面不跟任何語句。內(nèi)層IF-ELSE外層IF-ELSEIFx>=0THENIFx>0THENy=1
ELSEELSEy=-1盡量將內(nèi)嵌的IF結(jié)構(gòu)放在外層IF的ELSE子句中,而不放在THEN子句中,由于內(nèi)層IF出現(xiàn)在外層IF的ELSE子句中,內(nèi)層的ELSE只能與其前面的IF配對(duì),而IF是在外層的ELSE右邊,由于有外層IF的ELSE隔開,所以內(nèi)層的ELSE絕不會(huì)越過外層的ELSE與外層的IF配對(duì)。IFx>0THENy=1ELSEIFx=0THENy=0ELSEy=-1內(nèi)層IF-ELSE外層IF-ELSE2020/12/1112利用塊IF實(shí)現(xiàn)選擇結(jié)構(gòu)語法:IF條件THEN
語句組1ELSE
語句組2ENDIFy=0(x=0)1(x>0)-1(x<0)舉例:INPUT“Pleaseinputx:”;xIFx>0y=1ELSE
IFx=0y=0
ELSEy=-1
ENDIFENDIFPRINT“x=”;x,”y=”;yEND2020/12/1113塊IF實(shí)現(xiàn)選擇結(jié)構(gòu)舉例舉例(P108,sam4-6.bas):d=0.05(250≤m<500)0(m<250)0.075(500≤m<1000)0.1(1000≤m<2000)0.15(2000≤m)2020/12/1114ELSEIF語句實(shí)現(xiàn)選擇結(jié)構(gòu)語法:IF條件THEN
語句組1ELSEIF條件2THEN
語句組2ELSEIF條件2THEN
語句組3……..ELSEIF條件2THEN
語句組nELSE
語句組n+1
ENDIFINPUT“Pleaseinputyourmoneyforbuying:”,mIFm<250THENd=0ELSEIFm<500THENd=0.05ELSEIFm<1000THENd=0.075ELSEIFm<2000THENd=0.1ELSEd=0.15ENDIamout=m*(1-d)PRINT“amount=”;amountEND2020/12/1115基本要求掌握邏輯運(yùn)算的基本概念掌握行IF語句和塊IF結(jié)構(gòu)的使用2020/12/1116多分支選擇結(jié)構(gòu)(SELECTCASE結(jié)構(gòu))語法:SELECTCASE表達(dá)式
CASE條件1
語句組1CASE條件2
語句組2……CASEELSE
語句組nENDSELECTy=0(x=0)1(x>0)-1(x<0)舉例:INPUT“Pleaseenterx:”,xSELECASExCASEIS>0y=1CASEIS=0y=0CASEIS<0y=-1ENDSELECTPRINT“x=”;x,”y=”;yEND2020/12/1117SELECTCASE結(jié)構(gòu)舉例有一筆款欲存銀行,三年后取出,可以采取幾種方案之一:活期3年;3次一年定息(每年到期后取出,在重新存入);先存一次2年定期,在存一次1年定期;先存一次1年定期,在存一次2年定期;3年定期。假設(shè)存款年利率為: 活期:1.5% 1年期:4% 2年期:4.5% 3年期:5.1%求本、利和的公式:p=p0*(1+r)n(其中:r為年利率,n為存款年數(shù))(參見samp4-9.bas)2020/12/1118關(guān)于SELECTCASE結(jié)構(gòu)的幾點(diǎn)說明(I)SELECTCASE行后的表達(dá)式稱“CASE表達(dá)式”,又可稱“測(cè)試表達(dá)式”,它可以是一個(gè)變量或表達(dá)式,如a+b,sin(x)CASE后的條件有如下三種形式:常量;用“TO”指定一個(gè)范圍,如3 TO4,8TO23;用“IS”指定一個(gè)條件,其一般形式為:IS<關(guān)系運(yùn)算符><表達(dá)式>,當(dāng)“條件”為一個(gè)關(guān)系條件時(shí),不能包含邏輯運(yùn)算符,如IS<6(正確),ISNOT<6(錯(cuò)誤,不能包含邏輯運(yùn)算符)??梢栽谝粋€(gè)CASE中使用多個(gè)條件,多個(gè)條件時(shí),各個(gè)條件之間的關(guān)系是“邏輯或”的關(guān)系,如CASE1,3,5,7CASE1TO5,8TO10,IS>100CASEIS>=0,IS<=100(各個(gè)條件之間的關(guān)系是“邏輯或”的關(guān)系,所以-∞<x<∞)2020/12/1119關(guān)于SELECTCASE結(jié)構(gòu)的幾點(diǎn)說明(II)不同CASE子句中的“條件”不應(yīng)當(dāng)重復(fù),重復(fù)雖然不會(huì)報(bào)告錯(cuò)誤,只是出現(xiàn)操作上的矛盾,例如:
SELECTCASEa CASE1,2,3 PRINT“1-3” CASEIS>0 PRINT“>0” CASE2TO10 PRINT“2-10”ENDSELECT除了CASEELSE
子句外,其他CASE子句的順序?qū)?zhí)行結(jié)果沒有影響,如果把CASEELSE子句放在最前,則首先執(zhí)行的是CASEELSE子句,而認(rèn)為前面的CASE子句均不符合條件,例如:
SELECTCASEINT(m) CASEELSE d=0.15 CASEIS<250 d=0 CASE250TO499 d=0.05ENDSELECT2020/12/1120多分支轉(zhuǎn)移語句(ONGOTO
語句)語法:ON算術(shù)表達(dá)式GOTO行號(hào)或行標(biāo)號(hào)1,行號(hào)或行標(biāo)號(hào)2,行號(hào)或行標(biāo)號(hào)3……
例如:ONxGOTOa,b,c,d當(dāng)x=1時(shí),執(zhí)行行標(biāo)號(hào)為a的語句行;當(dāng)x=2時(shí),執(zhí)行行標(biāo)號(hào)為b的語句行;當(dāng)x=3時(shí),執(zhí)行行標(biāo)號(hào)為c的語句行;當(dāng)x=4時(shí),執(zhí)行行標(biāo)號(hào)為d的語句行。y=0(x=0)1(x>0)-1(x<0)舉例:INPUT“Enterx:”,xs=SGN(x)ONs+2GOTOa,b,ca:y=-1:GOTOdb:y=0:GOTOdc:y=1:GOTOdd:PRINT“x=”;x,”y=”;yEND2020/12/1121選擇結(jié)構(gòu)程序設(shè)計(jì)舉例例1:輸入一個(gè)年份(例如1999),要求判斷它是否是閏年。
分析: 判斷閏年的條件是:能被4整除但不能被100整除的是閏年,如1992年;能被4整除又能被400整除的是閏年,如2000年;其他為非閏年。
(參見:s4-11-1.bas,s4-11-2.bas,s4-11-3.bas,s4-11-4.bas)2020/12/1122INPUT"Pleaseinputyear:";yearPRINTyear;"is";IF(yearMOD4=0ANDyearMOD100<>0)ORyearMOD400=0THENPRINT"aleapyear!"ELSEPRINT"NOTaleapyear!"ENDs4-11-1.bas用行IF語句實(shí)現(xiàn)選擇2020/12/1123
s4-11-2.bas用塊IF結(jié)構(gòu)實(shí)現(xiàn)選擇INPUT"Pleaseinputyear:";yearPRINTyear;"is";IF(yearMOD4=0ANDyearMOD100<>0)ORyearMOD400=0THENPRINT"aleapyear!"ELSEPRINT"NOTaleapyear!"ENDIFEND2020/12/1124s4-11-3.bas逐個(gè)條件判斷INPUT"Pleaseinputyear:";yearIFyearMOD4=0THENIFyearMOD100=0THEN
IFyearMOD400=0THENleap=1ELSEleap=0ENDIFELSEleap=1ENDIFELSEleap=0ENDIFIFleap=1THENPRINTyear;"isaleapyear!"ELSEPRINTyear;"isNOTaleapyear!"ENDIFEND2020/12/1125s4-11-4.bas在塊IF結(jié)構(gòu)使用ELSEIF語句實(shí)現(xiàn)選擇INPUT"Pleaseinputyear:";yearIFyearMOD4<>0THENleap=0ELSEIFyearMOD100<>0THENleap=1ELSEIFyearMOD400=0THENleap=1ELSEleap=0ENDIFIFleap=1THENPRINTyear;"isaleapyear!"ELSEPRINTyear;"isNOTaleapyear!"ENDIFEND2020/12/1126選擇結(jié)構(gòu)程序設(shè)計(jì)舉例例2有一城市,規(guī)劃建設(shè)1個(gè)中心城和4個(gè)衛(wèi)星城。中心城的邊長(zhǎng)20公里,衛(wèi)星城邊長(zhǎng)為5公里,均為正方形,中心城的地價(jià)為每公頃10萬,衛(wèi)星城為5萬,其他地區(qū)1萬。編程序,輸入任意一點(diǎn)的位置,確定該點(diǎn)的地價(jià)。-10-20ⅡⅠⅣⅢ-202020-101010中心城的范圍:|x|≤10AND|y|≤10衛(wèi)星城的范圍:20≤|x|≤25AND20≤|y|≤252020/12/1127s4-12-1.bas在塊IF結(jié)構(gòu)使用ELSEIF語句實(shí)現(xiàn)選擇INPUT"Pleaseinputyourcoordinate:";x,yIFABS(x)<=10ANDABS(y)<=10THENprice=10ELSEIF(ABS(x)>=20ANDABS(x)<=25)AND(ABS(y)>=20ANDABS(y)<=25)THENprice=5ELSEprice=1ENDIFPRINT"Price=";priceEND2020/12/1128s4-12-2.bas用3個(gè)行IF語句實(shí)現(xiàn)選擇INPUT"Pleaseinputyourcoordinate:";x,yIFABS(x)<=10ANDABS(y)<=10THENprice=10IF(ABS(x)>=20ANDABS(x)<=25)AND(ABS(y)>=20ANDABS(y)<=25)THENprice=5IFNOT(ABS(x)<=10ANDABS(y)<=10)ANDNOT(ABS(x)>=20ANDABS(x)<=25ANDABS(y)>=20ANDABS(y)<=25)THENprice=1PRINT"Price=";priceEND2020/12/1129s4-12-3.bas用2個(gè)行IF語句實(shí)現(xiàn)選擇INPUT"Pleaseinputyourcoordinate:";x,yprice=1IFABS(x)<=10ANDABS(y)<=10THENprice=10IFABS(x)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人綜合授信貸款合同范文
- 個(gè)人房屋租賃合同樣本范本
- 個(gè)人房產(chǎn)轉(zhuǎn)讓合同樣本修訂版
- 中小學(xué)教師工資集體合同范本
- 業(yè)務(wù)員委托合同范本
- 個(gè)人小額信貸合同樣本
- 個(gè)人設(shè)備租賃標(biāo)準(zhǔn)合同
- 個(gè)人車輛保險(xiǎn)合同標(biāo)準(zhǔn)模板
- 個(gè)人友情借款合同樣本
- 個(gè)人合伙投資合同格式范本
- 2025年廣西教育出版社有限公司招聘筆試參考題庫(kù)含答案解析
- 中醫(yī)膏方臨床應(yīng)用與制備工藝規(guī)范 DB32/T 4870-2024
- JJG(交通) 208-2024 車貨外廓尺寸動(dòng)態(tài)現(xiàn)場(chǎng)檢測(cè)設(shè)備
- 蘇北四市(徐州、宿遷、淮安、連云港)2025屆高三第一次調(diào)研考試(一模)英語試卷(含答案)
- 2025年信息系統(tǒng)集成服務(wù)公司組織架構(gòu)和業(yè)務(wù)流程
- 西藏自治區(qū)拉薩市城關(guān)區(qū)多校2024-2025學(xué)年六年級(jí)上學(xué)期期中英語試題
- 胸外科講課全套
- 氣功修煉十奧妙
- 勾股定理的歷史與證明課件
- 中醫(yī)診斷學(xué)八綱辨證課件
- 淺談如何有效提高小學(xué)數(shù)學(xué)教學(xué)質(zhì)量課件
評(píng)論
0/150
提交評(píng)論