久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

VB程序設(shè)計程序控制結(jié)構(gòu)(二)

 你喜歡那個 2012-05-13

For循環(huán)控制結(jié)構(gòu)

循環(huán)控制結(jié)構(gòu)屬于計數(shù)型循環(huán),,程序按照此種結(jié)構(gòu)中指明的循環(huán)次數(shù)來執(zhí)行循環(huán)體部分,,采用ForNext循環(huán)語句,其語法格式如下:

          For <循環(huán)變量> = <初始值> To <終值> [Step 步長]

                         [循環(huán)體]

                         [Exit For]

                       [循環(huán)體]

           Next 循環(huán)變量

    在此格式中,,使用了這樣幾個參數(shù):

1. 循環(huán)變量,。用于統(tǒng)計循環(huán)次數(shù),該變量為數(shù)值型變量,。

2. 初始值,。用于設(shè)置循環(huán)變量的初始值,該變量為數(shù)值型變量,。

3. 終值,。用于設(shè)置循環(huán)變量的終止值,該變量為數(shù)值型變量,。

4. 步長,。用于決定循環(huán)變量每次的增值,為數(shù)值型變量,。當步長為1時,,可以省略[Step 步長]選項。

5. 循環(huán)體,。重復(fù)執(zhí)行的部分,。

6.  Exit For。在某些情況下,,可強制退出For循環(huán),。

7.  Next循環(huán)變量。用于結(jié)束一輪For循環(huán)。根據(jù)終止值和當前循環(huán)變量的值的大小關(guān)系決定是否執(zhí)行下一輪循環(huán),。

通常情況下,,For循環(huán)的執(zhí)行過程是先給循環(huán)變量賦初值,然后判斷,。若循環(huán)變量的值沒有超出終值,,則執(zhí)行一輪循環(huán)體,然后將循環(huán)變量加上步長值,,判斷是否可以執(zhí)行下一輪循環(huán),,接著重復(fù)上述過程;否則退出循環(huán),。

若循環(huán)體中存在Exit For語句,,則在執(zhí)行過程中,滿足條件即可強制跳出For循環(huán),。若存在For循環(huán)嵌套,,使用Exit For語句只能跳出最內(nèi)層的循環(huán),繼續(xù)執(zhí)行外層循環(huán),。

For循環(huán)的循環(huán)體內(nèi)沒有任何具體語句時,,該循環(huán)部分可作為延時工具使用。

【例6.7】編寫程序,,求1n(正整數(shù))的所有正整數(shù)之和,。

(1) 分析。根據(jù)題意,,n的值由用戶輸入,。要求n個正整數(shù)的和,可看作n次加法操作,,即加法操作被循環(huán)執(zhí)行n次,,其中,n是循環(huán)變量,,控制循環(huán)次數(shù),。

(2) 在窗體的單擊事件上編寫下面的事件過程。

Private Sub Form_Click()

     Dim s As Single,i As Integer

     n=Val(InputBox("請輸入n","提示"))

     s=0

     For i =1 To  n step 1

       s= s + i

     Next i

    Print  "1"; n; "之和為:"; s

End Sub

(3) 程序功能,。運行程序后,,單擊窗體彈出一個輸入框由用戶輸入n的值,然后在窗體上顯示1nn個數(shù)的和,。當輸入100時,,運行結(jié)果如圖6-7所示。

6.2.2  當循環(huán)控制結(jié)構(gòu)

雖然在For…Next結(jié)構(gòu)中增加帶條件的Exit For語句,,可以在循環(huán)次數(shù)不確定只給出循環(huán)結(jié)束條件的情況退出循環(huán)結(jié)構(gòu),但是在這種情況下,,使用當循環(huán)控制結(jié)構(gòu)會更方便,,當循環(huán)控制結(jié)構(gòu)采用While…Wend循環(huán)語句,,其講法格式為:

While 條件

                           [循環(huán)體]

Wend

說明:

1.“條件”可以是關(guān)系表達式或邏輯表達式。While循環(huán)就是當給定的“條件”為True時,,執(zhí)行循環(huán)體,,為False時不執(zhí)行循環(huán)體。如果開始條件就不成立,,則循環(huán)體一次也不執(zhí)行,。因此While循環(huán)出可直接稱為當型循環(huán)。

