4+掌握VB.NET中的程序流程控制語(yǔ)句.ppt_第1頁(yè)
4+掌握VB.NET中的程序流程控制語(yǔ)句.ppt_第2頁(yè)
4+掌握VB.NET中的程序流程控制語(yǔ)句.ppt_第3頁(yè)
4+掌握VB.NET中的程序流程控制語(yǔ)句.ppt_第4頁(yè)
4+掌握VB.NET中的程序流程控制語(yǔ)句.ppt_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章掌握VB.NET中的程序流程控制語(yǔ)句,本章我們開(kāi)始真正學(xué)習(xí)如何編寫(xiě)程序代碼。VB.NET程序的基本組成元素是語(yǔ)句。我們編寫(xiě)程序的目的是要實(shí)現(xiàn)一定的功能。如何有效地將各種語(yǔ)句組合起來(lái),以達(dá)到我們的目的,是本章的學(xué)習(xí)重點(diǎn)。,章節(jié)內(nèi)容,4.1什么是語(yǔ)句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語(yǔ)句嵌套,4.1什么是語(yǔ)句,VB.NET中的語(yǔ)句是可包含關(guān)鍵字、運(yùn)算符、變量、常數(shù)和表達(dá)式的完整指令,可以分為聲明語(yǔ)句和可執(zhí)行語(yǔ)句兩種。聲明語(yǔ)句用于命名變量、常數(shù)或過(guò)程,并指定數(shù)據(jù)類型。例如,用于聲明變量的Dim語(yǔ)句和聲明常量的Const語(yǔ)句就屬于聲明語(yǔ)句。可執(zhí)行語(yǔ)句用于啟動(dòng)某種操作。例如,賦值語(yǔ)句就屬于可執(zhí)行語(yǔ)句。本章要講述的各種分支、循環(huán)語(yǔ)句也都屬于可執(zhí)行語(yǔ)句。,語(yǔ)句的書(shū)寫(xiě),VB.NET中的語(yǔ)句書(shū)寫(xiě)非常靈活,可以一行放入多條語(yǔ)句,語(yǔ)句之間用冒號(hào)(:)分隔。例如DimstrAsString=HelloWorld:MsgBox(str),當(dāng)語(yǔ)句太長(zhǎng)時(shí),也可以一條語(yǔ)句跨多行書(shū)寫(xiě)。此時(shí)需要使用行繼續(xù)符在下一行繼續(xù)該語(yǔ)句。行繼續(xù)符依次包含一個(gè)空格、一個(gè)下劃線字符(_)和一個(gè)回車(chē)符。例如1DimnameVarAsString2nameVar=John3MsgBox(Hello&nameVar&_4.Howareyou?),注釋語(yǔ)句,注釋行以撇號(hào)()開(kāi)頭或以REM開(kāi)頭,后跟一個(gè)空格。注釋可以添加在代碼中的任意位置,但不能添加在字符串中。若要將注釋追加到某語(yǔ)句,可以在該語(yǔ)句后插入一個(gè)撇號(hào)或REM,后面添加注釋。注釋還可以位于單獨(dú)的行中。,例子,1這是單獨(dú)一行的注釋2REM這是另一行單獨(dú)的注釋3x+=a(i)*b(i)計(jì)算兩個(gè)數(shù)的乘積4MsgBox(statusMessage)REM顯示當(dāng)前的狀態(tài)信息,語(yǔ)句的自動(dòng)語(yǔ)法檢查,在VisualStudio.NETIDE中書(shū)寫(xiě)語(yǔ)句時(shí),IDE會(huì)對(duì)語(yǔ)句的語(yǔ)法進(jìn)行檢查。如果語(yǔ)句書(shū)寫(xiě)完畢后,出現(xiàn)綠色的下滑波浪線,則說(shuō)明該語(yǔ)句存在語(yǔ)法錯(cuò)誤。將鼠標(biāo)懸停在帶有下滑波浪線的語(yǔ)句上,即可查看到錯(cuò)誤信息。如果不更正,代碼將無(wú)法正確的編譯。,4.2什么是控制結(jié)構(gòu),在20世紀(jì)60年代,就出現(xiàn)了結(jié)構(gòu)化程序設(shè)計(jì)的概念,指出程序的編寫(xiě)應(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)都只有一個(gè)入口和一個(gè)出口。任何一個(gè)算法都可以用這3種基本結(jié)構(gòu)實(shí)現(xiàn),任何復(fù)雜的程序都可以分解為由3種基本結(jié)構(gòu)組成。,4.2.1順序結(jié)構(gòu),順序結(jié)構(gòu)是最簡(jiǎn)單的控制結(jié)構(gòu),按照語(yǔ)句書(shū)寫(xiě)的順序一句一句的執(zhí)行。典型的例子是交換兩個(gè)變量x和y的值。,交換兩個(gè)變量的值,1DimxAsInteger=102DimyAsInteger=203DimtempAsInteger4temp=x此時(shí)temp中保存x的值105x=yx值變?yōu)閥的值206y=tempy值變?yōu)閠emp中保存的x的值10,交換完成,4.2.2選擇結(jié)構(gòu),考慮這樣一個(gè)應(yīng)用程序“SayHello”當(dāng)用戶打開(kāi)應(yīng)用程序后,向用戶顯示問(wèn)候信息,根據(jù)時(shí)間不同,問(wèn)候信息也應(yīng)該不同。因此程序需要根據(jù)當(dāng)前時(shí)間判斷是上午、下午還是晚上,分別給出不同的問(wèn)候信息。在這個(gè)應(yīng)用中,當(dāng)前時(shí)間應(yīng)該作為判斷條件,根據(jù)不同的判斷結(jié)果,顯示不同的信息,這是一個(gè)典型的選擇結(jié)構(gòu)。,If語(yǔ)句,(1)基本形式If語(yǔ)句的語(yǔ)法格式如下。If表達(dá)式Then語(yǔ)句塊1Else語(yǔ)句塊2EndIf,示例1:使用If語(yǔ)句判斷變量,IfabThenMsgBox(a大于b)這句代碼用于判斷a和b兩個(gè)變量值的大小,由于執(zhí)行語(yǔ)句只有一句,因此寫(xiě)在了同一行上,并省略了EndIf。,擴(kuò)展,1IfabThen2MsgBox(a大于b)3Else4MsgBox(a小于等于)5EndIf增加了第3行的Else子句,當(dāng)a不大于b時(shí),也顯示相應(yīng)信息。,示例2:使用If語(yǔ)句來(lái)實(shí)現(xiàn)SayHello應(yīng)用程序,Step1:創(chuàng)建應(yīng)用程序工程。單擊菜單欄中的【文件】【新建項(xiàng)目】命令,打開(kāi)【新建項(xiàng)目】窗口。在該窗口的【模板】列表框中,選擇【W(wǎng)indows窗體應(yīng)用程序】,并在【名稱】文本框中輸入“SayHello”。,Step2:進(jìn)行窗體界面設(shè)計(jì)。向窗體中添加兩個(gè)Label控件,并將其Font屬性設(shè)置為Arial,四號(hào),Name屬性分別設(shè)置為lblTime和lblInfo;窗體的Text屬性設(shè)為“SayHello”,Name屬性設(shè)置為frmSayHello。,Step3:代碼編寫(xiě)。下面是窗體的Load事件過(guò)程。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個(gè)If語(yǔ)句并列實(shí)現(xiàn)了時(shí)間判斷。這3個(gè)If語(yǔ)句是要順序執(zhí)行的。考慮這樣一種情況:當(dāng)前時(shí)間為2008-8-79:12:11,此時(shí)變量h的值應(yīng)為9。第1個(gè)If語(yǔ)句的判斷條件h=12為真,顯示“Goodmorning,Cindy!”的信息;之后第2個(gè)和第3個(gè)If語(yǔ)句的判斷條件均為假,程序執(zhí)行完畢。,實(shí)際上,在這種情況下,第2個(gè)和第3個(gè)If語(yǔ)句的判斷條件已經(jīng)沒(méi)有必要再繼續(xù)進(jìn)行比較了。使用并列的3個(gè)If語(yǔ)句雖然也可以實(shí)現(xiàn)我們要求的功能,但是效率上并不好。,使用ElseIf關(guān)鍵字,1DimhAsInteger=Now().Hour2lblTime.Text=Now().ToString()3Ifh12)And(h=18Then8lblInfo.Text=GoodEvening,Cindy!9EndIf,If-Then-Else語(yǔ)句中使用ElseIf語(yǔ)句的基本語(yǔ)法格式,If表達(dá)式1Then語(yǔ)句塊1ElseIf表達(dá)式2Then語(yǔ)句塊2ElseIf表達(dá)式3Then語(yǔ)句塊3Else語(yǔ)句塊nEndIf,Select語(yǔ)句,語(yǔ)法格式如下。SelectCase表達(dá)式Case情況列表1語(yǔ)句塊1Case情況列表2語(yǔ)句塊2CaseElse語(yǔ)句塊nEndSelect,Select語(yǔ)句首先計(jì)算表達(dá)式的值,之后與Case語(yǔ)句指定的情況列表進(jìn)行比較。情況列表中可以包含一個(gè)或多個(gè)值、某個(gè)范圍的值或值和比較運(yùn)算符的組合。如果匹配,則執(zhí)行其后的語(yǔ)句塊,以此類推。如果均不匹配,則執(zhí)行CaseElse后面的語(yǔ)句塊。Case語(yǔ)句可以有一條或者多條,而且CaseElse語(yǔ)句可以省略。,示例1:使用Select語(yǔ)句實(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í)行某一個(gè)語(yǔ)句塊。例如,一個(gè)用戶登錄程序,用戶輸入戶名和密碼后需要進(jìn)行檢查,3次錯(cuò)誤后鎖定該用戶。在這個(gè)應(yīng)用中,有可能需要重復(fù)檢查用戶輸入,因此應(yīng)當(dāng)將檢查用戶輸入的語(yǔ)句塊作為循環(huán)體,這是一個(gè)典型的循環(huán)結(jié)構(gòu)。,4種循環(huán)語(yǔ)句,For-Next語(yǔ)句用于計(jì)數(shù)循環(huán)。While語(yǔ)句用于當(dāng)型循環(huán)。Do-Loop語(yǔ)句用于直到型循環(huán)。ForEach語(yǔ)句用于集合或數(shù)組元素循環(huán)。,For語(yǔ)句,For語(yǔ)句的語(yǔ)法格式For循環(huán)變量=初值To終值Step步長(zhǎng)循環(huán)體Next循環(huán)變量考慮這樣一個(gè)應(yīng)用程序“ComputeSum”:用戶輸入一個(gè)數(shù)之后,計(jì)算從1開(kāi)始疊加到該數(shù)的總和。這是一個(gè)典型的計(jì)數(shù)循環(huán)的結(jié)構(gòu),可以使用For語(yǔ)句來(lái)實(shí)現(xiàn)。,示例1:使用For語(yǔ)句實(shí)現(xiàn)ComputeSum應(yīng)用程序,Step1:創(chuàng)建應(yīng)用程序工程。單擊菜單欄中的【文件】【新建項(xiàng)目】命令,打開(kāi)【新建項(xiàng)目】窗口。在該窗口的【模板】列表框中,選擇【W(wǎng)indows窗體應(yīng)用程序】,并在【名稱】文本框中輸入“ComputeSum”。,Step2:進(jìn)行窗體界面的設(shè)計(jì),TextBox控件,該控件用于接收用戶輸入或者將計(jì)算結(jié)果顯示給用戶,其Text屬性就是文本框中的內(nèi)容。,Step3:編寫(xiě)代碼。在【計(jì)算】按鈕上雙擊鼠標(biāo),打開(kāi)代碼窗口。由于需要單擊按鈕后開(kāi)始計(jì)算并顯示結(jié)果,所以代碼應(yīng)該寫(xiě)在按鈕控件的單擊事件中。,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開(kāi)始,循環(huán)步長(zhǎng)為2,While語(yǔ)句,考慮這樣一個(gè)應(yīng)用程序“CalculatePai”:在某些需要計(jì)算精確的情況下,需要使用圓周率的值。可以通過(guò)下面的公式來(lái)計(jì)算得到圓周率的近似值。/4=11/3+1/51/7+1/n在該應(yīng)用中,實(shí)際是求一個(gè)數(shù)列的前n項(xiàng)累加和,通常要求累加至最后一項(xiàng)的值小于10-6。這種情形下,n的值在開(kāi)始時(shí)無(wú)法確定,只能在逐漸累加的過(guò)程中進(jìn)行判斷,也就是說(shuō),循環(huán)次數(shù)無(wú)法確定,循環(huán)是通過(guò)1/n是否小于10-6來(lái)確定的,因此For語(yǔ)句并不適用。因此,VB.NET提供了While語(yǔ)句來(lái)實(shí)現(xiàn)通過(guò)某個(gè)條件進(jìn)行循環(huán)。,基本形式,While循環(huán)條件語(yǔ)句塊EndWhile其中,循環(huán)條件為關(guān)系或邏輯表達(dá)式,值為Boolean類型。當(dāng)循環(huán)條件為真時(shí),循環(huán)執(zhí)行語(yǔ)句塊;當(dāng)循環(huán)條件為假時(shí),退出循環(huán)。因此While語(yǔ)句屬于當(dāng)型循環(huán),意思是當(dāng)循環(huán)條件為真時(shí)執(zhí)行循環(huán)。,示例1:使用While語(yǔ)句求大于100的第一個(gè)3的冪次,1DimintXAsInteger=32WhileintX=0.00000018Pai+=dblTerm累加9dblDenominator+=2第n項(xiàng)的分母是第n-1項(xiàng)的分母加上210intSign=-intSign改變符號(hào)11dblTerm=intSign/dblDenominator生成下一項(xiàng)12EndWhile13Pai=Pai*414txbPai.Text=Pai.ToString()在文本框中顯示計(jì)算結(jié)果15EndSub,累加,同時(shí)生成下一項(xiàng),For循環(huán)與While循環(huán)的比較,在通常情況下,如果循環(huán)次數(shù)確定,一般選用For循環(huán)。如果循環(huán)次數(shù)未知但有條件來(lái)保證循環(huán)過(guò)程是有限次數(shù)的,選用While循環(huán)。實(shí)際上,在循環(huán)次數(shù)確定的情況下同樣可以選擇使用While語(yǔ)句。例如,“ComputeSum”應(yīng)用程序中,我們使用For循環(huán)來(lái)計(jì)算從1到n的累加,同樣使用While語(yǔ)句也可以實(shí)現(xiàn)。,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger=14While(i=n)5Sum+=i6i+=17EndWhile,Do-Loop語(yǔ)句,基本形式:DoWhile|Until循環(huán)條件循環(huán)體Loop其中,While和Until是可選的。使用While時(shí),當(dāng)后面的條件滿足則執(zhí)行循環(huán)體。使用Until時(shí),當(dāng)后面的條件滿足就退出循環(huán)體。無(wú)論使用While還是Until,都是先測(cè)試循環(huán)條件是否滿足,再?zèng)Q定是否執(zhí)行循環(huán)體,示例1:使用Do-While-Loop語(yǔ)句實(shí)現(xiàn)1到n的累加,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger=14DoWhilein5Sum+=i6i+=17Loop,Do-Loop語(yǔ)句的另一種形式,Do-Loop語(yǔ)句還有另外一種寫(xiě)法Do循環(huán)體LoopWhile|Until循環(huán)條件Loop后的While和Until與上一種寫(xiě)法含義相同,即使用While時(shí),當(dāng)后面的條件滿足則執(zhí)行循環(huán)體;使用Until時(shí),當(dāng)后面的條件滿足就退出循環(huán)體。區(qū)別在于,這種寫(xiě)法先執(zhí)行循環(huán)體再測(cè)試循環(huán)條件是否滿足。因此,這種寫(xiě)法中循環(huán)體至少會(huì)被執(zhí)行一次。,示例3:使用Do-Loop-While語(yǔ)句實(shí)現(xiàn)1到n的累加,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger=14Do5Sum+=i6i+=17LoopWhilein這四段代碼都是等價(jià)的。,跳出循環(huán)控制,前面的例子中,都是循環(huán)變量值超出終值范圍或者循環(huán)條件不滿足,才終止循環(huán)。除此之外,還可以在循環(huán)體中使用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論