第五部分循環(huán)結(jié)構(gòu)教學(xué)課件_第1頁
第五部分循環(huán)結(jié)構(gòu)教學(xué)課件_第2頁
第五部分循環(huán)結(jié)構(gòu)教學(xué)課件_第3頁
第五部分循環(huán)結(jié)構(gòu)教學(xué)課件_第4頁
第五部分循環(huán)結(jié)構(gòu)教學(xué)課件_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第五章第五章 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)教學(xué)內(nèi)容教學(xué)內(nèi)容循環(huán)語句timer控件和滾動(dòng)條的使用教學(xué)目標(biāo)教學(xué)目標(biāo)掌握循環(huán)語句掌握timer控件和滾動(dòng)條 5.1 循環(huán)語句循環(huán)語句 vb.net主要提供了三種循環(huán)控制方式: ufornextuwhileend whileudoloop5.1.1 fornext循環(huán) for循環(huán)語句通常用于將一組語句重復(fù)執(zhí)行指定的次數(shù)。for循環(huán)的重復(fù)次數(shù),可以由設(shè)定一個(gè)計(jì)數(shù)變量及其上、下限來決定。 語句形式如下(方括號(hào)中的內(nèi)容為可選項(xiàng)):for 循環(huán)變量循環(huán)變量 = 初值初值 to 終值終值 step 步長步長 語句塊語句塊 exit for 語句塊語句塊 next 循環(huán)變量循環(huán)

2、變量 其中:其中:循環(huán)變量為必選項(xiàng)。其類型通常是 integer,但也可以是支持大于號(hào) ()、小于號(hào) () 和加號(hào) (+) 的任何基本數(shù)值類型。 步長,每次循環(huán)后循環(huán)變量的增量。一般為正,初值小于終值;若為負(fù),這時(shí)初值大于終值;如果省略了該項(xiàng),則步長的默認(rèn)值為1。 語句塊是放在 for 和 next 之間的一條或多條語句,亦被稱為循環(huán)體。它們將被執(zhí)行指定的次數(shù)。exit for,當(dāng)遇到該語句時(shí),退出循環(huán)(無論是否執(zhí)行完指定次數(shù)),執(zhí)行 next 語句后面的語句。 例如:編寫一個(gè)計(jì)算正整數(shù)的階乘的程序。對(duì)任意正整數(shù)k,k!符號(hào)代表階乘表達(dá)式,我們有: 為了解決這個(gè)問題,可以用一個(gè)for循環(huán)中的循

3、環(huán)變量表示k的變化范圍,在循環(huán)體中計(jì)算當(dāng)前k值的階乘。新建工程factorial,在窗體上添加一個(gè)button和一textbox控件。kkk)!1(! 為btnstart按鈕的click事件過程,添加下面的代碼:private sub btnstart_click(byval_ sender as system.object, _byval e as system.eventargs) handles btnstart.click dim lngresult as long dim i as integertxtoutput.clear() lngresult = 1 for i = 1 to

4、 15 lngresult = lngresult * i txtoutput.text += i.tostring() + != + lngresult.tostring() _ + vbcrlf nextend sub階乘程序的運(yùn)行結(jié)果 如果一個(gè)三位數(shù)的個(gè)位數(shù)、十位數(shù)和百位數(shù)的立方和等于該數(shù)自身, 則稱該數(shù)為水仙花數(shù)稱該數(shù)為水仙花數(shù)。編一程序求出所有的水仙花數(shù)。顯然,水仙花數(shù)要在100999的范圍內(nèi)去找。我們對(duì)于這個(gè)范圍內(nèi)所有的數(shù)一一檢驗(yàn)其是否符合水仙花數(shù)的定義。項(xiàng)目的建立同上,代碼如下:private sub btnstart_click(byval sender as system.o

5、bject, _byval e as system.eventargs) handles btnstart.click dim intmumber as integer dim inthandred as integer dim intten as integer dim intsingle as integer txtoutput.clear() for intmumber = 100 to 999 inthandred = intmumber 100 intten = (intmumber 10) mod 10 intsingle = intmumber mod 10 if intmumb

6、er = inthandred 3 + intten 3 + intsingle 3 then txtoutput.text += intmumber.tostring() + = + _inthandred.tostring() + 3 + + intten.tostring() _ + 3 + + intsingle.tostring() + 3 + vbcrlf end if nextend sub 水仙花數(shù)的運(yùn)算 5.1.2 while.end while 循環(huán)循環(huán) while.end while 循環(huán)用于對(duì)一條件表達(dá)式進(jìn)行計(jì)算,如果值為true,則執(zhí)行循環(huán)體。每一次循環(huán)結(jié)束后,重新計(jì)

7、算條件表達(dá)式。 while.end while與for循環(huán)的差別差別在于: for循環(huán)循環(huán)次數(shù)是不變的,執(zhí)行一定次數(shù)后結(jié)束循環(huán)。while循環(huán)的循環(huán)次數(shù)依賴與條件表達(dá)式的值,在不同情況下循環(huán)次數(shù)不一樣。while型循環(huán)結(jié)構(gòu)使用while語句實(shí)現(xiàn),語句形式如下: while 語句塊語句塊 end while其中:其中:條件表達(dá)式的值必須為 true 或 false。如果表達(dá)式的值為 nothing,則結(jié)果將作為 false 處理。 當(dāng)表達(dá)式的值true時(shí),則執(zhí)行while后的循環(huán)體直到遇到 end while 語句。隨后控制返回到 while 語句并再次檢查表達(dá)式結(jié)果。如果表達(dá)式仍為 true,

8、則重復(fù)上面的過程。如果為 false,則從 end while 語句后面的語句開始執(zhí)行。 在設(shè)計(jì)while型循環(huán)時(shí)要注意在其循環(huán)體內(nèi)應(yīng)該在適當(dāng)?shù)臅r(shí)候使條件表達(dá)式的值為false, 確保在執(zhí)行了一定次數(shù)之后可以退出循環(huán), 否則就成了“死循環(huán)”, 一旦程序進(jìn)入這里, 將永遠(yuǎn)在循環(huán)結(jié)構(gòu)中反復(fù)執(zhí)行而無法結(jié)束。 編寫一程序,計(jì)算1到100的整數(shù)和(1+2+3+100)。這道題非常簡單,可以通過公式(1+100)*100/2立刻計(jì)算出結(jié)果。但這里采用逐項(xiàng)累加算法。新建和factorial同樣界面的項(xiàng)目,為btnstart的click事件編碼如下:private sub btbstart_click(byv

9、al sender as system.object, _byval e as system.eventargs) handles btbstart.click dim intsum as integer dim i as integer intsum = 0 i = 1 while i = 100 intsum = intsum + i i = i + 1 end while txtoutput.text = 1 + 2 + 3 + . + 100 = + intsum.tostring()end sub累加程序的運(yùn)行結(jié)果 5.1.3 doloop循環(huán)循環(huán) do循環(huán)同樣也是通過一個(gè)條件表達(dá)式

