• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    循序漸進(jìn)學(xué)編程
    ——For……Next循環(huán)控制結(jié)構(gòu)

    2018-02-17 17:36:40
    信息記錄材料 2018年10期
    關(guān)鍵詞:終值初值賦值

    劉 偉

    (江蘇師范大學(xué)科文學(xué)院 江蘇 徐州 221116)

    Visual Basic程序設(shè)計(jì)語(yǔ)言提供了三種循環(huán)控制結(jié)構(gòu),F(xiàn)or……Next、While……Wend和Do……Loop,分別用于解決不同特征的循環(huán)處理問(wèn)題。今天我們主要討論For……Next循環(huán)控制結(jié)構(gòu)。

    首先,我們需要理解什么叫循環(huán)?比如一個(gè)學(xué)生在操場(chǎng)上圍著跑道一圈一圈的跑步,這個(gè)跑步的動(dòng)作就是循環(huán)!一個(gè)人在食堂里一口一口的吃飯,吃飯的動(dòng)作也是循環(huán);一個(gè)學(xué)生靜靜的坐在教室里聽(tīng)課,這個(gè)聽(tīng)課的動(dòng)作也是循環(huán),……等等,現(xiàn)實(shí)生活中處處都是循環(huán)!所以,在計(jì)算機(jī)世界里,計(jì)算機(jī)重復(fù)執(zhí)行的動(dòng)作就被稱(chēng)為循環(huán)。

    其次,我們得搞清楚循環(huán)能解決什么樣的問(wèn)題?比如,求5個(gè)數(shù)的和,我們可以用如下方式獲得5個(gè)數(shù),然后求它們的和:

    Private Sub Form_Click()

    Dim A As Integer, B As Integer, C As Integer

    Dim D As Integer, E As Integer, Sum As Integer

    A = InputBox("請(qǐng)輸入第1個(gè)數(shù)")

    B = InputBox("請(qǐng)輸入第2個(gè)數(shù)")

    C = InputBox("請(qǐng)輸入第3個(gè)數(shù)")

    D = InputBox("請(qǐng)輸入第4個(gè)數(shù)")

    E = InputBox("請(qǐng)輸入第5個(gè)數(shù)")

    Sum = A + B + C + D + E

    Print Sum

    End Sub

    本程序中引入A、B、C、D、E 五個(gè)變量來(lái)保存輸入的5個(gè)值,然后通過(guò)語(yǔ)句Sum = A + B + C + D + E求得這5個(gè)數(shù)據(jù)的和,是沒(méi)有問(wèn)題的,可是請(qǐng)大家想一想,如果求50個(gè)數(shù)據(jù)的和用這種方式行不行呢,求5000個(gè)甚至5萬(wàn)個(gè)數(shù)據(jù)的和還能用這樣的程序嗎?

    所以,在計(jì)算機(jī)中,重復(fù)的或者是相似的操作都可以借助循環(huán)來(lái)實(shí)現(xiàn)!上面的程序中數(shù)據(jù)的輸入可以轉(zhuǎn)換成類(lèi)似于:X = InputBox("請(qǐng)輸入第i個(gè)數(shù)")的形式,Sum= A + B + C + D + E可以轉(zhuǎn)換成Sum = Sum + X 的累加形式。

    其次,我們需要考慮的問(wèn)題是循環(huán)何時(shí)結(jié)束?比如在操場(chǎng)上跑步,可以有多種結(jié)束形式:

    1)固定跑5圈,跑完5圈就結(jié)束;

    2)不確定跑多少圈,跑到累了就結(jié)束;

    3)跑完5000米就結(jié)束;

    4)跑到天亮就結(jié)束;

    ……

    由此我們可以得出,有的循環(huán)有固定的次數(shù),有的循環(huán)雖然沒(méi)有固定的次數(shù),但是有明確的結(jié)束條件。而For……Next循環(huán)控制語(yǔ)句主要就是用于解決有固定循環(huán)次數(shù)的循環(huán)問(wèn)題。其基本結(jié)構(gòu)如下:

    For 循環(huán)控制變量 = 初值 To 終值 [Step 步長(zhǎng)]

    語(yǔ)句組1

    [Exit For]

    語(yǔ)句組2

    Next [循環(huán)控制變量]

    幾點(diǎn)說(shuō)明:

    加粗標(biāo)注的部分是必不可少的控制語(yǔ)句,[]內(nèi)的內(nèi)容是可以省略的內(nèi)容;

    循環(huán)控制變量是某一合法的變量名;

    初值 To 終值 用來(lái)決定循環(huán)控制變量的取值范圍;

    若Step 步長(zhǎng) 省略,則默認(rèn)的步長(zhǎng)為1;

    Exit For語(yǔ)句用于實(shí)現(xiàn)當(dāng)滿(mǎn)足一定條件時(shí),提前退出當(dāng)前For循環(huán),執(zhí)行Next之后的代碼;

    For和Next之間的代碼叫循環(huán)體。

    比如,用For……Next 循環(huán)結(jié)構(gòu)輸出1、2、3、……、10這10個(gè)數(shù),程序如下:

    Private Sub Form_Click()

    Dim i As Integer

    For i = 1 To 10 Step 1

    Print i;

    Next i

    End Sub

    1.當(dāng)程序執(zhí)行到For語(yǔ)句時(shí),計(jì)算出初值、終值和步長(zhǎng),并且將初值賦值給循環(huán)控制變量。

    2.判斷循環(huán)控制變量的值有沒(méi)有超過(guò)終值,如果沒(méi)有超過(guò)終值就進(jìn)入循環(huán)體執(zhí)行,否則退出循環(huán)體,執(zhí)行Next語(yǔ)句之后的代碼。

    3.當(dāng)執(zhí)行到Next語(yǔ)句的時(shí)候系統(tǒng)做如下工作:首先循環(huán)控制變量增加一個(gè)步長(zhǎng),然后轉(zhuǎn)到第2步。

    下面我們?cè)囍肍or……Next循環(huán)結(jié)構(gòu)輸入5個(gè)數(shù):

    Private Sub Form_Click()

    Dim i As Integer

    For i = 1 To 5

    x = InputBox("請(qǐng)輸入一個(gè)數(shù)")

    Print x;

    Next i

    End Sub

    如果是輸入5個(gè)數(shù),輸出這5個(gè)數(shù)的和呢?

    首先介紹一條賦值語(yǔ)句: Sum = Sum + X

    請(qǐng)大家回顧一下賦值的執(zhí)行流程:先計(jì)算”=”右邊表達(dá)式的值,然后賦給左邊的變量。所以這條語(yǔ)句的功能是先計(jì)算Sum+X的值,結(jié)果放在Sum中,這條語(yǔ)句執(zhí)行以后,Sum的新值比原值增加X(jué),如果執(zhí)行多次,就能實(shí)現(xiàn)累加的功能。

    所以輸入5個(gè)數(shù),并輸出這5個(gè)數(shù)的和的程序修改如下:

    Private Sub Form_Click()

    Dim i As Integer, x As Integer

    Sum = 0 ‘Sum 的初始值為0

    For i = 1 To 5

    x = InputBox("請(qǐng)輸入一個(gè)數(shù)")

    Print x;

    Sum = Sum + x ‘累加求和

    Next i

    Print

    Print "這些數(shù)的和="; Sum

    End Sub

    為了在輸入的過(guò)程中能夠清晰的知道當(dāng)前輸入的是第幾個(gè)數(shù),x = InputBox("請(qǐng)輸入一個(gè)數(shù)")可以修改為:x = InputBox("請(qǐng)輸入第" & i & "個(gè)數(shù)")。

    請(qǐng)大家想一想,如果要求輸入100個(gè)數(shù),并輸出這100個(gè)數(shù)的和,應(yīng)該怎么修改程序呢?

    只要把For循環(huán)的終值改為100就可以了。由于輸入100個(gè)數(shù)比較慢,我們可以借助隨機(jī)函數(shù)隨機(jī)生成100個(gè)[1,9]范圍內(nèi)的數(shù)據(jù)進(jìn)行測(cè)試,因?yàn)?00個(gè)數(shù)一行顯示不完,所以我們按每行輸出20個(gè)的形式輸出,代碼修改如下:

    Private Sub Form_Click()

    Dim i As Integer, x As Integer

    Randomize

    Sum = 0 ‘Sum 的初始值為0

    For i = 1 To 100

    x = Int(9 * Rnd + 1)

    Print x;

    If i Mod 20 = 0 Then Print

    Sum = Sum + x

    Next i

    Print

    Print "這些數(shù)的和="; Sum

    End Sub

    總結(jié):通過(guò)這個(gè)例題我們可以看出,即使是求1000個(gè)10000個(gè)甚至更多數(shù)據(jù)的和,只要修改For語(yǔ)句的終值就可以了,不需修改其他代碼。像這類(lèi)重復(fù)處理的問(wèn)題,不借助于循環(huán)結(jié)構(gòu),幾乎無(wú)法實(shí)現(xiàn)問(wèn)題的解。

    接下來(lái)我們?cè)倏匆粋€(gè)例題,求1+2+3+……+100的值。

    通過(guò)觀察我們可以發(fā)現(xiàn),這是一個(gè)累加求和的問(wèn)題,所以就得用到累加公式:Sum=Sum+X,這里的X不是一個(gè)隨機(jī)數(shù),而是有規(guī)律的一列數(shù),1、2、3、……、100,對(duì)于這種初值為1,終值為100,步長(zhǎng)是1的問(wèn)題,很容易聯(lián)想到用For循環(huán)的循環(huán)控制變量i依次取得1、2、3、……、100,然后累加i即可。代碼如下:

    Private Sub Form_Click()

    Dim i As Integer, Sum As Integer

    Sum = 0

    For i = 1 To 100

    Sum = Sum + i

    Next i

    Print "1+2+3+...+100="; Sum

    End Sub

    For循環(huán)的循環(huán)控制變量,不僅可以從小到大變化,也能從大到小變化,只要將步長(zhǎng)設(shè)置為負(fù)數(shù)就可以。比如上例,可以將For語(yǔ)句修改為:

    For i = 100 To 1 Step -1 ,其他代碼不變,求得的就是100+99+98+……+1的和。

    思考:求1+2+3+……+n的值。

    與上例相比,唯一的變化是終值變?yōu)榱薾,n需要從鍵盤(pán)獲得一個(gè)初始值。程序修改為:

    Private Sub Form_Click()

    Dim i As Integer, Sum As Integer

    Dim n As Integer

    n = Val(InputBox("請(qǐng)輸入一個(gè)正整數(shù)"))

    Sum = 0

    For i = 1 To n

    Sum = Sum + i

    Next i

    Print "1+2+3+...+"; n; "="; Sum

    End Sub

    解決了1+2+3+……+n的問(wèn)題,那么如何求1×2×3×……×n的值。(n!)

    類(lèi)似1×2×3×……×n這樣的表達(dá)式,我們稱(chēng)為累乘,如果引入一個(gè)變量F保存累乘的結(jié)果,則只需要將累加表達(dá)式轉(zhuǎn)換成F = F * i 即可。這里必須考慮到F的初始值應(yīng)該為1。所以只要把上面的程序做如下修改即可。

    Private Sub Form_Click()

    Dim i As Integer, F As Long

    Dim n As Integer

    n = Val(InputBox("請(qǐng)輸入一個(gè)正整數(shù)"))

    F = 1

    For i = 1 To n

    F = F * i

    Next i

    Print n; "!="; F

    End Sub

    總結(jié):本文主要討論了For循環(huán)語(yǔ)句結(jié)構(gòu),F(xiàn)or循環(huán)主要用于解決有固定循環(huán)次數(shù)的問(wèn)題,通過(guò)初值、終值和步長(zhǎng)就能計(jì)算出循環(huán)次數(shù)。只要循環(huán)控制變量不在循環(huán)體內(nèi)被重新賦值,循環(huán)的次數(shù)就是確定的((終值-初值)/步長(zhǎng)+1)。

    猜你喜歡
    終值初值賦值
    關(guān)于1 1/2 … 1/n的一類(lèi)初等對(duì)稱(chēng)函數(shù)的2-adic賦值
    L-代數(shù)上的賦值
    具非定常數(shù)初值的全變差方程解的漸近性
    一種適用于平動(dòng)點(diǎn)周期軌道初值計(jì)算的簡(jiǎn)化路徑搜索修正法
    三維擬線性波方程的小初值光滑解
    強(qiáng)賦值幺半群上的加權(quán)Mealy機(jī)與加權(quán)Moore機(jī)的關(guān)系*
    歐元區(qū)4月服務(wù)業(yè)PMI和綜合PMI均創(chuàng)六年最佳
    債券(2017年5期)2017-06-02 14:57:24
    0.3%,歐元區(qū)11月份綜合PMI終值環(huán)比增長(zhǎng)
    利用賦值法解決抽象函數(shù)相關(guān)問(wèn)題オ
    具有無(wú)窮大初值的二維奇異攝動(dòng)問(wèn)題的漸近解
    微博| 盘锦市| 依安县| 清水县| 新营市| 清徐县| 新野县| 墨江| 涿州市| 太仓市| 新建县| 新邵县| 定西市| 兰州市| 澄城县| 广河县| 中超| 长海县| 长治市| 屏边| 鄢陵县| 昭觉县| 株洲县| 石渠县| 湖南省| 江门市| 铜梁县| 武冈市| 合川市| 余姚市| 安多县| 西峡县| 临江市| 客服| 克什克腾旗| 禹州市| 晋州市| 太和县| 两当县| 大洼县| 邵阳市|