石萍
用程序框圖表示算法時,算法的邏輯結(jié)構(gòu)展現(xiàn)得非常清楚. 高中所學(xué)的程序框圖包含三種邏輯結(jié)構(gòu):順序結(jié)構(gòu)、條件結(jié)構(gòu)和循環(huán)結(jié)構(gòu). 其中,考查最多的是循環(huán)結(jié)構(gòu),還經(jīng)常以算法和程序框圖為載體考查對高中其他重要數(shù)學(xué)知識的理解. 程序框圖的考查集中于識圖與填圖,本文著重探討填充類程序框圖和程序語句的相關(guān)解法,以期給大家?guī)砼e一反三的思考.
一、程序框圖的填充
1. 條件結(jié)構(gòu)框圖的填充
例1 已知函數(shù)[y=log2x,x≥2,2-x,x<2,]如圖表示的是給定[x]的值,求其對應(yīng)的函數(shù)值[y]的程序框圖.
①處應(yīng)填寫 ;②處應(yīng)填寫 .
[結(jié)束] [ 開始 ] [輸入x] [①] [輸出y] [②][否][是]
解析 由框圖可知,只要滿足①中的條件則對應(yīng)的函數(shù)解析式為[y=2-x],故此處應(yīng)填寫“[x<2?]”,則②處應(yīng)填寫“[y=log2x]”.
答案 ①[x<2?] ②[y=log2x]
點撥 對這類條件結(jié)構(gòu)的框圖填充,要嚴(yán)格檢驗判斷框,判斷框是分類的標(biāo)準(zhǔn),決定了執(zhí)行的走向. 由執(zhí)行結(jié)果,推斷出“是”或“否”哪一類成立,即可得出所要填的條件.
2. 循環(huán)結(jié)構(gòu)框圖的填充
例2 (1)某工廠2009年初有資金1000萬元,技術(shù)革新后,該廠資金的年增長率為20%,下面是計算該廠2015年底資金算法的兩種程序框圖,圖中的空白處應(yīng)填① ;② .
當(dāng)型循環(huán)程序框圖: 直到型循環(huán)程序框圖:
[結(jié)束] [ 開始 ] [輸出S] [是][否] [輸出S] [是][否] [ 開始 ] [結(jié)束][結(jié)束]
① ②
解析 因為該算法是求從2009年年初起到2015年年底的資金,故循環(huán)體應(yīng)執(zhí)行7次,①是當(dāng)滿足條件時執(zhí)行循環(huán)體,故應(yīng)填“i≤7?”;②是先執(zhí)行循環(huán)體,反復(fù)執(zhí)行直到條件成立為止,故應(yīng)填“[i>7]?”.
答案 ①i≤7? ②i>7?
點撥 對這類循環(huán)結(jié)構(gòu)的填充,要讀懂程序的執(zhí)行過程,確定循環(huán)結(jié)構(gòu)和循環(huán)次數(shù). 當(dāng)型循環(huán)是先判斷后循環(huán),并且條件成立時循環(huán)開始;直到型循環(huán)是先循環(huán)后判斷,并且條件成立循環(huán)結(jié)束,弄清當(dāng)型循壞和直到型循環(huán)判斷條件的區(qū)別即可得出所要填的條件.
例3 運(yùn)行如下圖所示的程序框圖,若輸出的結(jié)果為[137],則判斷框中應(yīng)該填的條件是( )
[ 開始 ] [否][是] [輸出S][結(jié)束]
A. [k≤5]? B. [k≤6]? C. [k≤7]? D. [k≤8]?
解析 第一次運(yùn)行[S=1+][11×2],[k=2];第二次運(yùn)行S=1+[11×2]+[12×3],k=3;…;第n次運(yùn)行S=1+[11×2]+[12×3]+…+[1n(n+1)]=2-[1n+1],k=n+1. 輸出結(jié)果為[137]時,對應(yīng)結(jié)束循環(huán),解得[n=6],故判斷框中應(yīng)該填入“[k≤6]?”.
答案 B
點撥 這類循環(huán)結(jié)構(gòu)的填充難點是確定循環(huán)終止的條件,解決方法是:(1)先假設(shè)參數(shù)的判斷條件不滿足;(2)運(yùn)行循環(huán)結(jié)構(gòu),一直到運(yùn)行結(jié)果與題目要求的輸出結(jié)果相同為止;(3)根據(jù)此時各個變量的值,補(bǔ)全程序框圖的判斷條件;(4)取最終滿足輸出結(jié)果的計數(shù)變量代入判斷框檢驗是否成立.
3. 綜合類框圖的填充
例4 給出30個數(shù):1,2,4,7,…,其規(guī)律是:第1個數(shù)是1,第2個數(shù)比第1個數(shù)大1,第3個數(shù)比第2個數(shù)大2,第4個數(shù)比第3個數(shù)大3,以此類推. 要計算這30個數(shù)的和,現(xiàn)已給出了該問題的算法對應(yīng)的程序框圖(如圖所示),則在圖中判斷框中①處和執(zhí)行框中的②處應(yīng)填的語句分別為( )
[ 開始 ] [否][是] [輸出S][結(jié)束] [①] [②]
A. ①i>30? ②p=p-i B. ①i<30? ②p=p+i
C. ①i≤30? ②p=p+i D. ①i≥30? ②p=p
解析 因為這個算法的功能是求30個數(shù)的和,故循環(huán)體應(yīng)執(zhí)行30次,其中i是計數(shù)變量,因為判斷框內(nèi)的條件就是限制計數(shù)變量i的,這個流程圖中判斷框的向下的出口是滿足條件繼續(xù)執(zhí)行循環(huán),故應(yīng)為“i≤30?”.算法中的變量p實質(zhì)是表示參與求和的各個數(shù),由于它也是變化的,且滿足第i個數(shù)比其前一個數(shù)大i-1,第i+1個數(shù)比其前一個數(shù)大i,故應(yīng)有p=p+i. 最后①處應(yīng)填“i≤30?”,②處應(yīng)填“p=p+i”.
答案 C
點撥 這類填充題的難點是判斷條件和循環(huán)變量的變化規(guī)律都未知,做這類題要運(yùn)用數(shù)列的遞推思想,類比求數(shù)列通項的方法.具體的解決方法:(1)讀懂算法,根據(jù)循環(huán)變量的初始條件、循環(huán)次數(shù)確定循環(huán)終止的條件;(2)確定累加變量、累乘變量;(3)再確定循環(huán)體中循環(huán)變量的變化規(guī)律.
填充類程序框圖題往往都是已知算法框圖的執(zhí)行結(jié)果,填寫算法的空白部分,空白部分重點考查循環(huán)體和控制條件.解決這類題要知道框圖的結(jié)構(gòu)和功能,能夠?qū)懗鰣?zhí)行過程,對所要填寫的空白內(nèi)容的目的要明確,特別是循環(huán)結(jié)構(gòu)中循環(huán)變量的初始值和終止值,以及循環(huán)變量的變化規(guī)律(累加求和,累乘求積等),涉及內(nèi)容主要圍繞數(shù)列、求和、求積、分段函數(shù)求值、不等式、統(tǒng)計等知識,進(jìn)一步弄清循環(huán)的次數(shù),由判斷框的檢驗原則嚴(yán)格檢驗,最終得出空白部分應(yīng)填什么.
二、程序語句的填充
程序語句的作用就是實現(xiàn)算法與計算機(jī)的轉(zhuǎn)換,各種基本語句的應(yīng)用,體現(xiàn)的都是算法思想. 那么,程序語句的規(guī)范性就顯得尤為重要.
例5 將下列程序補(bǔ)充完整:輸入兩個數(shù),輸出其中較大的數(shù).
[INPUT a,b
IF a>b THEN
PRINT a
ELSE
END IF
END]
答案 PRINT b
例6 下面方框中為一個求20個數(shù)的平均數(shù)的程序,則在橫線上應(yīng)填的語句為 .
[i=1
S=0
DO
INPUT X
S=S+X
i= i +1
LOOP UNTIL
a=S/20
PRINT a
END]
解析 該算法程序中,使用了UNTIL循環(huán)語句,按照該循環(huán)特征,當(dāng)某一次條件滿足時,不再執(zhí)行循環(huán)體,跳到LOOP UNTIL句的后面,執(zhí)行其他的語句. 根據(jù)問題要求,應(yīng)填“[i>20]”.
答案 [i>20]
例7 程序: [S=0
i=1
①
WHILE i<=100
②
S=S+i
③
WEND
④]
要使上述程序能運(yùn)算出“1+2+…+100”的結(jié)果,需將語句“[i=i+1]”加在( )
A. ①處 B. ②處
C. ③處 D. ④處
解析 計數(shù)變量應(yīng)在循環(huán)語句的循環(huán)體中,記錄的是累加發(fā)生的次數(shù),故應(yīng)在③處.
答案 C
在前面程序框圖的填充方法的基礎(chǔ)上,程序語句的填充要掌握兩點:一是要讀懂算法的邏輯結(jié)構(gòu);二是注意基本語句的格式,注重規(guī)范性.