




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章控制語句與程序調(diào)試學(xué)習(xí)目標(biāo):掌握If條件語句和SelectCase選擇語句掌握For…Next和Do…Loop循環(huán)語句掌握兩重循環(huán),了解多重循環(huán)了解Exit、End和Goto語句掌握程序的簡單調(diào)試方法第3章控制語句與程序調(diào)試
教學(xué)內(nèi)容:
3.1選擇結(jié)構(gòu)與相關(guān)語句
3.2循環(huán)語句
3.3其它語句
3.4程序調(diào)試3.1選擇結(jié)構(gòu)選擇結(jié)構(gòu):當(dāng)設(shè)定條件成立時(shí)執(zhí)行某些語句,條件不成立時(shí)則跳過這些語句或執(zhí)行其它的語句。選擇結(jié)構(gòu)中要使用選擇語句,有兩路分支和多路分支兩種情況,對應(yīng)的選擇語句有If語句(兩路出口)和SelectCase語句(多路出口)。
3.1選擇結(jié)構(gòu)-If條件語句
1.If<表達(dá)式>Then<語句>
其中,<表達(dá)式>是一個(gè)條件表達(dá)式或邏輯表達(dá)式
例如,IfData>=90ThenPrint“優(yōu)秀”
[例]輸入一個(gè)數(shù),如果是3的倍數(shù)則通過消息框輸出。
PrivateSubForm_Click()DimDataAsIntegerData=InputBox("請輸入一個(gè)值:")IfDataMod3=0ThenMsgBoxDataEndSubData是3的倍數(shù)
Data>=90?輸出“優(yōu)秀”YesNoData>=90?輸出“優(yōu)秀”YesNo輸出“合格”輸出“計(jì)算完畢”3.1選擇結(jié)構(gòu)-If條件語句
2.If<表達(dá)式>Then<語句1>Else<語句2>
例如,DimDataAsIntegerData=InputBox(“請輸入成績:")IfData>=90ThenPrint“優(yōu)秀”ElsePrint“合格”
Print"計(jì)算完畢"
上例的If語句可以改寫為:
IfData<90ThenPrint"合格"ElsePrint"優(yōu)秀"
編寫程序計(jì)算電話通信費(fèi):通過輸入對話框輸入通話時(shí)間(分鐘),計(jì)算電話費(fèi)。話費(fèi)計(jì)算方法:3分鐘或以內(nèi)0.20元,超過3分鐘部分,1分鐘0.10元3.1選擇結(jié)構(gòu)-If條件語句
3.塊狀I(lǐng)f語句If<條件表達(dá)式>Then<語句塊>EndIf
If<條件表達(dá)式>Then<語句塊1>Else<語句塊2>EndIf
例:改變窗體的背景色:首次單擊為紅色,再次單擊則為藍(lán)色,以后的單擊為紅、藍(lán)交替。窗體背景色的屬性為BackColor例:用塊狀I(lǐng)f語句改寫上述話費(fèi)程序。3.1選擇結(jié)構(gòu)-If條件語句
4.If語句嵌套
If語句嵌套使用可形成多分支的條件語句結(jié)構(gòu)
If
<條件表達(dá)式1>Then<語句1>
ElseIf
<條件表達(dá)式2>Then<語句2>
Else<語句3>EndIf說明:
ElseIf之間不要加空格。
Else和位于其上方的最近的If配對3.1選擇結(jié)構(gòu)-If條件語句
[例]Weight=InputBox("輸入西瓜重量:","計(jì)算西瓜款")IfWeight<4ThenPrice=1ElseIfWeight<=7ThenPrice=1.3ElsePrice=1.1EndIfMoney=Price*WeightMsgBox“西瓜重”&Weight&“公斤,單價(jià)”&_Price&"元,應(yīng)收瓜款"&Money&_"元",,"計(jì)算西瓜款"4公斤以下:1.00元/公斤4至7公斤:1.3元/公斤超過7公斤:1.1元/公斤
IfWeight<4ThenPrice=1IfWeight>=4AndPrice<=7ThenPrice=1.3IfWeight>7ThenPrice=1.1
3.1選擇結(jié)構(gòu)-If條件語句
[例
(P43例3-4)]
Char=InputBox("輸入一個(gè)字符","測試字符值")IfChar>="0"AndChar<="9"ThenMsgBox"輸入的字符是數(shù)字"ElseIfChar>="A"AndChar<="Z"ThenMsgBox"輸入的字符是大寫字母"ElseIfChar>="a"AndChar<="z"ThenMsgBox"輸入的字符是小寫字母"ElseMsgBox"輸入的字符是其它符號(hào)"EndIf判斷輸入的是大寫字母、小寫字母、數(shù)字還是其它符號(hào)
3.1選擇結(jié)構(gòu)-If條件語句
[例]
PrivateSubCommand1_Click()'單擊“正確無誤”按鈕
IfLen(TxtCode.Text)<8ThenLblWarn.Caption="考核證號(hào)必須輸入,長度為8位"TxtCode.SetFocusElseIfLen(TxtName.Text)=0ThenLblWarn.Caption="考生姓名必須輸入"TxtName.SetFocusElseIfLen(TxtSeat.Text)=0ThenLblWarn.Caption="座位號(hào)必須輸入"TxtSeat.SetFocusElseLblWarn.Caption=""Debug.PrintTxtCode.TextDebug.PrintTxtName.TextDebug.PrintTxtSeat.TextEndIfEndSub
[P45例3-5]3.1選擇結(jié)構(gòu)-SelectCase選擇語句語法格式:
SelectCase<測試表達(dá)式>Case<表達(dá)式1><語句1>Case<表達(dá)式2><語句2>………[CaseElse<語句n+1>]EndSelect功能:根據(jù)測試表達(dá)式的值,決定程序的流向。
<測試表達(dá)式>值的類型是數(shù)值型、字符串型、日期型等,一旦與某個(gè)Case后的<表達(dá)式>值相等,則執(zhí)行這個(gè)Case中的<語句>,完成后執(zhí)行EndSelect后的語句。如果所有的Case后的<表達(dá)式>都不與<測試表達(dá)式>項(xiàng)匹配,則執(zhí)行CaseElse后的<語句>。
3.1選擇結(jié)構(gòu)-SelectCase選擇語句[例]學(xué)生成績分等
Data=InputBox("請輸入一個(gè)成績","成績分等")SelectCaseInt(Data/10)Case10MsgBox"滿分",,"成績分等"Case9MsgBox"優(yōu)秀",,"成績分等"Case8MsgBox"良好",,"成績分等"Case7MsgBox"一般",,"成績分等"Case6MsgBox"合格",,"成績分等"CaseElseMsgBox"不合格",,"成績分等"EndSelect單擊窗體確定3.1選擇結(jié)構(gòu)-SelectCase選擇語句[例]測試輸入的字符
Char=InputBox("請輸入一個(gè)字符","測試")SelectCaseCharCase"0"To"9"MsgBox"字符是數(shù)字",,"測試"Case"a"To"z"MsgBox"字符是小寫字母",,"測試"Case"A"To"Z"MsgBox"字符是大寫字母",,"測試"CaseElseMsgBox"字符是其它符號(hào)",,"測試"EndSelectSelectCase語句適合于表達(dá)簡單的條件
[例]已知10月1日是星期二,輸入10月份內(nèi)某天日期,輸出星期。
確定單擊窗體
3.2循環(huán)語句
程序的另一種結(jié)構(gòu)是循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)作用是重復(fù)執(zhí)行一段程序循環(huán)是有條件的、次數(shù)是有限的
VB的循環(huán)語句:For…Next、DoWhile…LoopForEach…Next、While…Wend
應(yīng)用最多的:For…Next與DoWhile…Loop3.2循環(huán)語句-For…Next循環(huán)For…Next循環(huán):一般應(yīng)用于循環(huán)次數(shù)已知的場合
For<循環(huán)變量>=初值To終值[Step步長]
語句塊(循環(huán)體)
Next[循環(huán)變量]
工作原理
循環(huán)變量=初值循環(huán)變量超出范圍?循環(huán)體循環(huán)變量增加一個(gè)步長NoYesStep缺省為1
3.2循環(huán)語句-For…Next循環(huán)[例3.8]求1+3+5+7+…+99PrivateSubForm_Click()DimSumAsInteger,IAsIntegerSum=0'保存累加和,先清零
ForI=1To99Step2Sum=Sum+INextIMsgBox"1+3+5+…+99="&Sum,,"求和"EndSub
本例的特點(diǎn)是數(shù)據(jù)項(xiàng)之間相差2,即Step的值為2
思考:例中當(dāng)輸出對話框出現(xiàn)時(shí),I的值是多少?如果省略Step2,程序的結(jié)果如何?For語句能不能改寫成ForI=99To1Step-2?
例:生成10個(gè)兩位隨機(jī)正整數(shù)并輸出,求和,并輸出其中的最大值、最小值通過鍵盤輸入一個(gè)正整數(shù)(大于1),判斷其是否為質(zhì)數(shù)。質(zhì)數(shù)是只能被1和自身整除的正整數(shù)。如2、3、5、7、11、13、17等等。Exitfor3.2循環(huán)語句-For…Next循環(huán)[例3.9]求平均成績
ConstN=10
'學(xué)生人數(shù)PrivateSubForm_Click()DimSumAsInteger,IAsIntegerDimDataAsInteger,AverageAsSingleSum=0'存放累加值的變量清零
ForI=1ToN
'循環(huán)40次,步長值為1省略
Data=InputBox("輸入第"&I&"位同學(xué)的成績","求平均分")Sum=Sum+Data
NextIAverage=Sum/NMsgBox"全班"&N&"名學(xué)生的平均分為"&Average,,"求平均分"EndSub
確定本例的循環(huán)變量I控制人數(shù)3.2循環(huán)語句-For…Next循環(huán)[例3.11]求斐波那契級數(shù)的前20項(xiàng)(1,1,2,3,5,8,13,21,34,……)
PrivateSubForm_Click()DimA,B,I,TAsIntegerA=1:B=1'生成級數(shù)第一、二項(xiàng)
PrintA;B;
ForI=
3To20T=A+B'產(chǎn)生級數(shù)新的一項(xiàng)
A=B'讓B成為下一組的AB=T'原來A+B的值成為下一組的BPrintB;
IfIMod6=0ThenPrint
NextIEndSub斐波那契級數(shù):第一、二項(xiàng)為1第三項(xiàng)開始,每一項(xiàng)的值是前兩項(xiàng)值之和
每6個(gè)數(shù)一行3.2循環(huán)語句-Do…Loop循環(huán)1.當(dāng)型循環(huán):較多應(yīng)用在循環(huán)次數(shù)事先未知的場合
DoWhile<條件表達(dá)式>
循環(huán)體LoopDo
循環(huán)體LoopWhile<條件表達(dá)式>
條件表達(dá)式成立?循環(huán)體NoYes條件表達(dá)式成立?循環(huán)體NoYes先判斷后執(zhí)行
先執(zhí)行后判斷特點(diǎn):條件表達(dá)式成立執(zhí)行循環(huán)體內(nèi)容
3.2循環(huán)語句-Do…Loop循環(huán)[例3.12]計(jì)算若干位學(xué)生的平均分,以-1為輸入結(jié)束標(biāo)志
PrivateSubForm_Click()DimDataAsInteger,SumAsInteger,NAsIntegerDimAverageAsSingleSum=0:N=0Data=InputBox("輸入第"&N+1&"個(gè)同學(xué)的成績","求平均分")DoWhileData<>-1
'-1表示結(jié)束輸入
Sum=Sum+DataN=N+1Data=InputBox("輸入第"&N+1&"個(gè)同學(xué)的成績","求平均分")
LoopAverage=Sum/NMsgBoxN&"位同學(xué)的平均分為"&Average,,"求平均分"EndSub3.2循環(huán)語句-Do…Loop循環(huán)[例3.13]Sum=1+2+3+…+N
求Sum不超過10000的最大整數(shù)值和數(shù)據(jù)項(xiàng)數(shù)N
PrivateSubForm_Click()DimSum,NAsIntegerN=0'開始時(shí)項(xiàng)數(shù)為0Sum=0'保存累加值的變量Sum清零
DoWhileSum<=10000N=N+1Sum=Sum+NLoopSum=Sum-NN=N-1Print"Sum=";Sum,"N=";NEndSub當(dāng)Sum的值超出10000時(shí)循環(huán)才終止。因此Sum值要減去多加的一個(gè)N;而在循環(huán)過程中,N也被多加了一個(gè)1,需要減去。
3.2循環(huán)語句-Do…Loop循環(huán)2.直到型循環(huán)
DoUntil<條件表達(dá)式>
循環(huán)體LoopDo
循環(huán)體LoopUntil<條件表達(dá)式>特點(diǎn):條件表達(dá)式不成立執(zhí)行循環(huán)體內(nèi)容
先判斷后執(zhí)行
條件表達(dá)式成立?循環(huán)體NoYes先執(zhí)行后判斷條件表達(dá)式成立?循環(huán)體NoYes3.2循環(huán)語句-Do…Loop循環(huán)[例3.14]計(jì)算平均分(要求同例3.12)
PrivateSubForm_Click()DimDataAsInteger,SumAsInteger,NAsIntegerSum=0:N=0Data=InputBox("輸入成績","計(jì)算總分")DoUntilData=-1Sum=Sum+DataN=N+1Data=InputBox("輸入數(shù)據(jù)","計(jì)算總分")
LoopPrint"全班平均分為:";Sum/NEndSubDoWhileData<>-1
Sum=Sum+DataN=N+1Data=InputBox("輸入數(shù)據(jù)","計(jì)算總分")
Loop補(bǔ)充上機(jī)練習(xí)題:通過輸入對話框輸入5個(gè)數(shù)據(jù),統(tǒng)計(jì)其中正數(shù)、負(fù)數(shù)和零的個(gè)數(shù)。用隨機(jī)函數(shù)生成并輸出20個(gè)兩位數(shù),找出其中的最小值并且指出它是第幾個(gè)數(shù)。有一分式序列:,求該數(shù)列的前20項(xiàng)之和。不使用除法運(yùn)算符“/”、“\”和求余數(shù)運(yùn)算符“Mod”完成兩個(gè)正整數(shù)除法,得到商和余數(shù),例如:22除以4,商為5,余數(shù)2。用公式求求圓周率的近似值,直到最后一項(xiàng)的絕對值小于10-6為止。產(chǎn)生兩個(gè)1~10范圍的隨機(jī)整數(shù),讓小學(xué)生輸入它們的和,答案對輸出“正確”,如果不對則繼續(xù)要求答題3.2循環(huán)語句-兩重循環(huán)兩重循環(huán):在一個(gè)循環(huán)的循環(huán)體中還包含另一個(gè)循環(huán)[例3.15]在窗體上顯示一個(gè)幾何圖形PrivateSubForm_Click()DimI,JAsInteger'I、J為循環(huán)變量
ForI=1To8'I控制行數(shù)(8行)PrintTab(10-I);'定每行*的起始位
ForJ=1ToI
'J控制每行輸出I個(gè)*
Print"*";
NextJPrint'換行
NextIEndSub注意:雙重循環(huán)不能形成交叉
3.2循環(huán)語句-兩重循環(huán)[例3.16]輸出乘法口訣表PrivateSubForm_Click()DimIAsInteger,JAsInteger,MAsIntegerForI=1To9
ForJ=1ToIM=I*JPrintJ&"*"&I&"="&M&"";NextJPrint'打印換行
NextIEndSub練習(xí):P734.(用*輸出集合圖形)3.2循環(huán)語句-兩重循環(huán)[例3.17]計(jì)算
PrivateSubForm_Click()DimIAsInteger,JAsIntegerDimFAsLong'階乘值用長整型保存
DimeAsDouble
ForI=0To10F=1'每個(gè)階乘值先置1以便累乘
ForJ=1ToIF=F*JNextJe=e+1/F
NextIPrint"e=";eEndSub本循環(huán)計(jì)算F=I!3.2循環(huán)語句-多重循環(huán)多重循環(huán):循環(huán)次數(shù)在兩重以上的循環(huán)結(jié)構(gòu)
[例3.19]計(jì)算將1角錢兌換成零錢有多少種方案
PrivateSubForm_Click()DimI,J,K,SAsInt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 以學(xué)定教教研活動(dòng)方案
- 企業(yè)三八活動(dòng)方案
- 企業(yè)人文活動(dòng)策劃方案
- 企業(yè)公司升旗儀式宣傳活動(dòng)方案
- 企業(yè)冬暖行動(dòng)活動(dòng)方案
- 企業(yè)唱國歌活動(dòng)方案
- 企業(yè)客戶專享活動(dòng)方案
- 企業(yè)幫扶捐贈(zèng)活動(dòng)方案
- 企業(yè)征名活動(dòng)方案
- 企業(yè)拔草活動(dòng)方案
- 2024年嘉定區(qū)外岡鎮(zhèn)招聘工作人員真題
- 貴州國企招聘2025貴州省糧食儲(chǔ)備集團(tuán)有限公司招聘76人筆試參考題庫附帶答案詳解析集合
- 2025年建筑工程土石方回填分包協(xié)議范本
- 學(xué)生集中配餐管理制度
- 2023-2024學(xué)年廣東廣州番禺區(qū)初一下學(xué)期期末數(shù)學(xué)試卷(標(biāo)準(zhǔn)版)
- 胃癌內(nèi)科護(hù)理常規(guī)
- 工程資金共管協(xié)議書
- 2024北京西城區(qū)六年級畢業(yè)考英語試題及答案
- 2025年建筑制圖試題及答案
- 浙江省臺(tái)金七校聯(lián)盟2024-2025學(xué)年高一下學(xué)期5月期中聯(lián)考地理試題(原卷版+解析版)
- 2024年天津海河傳媒中心招聘考試真題
評論
0/150
提交評論