2. 循環(huán)結(jié)構(gòu)執(zhí)行過程如下:

(1) 執(zhí)行While語句,,判斷條件是否為真,。

(2) 如果條件為真,就執(zhí)行循環(huán)體,;否則,,轉(zhuǎn)到④執(zhí)行。

(3) 執(zhí)行Wend語句,,轉(zhuǎn)到①執(zhí)行,。

(4) 執(zhí)行Wend語句下面的語句。

(5) While循環(huán)語句本身不能修改循環(huán)條件,,所以必須在While…Wend語句的循環(huán)體內(nèi)設(shè)置相應(yīng)的語句,,使得整個循環(huán)趨于結(jié)束,以避免死循環(huán),。

【例6.8】用While循環(huán)語句計算1~100所有奇數(shù)的和,。

Private Sub Command1_click()

   Dim i%, sum&

   i = 1

   While i <= 100

      sum = sum + i

      i = i + 2

   Wend

   Text1.Text = sum

End Sub

【例6.9】用While循環(huán)語句求n!n的值由用戶輸入,。

Private Sub Command1_click()

   Dim fact&, n&, i%

   n = Val(Text1.Text)

   fact = 1

   i = 1

   While i <= n

     fact = fact * i

    i = i + 1

  Wend

  Text2.Text = fact

End Sub

在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句,。例如在求累加中循環(huán)結(jié)束的條件是i>100,因此在循環(huán)體中應(yīng)該有使i增值以最終能使i>100的語句,,例中使用i=i+1語句來表達到此目的,。如果無此語句,則i的值始終不改變,,循環(huán)永不結(jié)束,,構(gòu)成死循環(huán),程序正常結(jié)束,。

6.2.3  Do 循環(huán)控制結(jié)構(gòu)

在已知循環(huán)次數(shù)的情況下,,使用For…Next 語句完成循環(huán)比較方便,但如果循環(huán)次數(shù)未知,,則要使用Do 循環(huán)控制結(jié)構(gòu)來實現(xiàn),,該控制結(jié)構(gòu)采用Do…Loop循環(huán)語句Do…Loop循環(huán)比較靈活,可以根據(jù)需要決定是條件滿足時執(zhí)行循環(huán)體,,還是一直執(zhí)行循環(huán)體直到條件滿足,。Do…Loop循環(huán)可以有兩種格式,既可以在初始位置判斷條件是否成立,,也可以在執(zhí)行一輪循環(huán)體后再判斷條件是否成立,,能否進入下一輪循環(huán)。

Do…Loop循環(huán)的兩種格式如下:

1. 語法格式一:          Do

                                   <語句塊>

                                   [Exit  Do

                                   語句塊]

                              Loop { While|Until} <條件>

2. 語法格式二:          Do { While|Until }<條件>

                                          <語句塊>

                                          [Exit  Do

                                             語句塊]

                                          Loop

                   

上述兩種格式構(gòu)成了Do循環(huán)的兩種使用方法,。這兩種格式既有共同點又有明顯的差異,。上面2種格式有下面4種共同點。

(1) 均可以有一定的循環(huán)條件,,但循環(huán)體部分為空,。此種情況下,可以用于延時,。

(2) 均可以在程序的執(zhí)行過程中用“Exit Do”語句退出循環(huán),。

(3) 均可以嵌套使用,而且可以互相嵌套,。

(4) 均有兩種判斷條件的格式:一種為“While <條件>”,,判斷時只要條件成立,則繼續(xù)執(zhí)行循環(huán)體,,然后重復(fù)上述判斷過程,;否則退出循環(huán)。另一種為“Until <條件>”,,判斷時只要條件成立就退出循環(huán),,否則繼續(xù)執(zhí)行循環(huán)體,然后重復(fù)判斷過程,。

上述兩種格式有下面兩個不同點,。

(1) 第一種格式中的判斷條件“WhileUntil條件”的位置在整個循環(huán)體的最后,而第二種格式中的判斷條件“WhileUntil 條件”的位置在整個循環(huán)體的起始位置,。

