張華 陳艷
程序框圖又稱流程圖,是一種用程序框、流程線及文字說明來表示算法的圖形,具有形象直觀、結(jié)構(gòu)清晰和簡(jiǎn)潔明了的特點(diǎn). 但怎樣才能熟練而準(zhǔn)確地畫出程序框圖?本文為此教同學(xué)們“抓特征,明規(guī)則,依步驟”九字訣,讓大家輕松練就畫程序框圖的基本功.
1. 抓特征
組成一個(gè)程序框圖的三要素是“四框”、“一線”加“文字說明”,所以首先要抓住它們各自的特征與意義.
“四框”的特征與意義:(1)終端框(起止框)的特征是圓角矩形,表示算法的開始和結(jié)束,是流程不可缺少的;(2)輸入、輸出框的特征是平行四邊形,表示算法中輸入和輸出的信息,可放在任何需輸入、輸出的位置;(3)處理框(執(zhí)行框)的特征是方角矩形,表示賦值和計(jì)算等,算法中要處理的數(shù)據(jù)或計(jì)算可分別寫在不同的處理框內(nèi);(4)判斷框的特征是菱形,用在當(dāng)算法要求對(duì)某條件是否成立進(jìn)行判斷時(shí),成立時(shí)在出口處表明“是”或“Y”,不成立時(shí)表明“否”或“N”.
“一線”的特征與意義:流程線的特征是帶有方向箭頭的線,用來連接程序框,直觀地表示算法的流程,一個(gè)算法步驟到另外一個(gè)算法步驟用流程線連接.
“文字說明”的特征與意義:在框圖內(nèi)加以說明的文字、算式等,是每個(gè)框圖不可缺少的內(nèi)容.
2. 明規(guī)則
程序框圖的畫法規(guī)則是:(1)用標(biāo)準(zhǔn),即使用標(biāo)準(zhǔn)的框圖符號(hào);(2)按順序,即框圖一般從上到下、從左到右的順序畫;(3)看出入,即大多數(shù)程序框圖的圖形符號(hào)只有一個(gè)入口和一個(gè)出口,判斷框是惟一具有超過一個(gè)出口的符號(hào),條件結(jié)構(gòu)中要在出口處標(biāo)明“是”或“否”;(4)明循環(huán),即循環(huán)結(jié)構(gòu)要注意變量的初始值及循環(huán)終止條件;(5)辨流向,即流程線的箭頭表示執(zhí)行的方向,不可缺少;(6)簡(jiǎn)說明,即在圖形符號(hào)內(nèi)的描述語言要簡(jiǎn)練清晰.
3. 依步驟
畫程序框圖的總體步驟如下:第一步,先設(shè)計(jì)算法,因?yàn)樗惴ǖ脑O(shè)計(jì)是畫程序框圖的基礎(chǔ),所以在畫程序框圖前,首先寫出相應(yīng)的算法步驟,并分析算法需要哪種基本邏輯結(jié)構(gòu)(順序結(jié)構(gòu)、條件結(jié)構(gòu)、循環(huán)結(jié)構(gòu)).若所要解決的問題不需要分情況討論,可用順序結(jié)構(gòu)解決;若所要解決的問題要分類討論,可引入條件結(jié)構(gòu);若所要解決的問題要進(jìn)行重復(fù)的步驟,且這些步驟又有相同的規(guī)律時(shí),可應(yīng)用循環(huán)結(jié)構(gòu).第二步,把算法步驟轉(zhuǎn)化為對(duì)應(yīng)的程序框圖,在這種轉(zhuǎn)化過程中往往需要考慮很多細(xì)節(jié),是一個(gè)將算法“細(xì)化”的過程. 具體畫法步驟請(qǐng)看例題.
例1 若[1+2+3+…+n>2015],試設(shè)計(jì)算法的程序框圖,尋找滿足條件的最小數(shù)[n].
分析 因?yàn)樯婕袄奂訂栴},所以算法含有循環(huán)結(jié)構(gòu),寫出直到型循環(huán)結(jié)構(gòu)的算法步驟如下:
第一步,令[S=0,i=1].
第二步,計(jì)算[S=S+i],[i=i+1].
第三步,判斷[S>2015]嗎?若是,則輸出[n-1],結(jié)束算法;否則,返回第二步.
解 (1)畫順序結(jié)構(gòu)圖,即起止框及兩個(gè)處理框,并分別填入循環(huán)初始條件(如下圖①);(2)畫循環(huán)結(jié)構(gòu)圖,先畫循環(huán)體即兩個(gè)處理框(一個(gè)累加,一個(gè)計(jì)數(shù)),再畫循環(huán)終止條件,即判斷框并判斷[S>2015]?若是,則輸出[n-1],否則,流向循環(huán)體之前進(jìn)行再循環(huán)(如下圖②);(3)畫輸出框輸出[n-1],以及起止框表示算法結(jié)束(如下圖③).
最后,合成整個(gè)算法程序框圖如圖.
點(diǎn)撥 循環(huán)結(jié)構(gòu)必包含順序結(jié)構(gòu)和條件結(jié)構(gòu),所以本題具有一定的典型性和示范性;如累加、累乘等需要反復(fù)執(zhí)行的算法設(shè)計(jì)中,宜使用循環(huán)結(jié)構(gòu),這時(shí)要密切注意“循環(huán)體”“循環(huán)變量”和“循環(huán)終止條件”三個(gè)重要組成部分的框圖設(shè)計(jì).
例2 某商場(chǎng)國(guó)慶期間進(jìn)行優(yōu)惠促銷活動(dòng),規(guī)定若購物總金額不超過800元,不享受任何折扣;若購物總金額超過800元,則超過800元的部分享受一定的折扣優(yōu)惠,按下表折扣分別累計(jì)計(jì)算:
[可以享受的折扣優(yōu)惠金額\&折扣率\&不超過500元的部分\&95折\&超過500元的部分\&9折\&]
設(shè)計(jì)算法的程序框圖,要求輸入購物金額[x],即能輸出實(shí)際交款額.
分析 由題意知,實(shí)際交款額[y]與購物金額[x]之間的函數(shù)關(guān)系是[y=x,0.95x+40,0.9x+105,] [ x≤800,800
第一步,輸入購物金額[x].
第二步,判斷[x≤800]嗎?若是,則[y=x];否則,進(jìn)入第三步.
第三步,判斷[x≤1300]嗎?若是,則[y=0.95x+40];否則,[y=0.9x+105].
第四步,輸出[y],結(jié)束算法.
解 (1)畫順序結(jié)構(gòu)圖,即起止框及輸入框,并用流程線連接;(2)畫條件結(jié)構(gòu)圖,即畫判斷框并判斷[x≤800]?若是,則畫處理框并填入“[y=x]”,否則流向下一個(gè)判斷框;(3)再畫條件結(jié)構(gòu)圖,即畫判斷框并判斷[x≤1300]?若是,則畫處理框“[y=0.95x+40]”,否則畫處理框“[y=0.9x+105]”;(4)畫一個(gè)總的輸出框并輸出[y],以及起止框表示算法結(jié)束.
最后,合成整個(gè)算法程序框圖如圖.
[開始] [[x≤800?]] [輸入x] [輸出y][Y][N][N][結(jié)束] [Y]
點(diǎn)撥 畫程序框圖的關(guān)鍵是分析算法步驟,因?yàn)槌绦蚩驁D是算法步驟的圖形表示,所以算法步驟越明確,畫圖就越容易;另外,在如分段函數(shù)這種需要對(duì)條件進(jìn)行判斷的算法設(shè)計(jì)中,宜使用條件結(jié)構(gòu).