




已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第4章掌握VB.NET中的程序流程控制語句,本章我們開始真正學(xué)習(xí)如何編寫程序代碼。VB.NET程序的基本組成元素是語句。我們編寫程序的目的是要實(shí)現(xiàn)一定的功能。如何有效地將各種語句組合起來,以達(dá)到我們的目的,是本章的學(xué)習(xí)重點(diǎn)。,章節(jié)內(nèi)容,4.1什么是語句4.2什么是控制結(jié)構(gòu)4.2.1順序結(jié)構(gòu)4.2.2選擇結(jié)構(gòu)4.2.3循環(huán)結(jié)構(gòu)4.3語句嵌套,4.1什么是語句,VB.NET中的語句是可包含關(guān)鍵字、運(yùn)算符、變量、常數(shù)和表達(dá)式的完整指令,可以分為聲明語句和可執(zhí)行語句兩種。聲明語句用于命名變量、常數(shù)或過程,并指定數(shù)據(jù)類型。例如,用于聲明變量的Dim語句和聲明常量的Const語句就屬于聲明語句。可執(zhí)行語句用于啟動某種操作。例如,賦值語句就屬于可執(zhí)行語句。本章要講述的各種分支、循環(huán)語句也都屬于可執(zhí)行語句。,語句的書寫,VB.NET中的語句書寫非常靈活,可以一行放入多條語句,語句之間用冒號(:)分隔。例如DimstrAsString=HelloWorld:MsgBox(str),當(dāng)語句太長時,也可以一條語句跨多行書寫。此時需要使用行繼續(xù)符在下一行繼續(xù)該語句。行繼續(xù)符依次包含一個空格、一個下劃線字符(_)和一個回車符。例如1DimnameVarAsString2nameVar=John3MsgBox(Hello&nameVar&_4.Howareyou?),注釋語句,注釋行以撇號()開頭或以REM開頭,后跟一個空格。注釋可以添加在代碼中的任意位置,但不能添加在字符串中。若要將注釋追加到某語句,可以在該語句后插入一個撇號或REM,后面添加注釋。注釋還可以位于單獨(dú)的行中。,例子,1這是單獨(dú)一行的注釋2REM這是另一行單獨(dú)的注釋3x+=a(i)*b(i)計(jì)算兩個數(shù)的乘積4MsgBox(statusMessage)REM顯示當(dāng)前的狀態(tài)信息,語句的自動語法檢查,在VisualStudio.NETIDE中書寫語句時,IDE會對語句的語法進(jìn)行檢查。如果語句書寫完畢后,出現(xiàn)綠色的下滑波浪線,則說明該語句存在語法錯誤。將鼠標(biāo)懸停在帶有下滑波浪線的語句上,即可查看到錯誤信息。如果不更正,代碼將無法正確的編譯。,4.2什么是控制結(jié)構(gòu),在20世紀(jì)60年代,就出現(xiàn)了結(jié)構(gòu)化程序設(shè)計(jì)的概念,指出程序的編寫應(yīng)采用結(jié)構(gòu)化方法。1966年提出了任何計(jì)算機(jī)程序都可以由3種基本結(jié)構(gòu)組成。這3種基本結(jié)構(gòu)是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。,順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),當(dāng)型循環(huán)直到型循環(huán),從圖中可以看出,這3種基本結(jié)構(gòu)的基本特點(diǎn)是每一種結(jié)構(gòu)都只有一個入口和一個出口。任何一個算法都可以用這3種基本結(jié)構(gòu)實(shí)現(xiàn),任何復(fù)雜的程序都可以分解為由3種基本結(jié)構(gòu)組成。,4.2.1順序結(jié)構(gòu),順序結(jié)構(gòu)是最簡單的控制結(jié)構(gòu),按照語句書寫的順序一句一句的執(zhí)行。典型的例子是交換兩個變量x和y的值。,交換兩個變量的值,1DimxAsInteger=102DimyAsInteger=203DimtempAsInteger4temp=x此時temp中保存x的值105x=yx值變?yōu)閥的值206y=tempy值變?yōu)閠emp中保存的x的值10,交換完成,4.2.2選擇結(jié)構(gòu),考慮這樣一個應(yīng)用程序“SayHello”當(dāng)用戶打開應(yīng)用程序后,向用戶顯示問候信息,根據(jù)時間不同,問候信息也應(yīng)該不同。因此程序需要根據(jù)當(dāng)前時間判斷是上午、下午還是晚上,分別給出不同的問候信息。在這個應(yīng)用中,當(dāng)前時間應(yīng)該作為判斷條件,根據(jù)不同的判斷結(jié)果,顯示不同的信息,這是一個典型的選擇結(jié)構(gòu)。,If語句,(1)基本形式If語句的語法格式如下。If表達(dá)式Then語句塊1Else語句塊2EndIf,示例1:使用If語句判斷變量,IfabThenMsgBox(a大于b)這句代碼用于判斷a和b兩個變量值的大小,由于執(zhí)行語句只有一句,因此寫在了同一行上,并省略了EndIf。,擴(kuò)展,1IfabThen2MsgBox(a大于b)3Else4MsgBox(a小于等于)5EndIf增加了第3行的Else子句,當(dāng)a不大于b時,也顯示相應(yīng)信息。,示例2:使用If語句來實(shí)現(xiàn)SayHello應(yīng)用程序,Step1:創(chuàng)建應(yīng)用程序工程。單擊菜單欄中的【文件】【新建項(xiàng)目】命令,打開【新建項(xiàng)目】窗口。在該窗口的【模板】列表框中,選擇【W(wǎng)indows窗體應(yīng)用程序】,并在【名稱】文本框中輸入“SayHello”。,Step2:進(jìn)行窗體界面設(shè)計(jì)。向窗體中添加兩個Label控件,并將其Font屬性設(shè)置為Arial,四號,Name屬性分別設(shè)置為lblTime和lblInfo;窗體的Text屬性設(shè)為“SayHello”,Name屬性設(shè)置為frmSayHello。,Step3:代碼編寫。下面是窗體的Load事件過程。1PrivateSubfrmSayHello_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load2DimhAsInteger=Now().Hour3lblTime.Text=Now().ToString()4Ifh12)And(h=18ThenlblInfo.Text=GoodEvening,Cindy!7EndSub,運(yùn)行結(jié)果,代碼效率分析,上例中我們使用3個If語句并列實(shí)現(xiàn)了時間判斷。這3個If語句是要順序執(zhí)行的??紤]這樣一種情況:當(dāng)前時間為2008-8-79:12:11,此時變量h的值應(yīng)為9。第1個If語句的判斷條件h=12為真,顯示“Goodmorning,Cindy!”的信息;之后第2個和第3個If語句的判斷條件均為假,程序執(zhí)行完畢。,實(shí)際上,在這種情況下,第2個和第3個If語句的判斷條件已經(jīng)沒有必要再繼續(xù)進(jìn)行比較了。使用并列的3個If語句雖然也可以實(shí)現(xiàn)我們要求的功能,但是效率上并不好。,使用ElseIf關(guān)鍵字,1DimhAsInteger=Now().Hour2lblTime.Text=Now().ToString()3Ifh12)And(h=18Then8lblInfo.Text=GoodEvening,Cindy!9EndIf,If-Then-Else語句中使用ElseIf語句的基本語法格式,If表達(dá)式1Then語句塊1ElseIf表達(dá)式2Then語句塊2ElseIf表達(dá)式3Then語句塊3Else語句塊nEndIf,Select語句,語法格式如下。SelectCase表達(dá)式Case情況列表1語句塊1Case情況列表2語句塊2CaseElse語句塊nEndSelect,Select語句首先計(jì)算表達(dá)式的值,之后與Case語句指定的情況列表進(jìn)行比較。情況列表中可以包含一個或多個值、某個范圍的值或值和比較運(yùn)算符的組合。如果匹配,則執(zhí)行其后的語句塊,以此類推。如果均不匹配,則執(zhí)行CaseElse后面的語句塊。Case語句可以有一條或者多條,而且CaseElse語句可以省略。,示例1:使用Select語句實(shí)現(xiàn)SayHello應(yīng)用程序,1lblTime.Text=Now().ToString()2SelectCaseNow().Hour3Case0,1,2,3,4,5,6,7,8,9,10,11,124lblInfo.Text=Goodmorning,Cindy!5Case13,14,15,16,17,186lblInfo.Text=Goodafternoon,Cindy!7CaseElse8lblInfo.Text=Goodevening,Cindy!9EndSelect,示例2:使用to關(guān)鍵字表示連續(xù)范圍,1lblTime.Text=Now().ToString()2SelectCaseNow().Hour3CaseIs=124lblInfo.Text=Goodmorning,Cindy!5Case13to186lblInfo.Text=Goodafternoon,Cindy!7CaseElse8lblInfo.Text=Goodevening,Cindy!9EndSelect,4.2.3循環(huán)結(jié)構(gòu),在某些應(yīng)用中,可能需要重復(fù)執(zhí)行某一個語句塊。例如,一個用戶登錄程序,用戶輸入戶名和密碼后需要進(jìn)行檢查,3次錯誤后鎖定該用戶。在這個應(yīng)用中,有可能需要重復(fù)檢查用戶輸入,因此應(yīng)當(dāng)將檢查用戶輸入的語句塊作為循環(huán)體,這是一個典型的循環(huán)結(jié)構(gòu)。,4種循環(huán)語句,For-Next語句用于計(jì)數(shù)循環(huán)。While語句用于當(dāng)型循環(huán)。Do-Loop語句用于直到型循環(huán)。ForEach語句用于集合或數(shù)組元素循環(huán)。,For語句,For語句的語法格式For循環(huán)變量=初值To終值Step步長循環(huán)體Next循環(huán)變量考慮這樣一個應(yīng)用程序“ComputeSum”:用戶輸入一個數(shù)之后,計(jì)算從1開始疊加到該數(shù)的總和。這是一個典型的計(jì)數(shù)循環(huán)的結(jié)構(gòu),可以使用For語句來實(shí)現(xiàn)。,示例1:使用For語句實(shí)現(xiàn)ComputeSum應(yīng)用程序,Step1:創(chuàng)建應(yīng)用程序工程。單擊菜單欄中的【文件】【新建項(xiàng)目】命令,打開【新建項(xiàng)目】窗口。在該窗口的【模板】列表框中,選擇【W(wǎng)indows窗體應(yīng)用程序】,并在【名稱】文本框中輸入“ComputeSum”。,Step2:進(jìn)行窗體界面的設(shè)計(jì),TextBox控件,該控件用于接收用戶輸入或者將計(jì)算結(jié)果顯示給用戶,其Text屬性就是文本框中的內(nèi)容。,Step3:編寫代碼。在【計(jì)算】按鈕上雙擊鼠標(biāo),打開代碼窗口。由于需要單擊按鈕后開始計(jì)算并顯示結(jié)果,所以代碼應(yīng)該寫在按鈕控件的單擊事件中。,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger4Fori=1Ton5sum+=i6Next7txbSum.Text=sum.ToString(),思考題:如果需要計(jì)算1到n之間偶數(shù)的累加和,代碼應(yīng)該如何修改呢,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger4Fori=2Tonstep25sum+=i6Next7txbSum.Text=sum.ToString(),循環(huán)變量初值從2開始,循環(huán)步長為2,While語句,考慮這樣一個應(yīng)用程序“CalculatePai”:在某些需要計(jì)算精確的情況下,需要使用圓周率的值??梢酝ㄟ^下面的公式來計(jì)算得到圓周率的近似值。/4=11/3+1/51/7+1/n在該應(yīng)用中,實(shí)際是求一個數(shù)列的前n項(xiàng)累加和,通常要求累加至最后一項(xiàng)的值小于10-6。這種情形下,n的值在開始時無法確定,只能在逐漸累加的過程中進(jìn)行判斷,也就是說,循環(huán)次數(shù)無法確定,循環(huán)是通過1/n是否小于10-6來確定的,因此For語句并不適用。因此,VB.NET提供了While語句來實(shí)現(xiàn)通過某個條件進(jìn)行循環(huán)。,基本形式,While循環(huán)條件語句塊EndWhile其中,循環(huán)條件為關(guān)系或邏輯表達(dá)式,值為Boolean類型。當(dāng)循環(huán)條件為真時,循環(huán)執(zhí)行語句塊;當(dāng)循環(huán)條件為假時,退出循環(huán)。因此While語句屬于當(dāng)型循環(huán),意思是當(dāng)循環(huán)條件為真時執(zhí)行循環(huán)。,示例1:使用While語句求大于100的第一個3的冪次,1DimintXAsInteger=32WhileintX=0.00000018Pai+=dblTerm累加9dblDenominator+=2第n項(xiàng)的分母是第n-1項(xiàng)的分母加上210intSign=-intSign改變符號11dblTerm=intSign/dblDenominator生成下一項(xiàng)12EndWhile13Pai=Pai*414txbPai.Text=Pai.ToString()在文本框中顯示計(jì)算結(jié)果15EndSub,累加,同時生成下一項(xiàng),For循環(huán)與While循環(huán)的比較,在通常情況下,如果循環(huán)次數(shù)確定,一般選用For循環(huán)。如果循環(huán)次數(shù)未知但有條件來保證循環(huán)過程是有限次數(shù)的,選用While循環(huán)。實(shí)際上,在循環(huán)次數(shù)確定的情況下同樣可以選擇使用While語句。例如,“ComputeSum”應(yīng)用程序中,我們使用For循環(huán)來計(jì)算從1到n的累加,同樣使用While語句也可以實(shí)現(xiàn)。,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger=14While(i=n)5Sum+=i6i+=17EndWhile,Do-Loop語句,基本形式:DoWhile|Until循環(huán)條件循環(huán)體Loop其中,While和Until是可選的。使用While時,當(dāng)后面的條件滿足則執(zhí)行循環(huán)體。使用Until時,當(dāng)后面的條件滿足就退出循環(huán)體。無論使用While還是Until,都是先測試循環(huán)條件是否滿足,再決定是否執(zhí)行循環(huán)體,示例1:使用Do-While-Loop語句實(shí)現(xiàn)1到n的累加,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger=14DoWhilein5Sum+=i6i+=17Loop,Do-Loop語句的另一種形式,Do-Loop語句還有另外一種寫法Do循環(huán)體LoopWhile|Until循環(huán)條件Loop后的While和Until與上一種寫法含義相同,即使用While時,當(dāng)后面的條件滿足則執(zhí)行循環(huán)體;使用Until時,當(dāng)后面的條件滿足就退出循環(huán)體。區(qū)別在于,這種寫法先執(zhí)行循環(huán)體再測試循環(huán)條件是否滿足。因此,這種寫法中循環(huán)體至少會被執(zhí)行一次。,示例3:使用Do-Loop-While語句實(shí)現(xiàn)1到n的累加,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger=14Do5Sum+=i6i+=17LoopWhilein這四段代碼都是等價的。,跳出循環(huán)控制,前面的例子中,都是循環(huán)變量值超出終值范圍或者循環(huán)條件不滿足,才終止循環(huán)。除此之外,還可以在循環(huán)體中使用
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育心理學(xué)在提升學(xué)生社交技巧中的應(yīng)用
- 游戲化在幼兒體育教育中的應(yīng)用研究
- 教育大數(shù)據(jù)提升教學(xué)質(zhì)量的有效工具
- 企業(yè)信息安全文化建設(shè)的重要性與實(shí)踐
- 醫(yī)學(xué)心理學(xué)與疾病預(yù)防的交叉研究
- 智慧城市公共安全信息系統(tǒng)的基石建設(shè)
- 基于教育技術(shù)的全球混學(xué)創(chuàng)新與實(shí)踐分析報(bào)告
- 逆向思維培訓(xùn)課件圖片
- 抖音商戶退款退貨處理效率考核制度
- 抖音商戶直播情感連接策略制度
- 2023年松潘縣小升初英語考試題庫及答案解析
- 2023年公路工程監(jiān)理工作合同管理內(nèi)容及有效措施
- 一年級看圖寫話(教學(xué))課件
- 嚴(yán)重藥物不良反應(yīng)診斷與處理
- 直流屏原理-課件
- 加藥設(shè)備安裝 檢驗(yàn)批施工質(zhì)量驗(yàn)收表
- 盡職調(diào)查所用相關(guān)表格(全)
- 三基-學(xué)校兒童少年衛(wèi)生學(xué)(200題)練習(xí)
- 老年康養(yǎng)服務(wù)中心項(xiàng)目可行性研究報(bào)告寫作參考范文
- 生物質(zhì)中纖維素、半纖維素和木質(zhì)素含量的測定
- 枸杞采摘合同
評論
0/150
提交評論