(2) 第一種格式的執(zhí)行過程是先執(zhí)行一遍循環(huán)體,,再進行判斷;而第二種格式的執(zhí)行過程是先對條件進行判斷,,判斷為能夠執(zhí)行循環(huán)體時,,才能進入循環(huán)體執(zhí)行相應(yīng)語句。所以第一種格式至少要執(zhí)行一次循環(huán)體,,而第二種格式則可能根本不執(zhí)行循環(huán)體,。

【例6.10】編程求兩自然數(shù)mn的最大公約數(shù),。

(1) 分析,??刹捎幂氜D(zhuǎn)相除法求得最大公約數(shù)。算法分析如下:

第一步 m除以n得到余數(shù)r,;

第二步 r=0,,則n為要求的最大公約數(shù),算法結(jié)束,;否則執(zhí)行第三步;

第三步 n賦值給m,,r賦值給n,,再轉(zhuǎn)到第一步執(zhí)行。

(2) 在窗體上創(chuàng)建文本框Text1Text2,,用來供用戶輸入mn的值,;創(chuàng)建命令按鈕Command1,并為Command1的單擊事件編寫下面過程,。

Private Sub command1_Click()

  Dim m As Integer, n As Integer, r As Integer

  m = Val(Text1.Text)

  n = Val(Text2.Text)

  r = m Mod n

  Do Until  r = 0

         m = n

         n = r

         r = m Mod n

  Loop

  Print " 它們的最大公約數(shù)是";n

End Sub 

(3) 程序功能,。執(zhí)行程序后,用戶在文本框Text1Text2中輸入mn的值,,單擊Command1按鈕,,在窗體上輸出mn的最大公約數(shù),。例如,,分別輸入812時,運行結(jié)果如圖6-12所示,。

【例6.11】編程,。目前我國人口約為13億,按人口年增長0.8%計算,,多少年后我國人口達到26億,。

(1) 分析。由題目可知,,每年人口增長率相同,,即由前一年人口數(shù)量求下一年人口數(shù)量的公式相同,經(jīng)過若干年循環(huán),,人口達到26億,,由于循環(huán)次數(shù)未知,所以只能用DoLoop循環(huán)實現(xiàn),。x表示人口數(shù)量初值,,n表示年數(shù)。

(2) 創(chuàng)建Command1按鈕,,為Command1的單擊事件編寫下面的過程,。

Private Sub Command1_Click()

  Fontsize=12

  x = 13

  n = 0

  Do While x < 26

   x = x * 1.008

   n = n + 1

 Loop

  Print n;"年后,,我國人口將達到";x;""

End Sub

(3) 程序功能,。運行程序,在窗體上顯示所求結(jié)果,,如圖6-13所示。

6.2.4  多重循環(huán)

多重循環(huán)又叫循環(huán)嵌套,,如果在一個循環(huán)的循環(huán)體內(nèi)又包括一個完整的循環(huán)結(jié)構(gòu),,則稱循環(huán)嵌套。嵌套可以繼續(xù)下去形成多個層次,。循環(huán)嵌套一般最常見的達到二重,,其次是三重,三重以上一般不常見,。

若結(jié)構(gòu)A是一個循環(huán)結(jié)構(gòu),,結(jié)構(gòu)BA的循環(huán)體,且B也一個完整的循環(huán)結(jié)構(gòu),,則稱AB的外循環(huán),,BA的內(nèi)循環(huán)。

多重循環(huán)的執(zhí)行機制是,,外循環(huán)A每執(zhí)行一次,,其內(nèi)循環(huán)B要執(zhí)行多次直到循環(huán)B結(jié)束;如此繼續(xù),,直到最外層的循環(huán)執(zhí)行完畢,,整個多重循環(huán)才結(jié)束。

多重循環(huán)既可以出現(xiàn)在For循環(huán)語句中,,也可以出現(xiàn)在Do…Loop語句中,。

【例6.12】輸出100以內(nèi)的所有素數(shù)。

算法分析:

(1) 判斷某數(shù)m是否為素數(shù)最簡單的方法是分別判斷m能否被i整除,,i=2,,3,,m1,。在判斷過程中,只要遇到一個i能整除m,,就說明m不是素數(shù),,否則m是素數(shù)。

(2) 100以內(nèi)的每個自然數(shù)進行素數(shù)的判斷,,若是由輸出之,。

(3) 上述步驟(1)用一個內(nèi)循環(huán)實現(xiàn),步驟②用一個外循環(huán)實現(xiàn),。