10、來控制循環(huán)次數(shù)的循環(huán)結(jié)構(gòu)。此種語句有兩種語法形式,條件前置的doloop結(jié)構(gòu)和條件后置的doloop結(jié)構(gòu):do while | until 語句塊語句塊 exit do 語句塊語句塊loopdo 語句塊語句塊 exit do 語句塊語句塊loop while | until 其中:其中: 當(dāng)條件表達(dá)式前置條件表達(dá)式前置時(shí),先計(jì)算表達(dá)式的值,因此當(dāng)表達(dá)式的值在第一次計(jì)算時(shí)就為false時(shí),循環(huán)體一次也不執(zhí)行。當(dāng)條件表達(dá)式后置條件表達(dá)式后置時(shí),先執(zhí)行一次循環(huán)體再計(jì)算表達(dá)式的值,因此循環(huán)體至少被執(zhí)行一次。 關(guān)鍵字 while 和和 until必選其一且只能選一個(gè)必選其一且只能選一個(gè)。while 用于

11、指明條件表達(dá)式的值為true時(shí)就執(zhí)行循環(huán)體中的語句;until正好相反。 exit do 語句將執(zhí)行 loop 語句后面的語句。也就是使得循環(huán)立即結(jié)束。 可以在 do 循環(huán)中的任何位置放置任何數(shù)量的 exit do 語句。利用do循環(huán)求 的近似值。利用公式:計(jì)算,直到最后一項(xiàng)的絕對(duì)值小于104為止。新建和前面一樣的項(xiàng)目,為btnstart的click事件編寫如下代碼:private sub btnstart_click(byval sender as system.object,_ byval e as system.eventargs) handles btnstart.click dim

12、dblpi as double = 0 dim dbltolerance as double = 1 dim intterm as integer = 1 dim shortsign as short = 1 do dblpi += dbltolerance intterm += 2 shortsign = -shortsign dbltolerance = shortsign / intterm loop while math.abs(dbltolerance) 0.0001 dblpi *= 4 txtoutput.text = pi = + dblpi.tostring()end sub

13、 pi值的計(jì)算結(jié)果 .715131145.2 exit 語句語句 在程序中強(qiáng)制改變程序流程。如:強(qiáng)制跳轉(zhuǎn)至某個(gè)程序,或強(qiáng)制脫離循環(huán)。 vb .net提供了exit語句來滿足這些要求。語句形式如下:exit do | for | function | property | select | sub | try | while 使用中途跳轉(zhuǎn)語句,可以為某些循環(huán)體或過程設(shè)置明顯的出口,能夠增強(qiáng)程序的可讀性,符合結(jié)構(gòu)化程序設(shè)計(jì)的要求。 exit for 立即退出所在的for循環(huán)。繼續(xù)執(zhí)行next語句后面的語句。只能在for.next或for each.next循環(huán)內(nèi)使用exit for。當(dāng)在嵌套的fo

