王修湯



同學們在學習中經常會遇到有規律的重復計算,或在生活中對某個事件進行重復操作,這時候我們就要用循環語句來表示算法.那么循環語句的含義是什么?義如何書寫呢?
一、解讀
先看一個簡單的例子:
例1 寫出求1+3+5+…+99所得結果的一個偽代碼.分析 由于是重復相加,并且數字1,3,5,…,99是有規律的一列數,逐漸循環遞增,每次增幅為2,所以可以用For循環語句來實現計算.
第一步:選擇一個變量S表示和,并賦給初值0;
第二步:開始進入For循環語句,首先設,為循環變量,分別設定其初值、步長、終值.這里初值為1,步長為2(步長是指循環變起始的個體編號m,然后按照逐次加k的原則確定后續要抽的編號,當N能被n整除時,取k=N/n;當N除以n的余數為r時,取k=(N-r)/n;④抽樣,將編號為m,m+k,m+2k,...,(n-1)k2k,…,m+(n-l)k的個體抽出.
簡單隨機抽樣、分層抽樣、系統抽樣是最常見的三種抽樣方法.當總體中個體個數量,每次增加的值.若步長為1,可以省略不寫,若為其他值,則不可省略),終值為99;
第三步:寫循環表達式S←S+I(也稱循環體);
第四步:用“End For“控制其是否開始一次新的循環;
第五步:輸出結果.
其算法的偽代碼如下:
第三步循環體“S←S+I”的理解如下:
當I=l時,S←S+I是S←S+l,并把O+l賦值給S,第一次循環結束時S為1,此時S記錄了第一個數的值,遇到“End”開始第二次循環;
當I←3時,S—S+I是S←S+3,并把較少時采用簡單隨機抽樣,它是其他兩種抽樣的基礎;當總體中個體個數較多時采用系統抽樣,需要將樣本分成均勻的幾部分,在第一部分中采用簡單隨機抽樣,當總體由差異明顯的幾部分組成時采用分層抽樣,而各層中通常采用簡單隨機抽樣或系統抽樣.三種抽樣方法都保證了每個個體被抽取到的可能性相等,1+3賦值給S,第二次循環結束時S為1+3-4,此時S記錄了前兩個數的和,遇到“End”開始第三次循環;
當,一5時,S←S+I是S←5+5,并把(1+3)+5賦值給S,第三次循環結束S為1+3+5=9,此時S記錄的是前三個數的和,遇到“End”開始第四次循環;
直到1= 99時才真正“End”,此時退出循環,輸出結果,
這個算法我們還可以用While語句格式書寫如下:
這時循環體為“S←S+/,I←/+2”,每次開始執行循環體前,都要判斷表達式“I<101”是否為真.如果表達式為真,則執行循環體部分,這樣重復執行,一直到表達式“I<101”為假時,就跳過循環體部分,結束循環,輸出結果.
二、識別
For循環語句和While循環語句是算法中兩類重要的模型,初次學習有時會混淆這兩種語句,下面我們通過實例再來識別一下這兩種模型.
例2 把一個數S乘以2,再加上1,稱為一次操作,試用循環語句寫出以下算法.
(1)當S=l時,求把S經過100次操作后所得的數;
(2)當S=l時,求把S經過77次操作后所得數大于2100的最小自然數n.第(1)題是已經知道了要經過100次操作,相當于知道了終值是100,所以我們用For循環語句來書寫.
第(2)題是要求運算結果要大于2100,但不知道要操作多少次,故選擇While循環語句比較合適.
三、運用
初次學習For循環語句和While循環語句,一定還會出現各種各樣的錯誤,尤其是給初值賦值時,有時會搞錯了初始值,或者在設計循環體時,顛倒了執行順序.例3 分別用While語句和For語句給出求1+1/2+1/3+…+1/100的值的算法.
錯解While語句和For語句分別如下:
錯因剖析 在While語句程序里面I←1,S←1,控制循環的條件為,I≤100,按此算法最后結果應為1+1+1/2+1/3…+1/100,而不是題目要求的1+1/2+1/3+…+1/100,改正的方法是將S←1改為s←0;在For語句里S←1,I的終值是100,按此算法最后結果是1+1/2+1/3+…+1/100+1/101,也不是題目要求的1+1/2+1/3+…+1/100,改正的方法是將,的終值改為99.
正解 While語句和For語句分別如下:
評注 一個程序編寫完成之后,最好在草稿紙上試“運行”一下,看編寫的程序是否滿足題意,不行,就要找出問題所在,然后進行調整修改.endprint