圖片框Picture1Click事件過程代碼如下:

  Private Sub Picture1_Click()

    Dim m%, i%, k%, count%

    count = 0

    For m = 101 To 200 Step 2         '外循環(huán)

      k = Sqr(m + 1)                 '1是為避免在求m時可能出現(xiàn)的誤差

      For i = 2 To k                  '內(nèi)循環(huán)

        If (m Mod i) = 0 Then Exit For

        'm能被i整除,,表明該m不是素數(shù),,退出內(nèi)循環(huán)

        Next i

        If i >= k + 1 Then             'If是設(shè)計的輸出格式

        Picture1.Print m;

        count = count + 1

        If (count Mod 5) = 0 Then Picture1.Print

        End If

       Next m

       Label1.Caption = "100200之間的素數(shù)共有" & count & "個。"

  End Sub

程序運行結(jié)果如圖6-14所示,。

 

    該程序是由兩層循環(huán)組成的循環(huán)嵌套結(jié)構(gòu),,外層是自For m = 101 To 200 Step 開始到Next m 結(jié)束的語句,內(nèi)層是由For i =2 To k 開始到Next結(jié)束的語句,。外循環(huán)的步長為2而不是1,,目的是將偶數(shù)減去,減少循環(huán)次數(shù),。

內(nèi)層循環(huán)中If (m Mod i)=0 Then Exit For 語句的作用是一旦m能被i整除,,強行結(jié)束內(nèi)循環(huán)。例如當m=105時,,由于105能被3整除,所以內(nèi)層循環(huán)執(zhí)行到i=3就強行結(jié)束,,不再執(zhí)行i=4, i=5……,。

一般情況下,循環(huán)過程要從頭到尾地執(zhí)行,,不能中途退出,。在某些情況下,為了減少循環(huán)次數(shù)或便于程序調(diào)試,,可能需要提前強制退出循環(huán),。VB為此提供了出口語句Exit

一般編程時,,多采用條件形式的出口語句:

If條件 Then Exit For

If條件 Then Exit Do

If條件 Then Exit Sub

If條件 Then Exit Function

使用出口語句除能減少循環(huán)次數(shù)結(jié)構(gòu)外,,其意義還在于它顯式地標出了循環(huán)的出口點,這樣改善某些循環(huán)的可讀性,,并易于代碼的編寫,。

對于循環(huán)的嵌套,要注意下面事項:

在多重循環(huán)結(jié)構(gòu)中,,各層循環(huán)的循環(huán)控制變量不能同名,。但并列循環(huán)的循環(huán)控制變量名可以相同,也可以不同,。

外層循環(huán)必須完全包含內(nèi)層循環(huán),,不能交叉。

小結(jié):

循環(huán)結(jié)構(gòu)是用來描述現(xiàn)實世界中循環(huán)現(xiàn)象的重要手段,。所謂循環(huán)結(jié)構(gòu),,表示在執(zhí)行語句時,需要對其中的某些語句重復(fù)執(zhí)行多次,,被重復(fù)執(zhí)行的語句塊稱為循環(huán)體,。使用循環(huán)結(jié)構(gòu)避免不必要的操作,,簡化程序結(jié)構(gòu),節(jié)省存儲空間,。

常用的循環(huán)語句有ForNext循環(huán)語句和DoLoop循環(huán)語句兩種格式,。無論何種類型的循環(huán)結(jié)構(gòu),循環(huán)體的執(zhí)行次數(shù)都由循環(huán)類型和條件決定,,并且在某個時候得以終止循環(huán),。通常,循環(huán)結(jié)構(gòu)從現(xiàn)實事物中抽象出一個計數(shù)器變量,,在計數(shù)器變量的取值范圍內(nèi),,進行循環(huán)操作。

作業(yè):

1,、  列出所學(xué)的循環(huán)語句,,試比較各種循環(huán)語句的功能。

2,、如果知道循環(huán)次數(shù),,應(yīng)選擇哪種循環(huán)語句?如果不知道循環(huán)次數(shù),,應(yīng)選擇哪種循環(huán)語句,?為什么?

3,、循環(huán)結(jié)構(gòu)允許嵌套嗎,?如果允許,在設(shè)計這種結(jié)構(gòu)時應(yīng)注意什么問題,?

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多