14、r循環(huán)中使用exit for時(shí),exit for會(huì)將控制傳送到exit for所在循環(huán)的外層循環(huán)。 exit while 立即退出所在的while循環(huán)。繼續(xù)執(zhí)行end while語句后面的語句。只能在while 循環(huán)內(nèi)使用exit while。當(dāng)在嵌套的while循環(huán)中使用exit while時(shí),exit while將控制傳送到exit while所在循環(huán)的外層循環(huán)。 exit do 立即退出所在的do循環(huán)。繼續(xù)執(zhí)行l(wèi)oop語句后面的語句。只能在do循環(huán)內(nèi)使用 exit do。在嵌套的do循環(huán)中使用exit do時(shí),exit do會(huì)將控制傳送到 exit do所在循環(huán)的外層循環(huán)。 exit s

15、ub 立即退出所在的sub過程。繼續(xù)執(zhí)行調(diào)用sub過程的語句后面的語句。只能在sub 過程內(nèi)使用 exit sub。exit function 立即退出所在的function過程。繼續(xù)執(zhí)行調(diào)用function過程的語句后面的語句。只能在function過程內(nèi)使用exit function。exit property 立即退出所在的property過程。繼續(xù)執(zhí)行調(diào)用property過程的語句,即繼續(xù)執(zhí)行請(qǐng)求或設(shè)置屬性值的語句。只能在property過程內(nèi)使用exit property。 exit select 立即退出所在的select case。繼續(xù)執(zhí)行end select語句后面的語句。只能

16、在select case 語句內(nèi)使用exit select。exit try 立即退出所在的try或catch塊。如果有finally塊,則繼續(xù)執(zhí)行finally塊,否則繼續(xù)執(zhí)行end try語句后面的語句。只能在try.catch.finally語句內(nèi)使用exit try。5.3 多重循環(huán)多重循環(huán) 多重循環(huán):一個(gè)循環(huán)體內(nèi)包含一個(gè)完整的循環(huán)結(jié)構(gòu),內(nèi)嵌的循環(huán)中還可以包含其他循環(huán)。 前面介紹的三種循環(huán)語句都可以嵌套。 例如,要統(tǒng)計(jì)用1、2、3、4這四個(gè)數(shù)可以組成的四位數(shù)。列出所有可能組成的四位數(shù)(四位數(shù)字可以相同),并統(tǒng)計(jì)出四位數(shù)的個(gè)數(shù)。這個(gè)問題可以用四重循環(huán)來解決每層循環(huán)的初值為1,終值為4,總

17、的循環(huán)次數(shù)就是所有四位數(shù)的個(gè)數(shù)。 新建一個(gè)和前面一樣的項(xiàng)目,并將scrollbars的屬性設(shè)置為verticalbtnstart(目的是添加一個(gè)垂直滾動(dòng)條)。btnstrat的click事件代碼如下:private sub btnstart_click(byval sender as system.object, byval e as system.eventargs)_ handles btnstart.click dim i as integer dim j as integer dim k as integer dim l as integer dim intsum as integer

18、 = 0 dim intnumber as integer for i = 1 to 4 for j = 1 to 4 for k = 1 to 4 for l = 1 to 4 intnumber = 1000 * i + 100 * j + 10 * k + l intsum += 1 txtoutput.text += intnumber.tostring() + if intsum mod 6 = 0 then txtoutput.text += vbcrlf end if next next next next txtoutput.text += vbcrlf + sum= + in

19、tsum.tostring()end sub4個(gè)數(shù)字可以組合成的4位數(shù) 又例:公元5世紀(jì)末,我國古代數(shù)學(xué)家張丘建在他編寫的算經(jīng)里提出了一個(gè)不定方程問題,世界數(shù)學(xué)史上稱為“百雞問題”。題目是這樣的: 雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一。百錢買百雞,間雞翁、母、雛各幾何? 譯成現(xiàn)代漢語就是說每只公雞價(jià)值5個(gè)錢,每只母雞價(jià)值3個(gè)錢,每3只小雞價(jià)值1個(gè)錢?,F(xiàn)有100個(gè)錢想買100只雞,問公雞、母雞和小雞各應(yīng)買幾只? 根據(jù)題意,設(shè)x,y分別為雞翁,雞母,雞雛的數(shù)目,則可得如下方程: 5x + 3y + z3100 x + y + z160 三個(gè)未知數(shù),只有兩個(gè)方程,因此這是一個(gè)不定方程問題。 新建一個(gè)和前面同樣界面的項(xiàng)目hundredcock,為btn

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論