安徽省合肥中國(guó)科大附中 黃嚴(yán)生 高龍錦
“算法初步”學(xué)習(xí)的定位與思考
安徽省合肥中國(guó)科大附中 黃嚴(yán)生 高龍錦
算法思想是新課程強(qiáng)調(diào)的一種數(shù)學(xué)思想,算法的基本知識(shí)、方法和思想已滲透到人們的日常生活的方方面面,成為現(xiàn)代人理應(yīng)具備的一種數(shù)學(xué)素養(yǎng)。算法通常是指按照一定規(guī)則解決某一類問題的明確和有限的步驟。因此,算法有三個(gè)重要特征,其一是有窮性,一個(gè)算法必須保證能在執(zhí)行有限步后結(jié)束,不能是無限的;其二是明確性,算法的每一步和次序必須是明確的;其三是有效性,算法每一步都是有效的,能精確地運(yùn)行。算法有三種語言,即自然語言、框圖語言、程序語言。程序框圖又有三種基本邏輯結(jié)構(gòu),即順序結(jié)構(gòu)、條件結(jié)構(gòu)(分支結(jié)構(gòu))、循環(huán)結(jié)構(gòu)。算法知識(shí)結(jié)構(gòu)如下:

本章的重點(diǎn)是程序框圖。程序框圖往往含有順序結(jié)構(gòu)、條件結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種基本邏輯結(jié)構(gòu),其中的難點(diǎn)是對(duì)循環(huán)結(jié)構(gòu)的理解和應(yīng)用。正確理解循環(huán)結(jié)構(gòu),首先要確定是當(dāng)型循環(huán)結(jié)構(gòu)還是直到型循環(huán)結(jié)構(gòu),第二要認(rèn)清表示累計(jì)變量的意義,第三要確定在哪一步開始循環(huán)。
算法的程序語言,是將算法框圖轉(zhuǎn)化為計(jì)算機(jī)能識(shí)別和執(zhí)行操作的語句,任何一種正確的算法程序,輸入到計(jì)算機(jī)中,通過計(jì)算機(jī)運(yùn)行就能輸出結(jié)果。輸入語句、輸出語句和賦值語句是任何一個(gè)算法中必不可少的語句。在賦值語句中,一定要注意其格式要求,如:“=”的右側(cè)必須是數(shù)值表達(dá)式,左側(cè)必須是變量,一個(gè)語句只能給一個(gè)變量賦值,變量的值始終等于最近一次賦給它的值,先前的值將被替換。在一個(gè)算法對(duì)輸入的值進(jìn)行判斷時(shí),就需要條件語句。若一個(gè)算法中某些步驟需要反復(fù)執(zhí)行多次,就少不了循環(huán)語句。
多元表征是數(shù)學(xué)一大特征,算法是解決某一類問題有限的步驟,表征算法的語言有三種,我們可以將解決問題的步驟分別用自然語言、框圖語言、程序語言表征出來。我們要能實(shí)現(xiàn)這三種語言的相互轉(zhuǎn)化。自然語言就是用文字表述一個(gè)算法;框圖語言用框圖及相關(guān)的連接符號(hào)表示算法,這種表示方法具有鮮明、直觀的特征;程序語言是用特定(計(jì)算機(jī)能識(shí)別)的語言表示算法,用于計(jì)算機(jī)識(shí)別和運(yùn)行,只要輸入計(jì)算機(jī),經(jīng)過計(jì)算機(jī)運(yùn)行后就能輸出結(jié)果。下面結(jié)合實(shí)例來分析三種語言之間的轉(zhuǎn)化。(由于順序結(jié)構(gòu)簡(jiǎn)單易懂,這里不再贅述)
1.條件結(jié)構(gòu)的應(yīng)用
解析求分段函數(shù)f(x)的值,首先要對(duì)自變量x的值在什么范圍內(nèi)進(jìn)行判斷,然后代入相應(yīng)的解析式中進(jìn)行計(jì)算。所以算法步驟可以寫成:
第一步,輸入一個(gè)實(shí)數(shù)x。第二步,判斷x的取值范圍,若x<0,則輸出x+1;否則,再判斷x的取值范圍,若x≤2,則輸出(x-1)2;否則,輸出-x+3。
程序框圖:


評(píng)析例1要求設(shè)計(jì)求分段函數(shù)值的算法。雖然在函數(shù)解析式中的三個(gè)條件是并列的,但在算法中,首先判斷x<0,若是,則執(zhí)行計(jì)算x+1,否則,再對(duì)x的取值進(jìn)行判斷,這就是基本邏輯結(jié)構(gòu)中的條件結(jié)構(gòu)。本題在設(shè)計(jì)算法時(shí),先將x分為兩類:一類是x<0,另一類是x≥0;在x≥0的前提下,再對(duì)x的取值進(jìn)行第二次分類,即分x≤2和x>2兩類。算法中的這種處理方法值得大家注意。程序中每執(zhí)行完一個(gè)條件結(jié)構(gòu)后都有必須有結(jié)束條件結(jié)構(gòu)的語句“ENDIF”,因此,上面程序出現(xiàn)兩個(gè)“ENDIF”,其中,第一個(gè)“ENDIF”是執(zhí)行x≤2條件的結(jié)束語,第二個(gè)“ENDIF”是執(zhí)行x<0條件的結(jié)束語。
2.循環(huán)結(jié)構(gòu)的應(yīng)用
例2設(shè)計(jì)一個(gè)計(jì)算1+2+22+…+2100的值的算法,畫出程序框圖,并寫出程序。
解析第一步,令S=1,i=1。第二步,若i≤100成立,則執(zhí)行第三、第四步;否則,輸出S,結(jié)束算法。第三步,S=S+2i。第四步,i=i+1,返回第二步。
程序框圖:


評(píng)析上面是求數(shù)列前n項(xiàng)和(n=100)的一個(gè)算法,實(shí)際上,第一次計(jì)算1+2=3,第二次計(jì)算3+22=7,第三次計(jì)算7+23=15,…,第100次計(jì)算2100-1+2100。這個(gè)過程中包含重復(fù)操作的步驟,因此需要使用循環(huán)結(jié)構(gòu)。上述的算法用的是當(dāng)型循環(huán)結(jié)構(gòu),其特征為:在每次執(zhí)行循環(huán)體前,對(duì)條件進(jìn)行判斷,當(dāng)條件滿足時(shí),執(zhí)行循環(huán)體,否則終止循環(huán)。
我們也可以用直到型循環(huán)結(jié)構(gòu)設(shè)計(jì)算法,其算法如下。
解析第一步,令S=1,i=1。第二步,S=S+2i。第三步,i=i+1。第四步,若i>100成立,則輸出S,算法結(jié)束;否則,返回第二步。

評(píng)析此算法用的是直到型循環(huán)結(jié)構(gòu),其特征為:在執(zhí)行一次循環(huán)體后,對(duì)條件進(jìn)行判斷,如果不滿足條件,就繼續(xù)執(zhí)行循環(huán)體,直到條件滿足時(shí)終止循環(huán)。注意直到型和當(dāng)型循環(huán)結(jié)構(gòu)的區(qū)別和聯(lián)系,它們都是對(duì)循環(huán)體反復(fù)執(zhí)行多次,但執(zhí)行次序不同。當(dāng)型循環(huán)結(jié)構(gòu)先判斷條件,滿足條件執(zhí)行循環(huán)體;而直到型循環(huán)結(jié)構(gòu)先執(zhí)行循環(huán)體,再判斷條件,不滿足條件繼續(xù)執(zhí)行循環(huán)體。
算法思想是新課程強(qiáng)調(diào)的一種數(shù)學(xué)思想,算法初步是新課程試驗(yàn)教材的新增內(nèi)容。上面通過實(shí)例分析了算法的三種語言的相互轉(zhuǎn)化和應(yīng)用。我們常常會(huì)遇到根據(jù)算法框圖識(shí)別框圖所表示的具體算法,并根據(jù)算法計(jì)算出輸出結(jié)果的一類試題。
例3如果執(zhí)行右面的程序框圖,輸入N=5,則輸出的數(shù)等于()。



解析


此題若使用當(dāng)型循環(huán)結(jié)構(gòu)或直到型循環(huán)結(jié)構(gòu),則應(yīng)做如下修改:

無獨(dú)有偶,2012年高考新課標(biāo)Ⅰ卷再次出現(xiàn)這種情況,題目如下:
如果執(zhí)行右邊的程序框圖,輸入正整數(shù)N(N≥
2)和實(shí)數(shù)a1,a2,…,an,輸出A和B,則()。

請(qǐng)同學(xué)們思考本題的輸出結(jié)果,并自己動(dòng)手修改,將其改為規(guī)范的框圖。
通過以上的算法分析我們可以知道,對(duì)于算法我們并不陌生。我們?nèi)粘I钪幸呀?jīng)使用了算法思想,只是沒有系統(tǒng)地總結(jié)。如加法法則、乘法法則、去括號(hào)法則、對(duì)數(shù)運(yùn)算法則、向量運(yùn)算、必修1中“二分法求函數(shù)的零點(diǎn)”等都是具體的算法。正如張奠宙先生所說的“算法貫穿整個(gè)中學(xué)數(shù)學(xué)”,算法不是空洞的,而是實(shí)實(shí)在在的,每一個(gè)算法都有它的知識(shí)載體。所以,將算法的學(xué)習(xí)與相關(guān)知識(shí)聯(lián)系起來,能夠幫助我們體會(huì)數(shù)學(xué)的整體性,加深對(duì)所學(xué)數(shù)學(xué)知識(shí)的理解。
通過本章的學(xué)習(xí),我們應(yīng)充分認(rèn)識(shí)到算法重視“算則”,更重視“算理”。算法具有程序化、機(jī)械化的特點(diǎn),同時(shí)又具有抽象性、概括性和精確性的特點(diǎn)。對(duì)于一個(gè)具體算法而言,它非常具體,具體到某個(gè)計(jì)算公式以及計(jì)算過程,任何一個(gè)疏漏或錯(cuò)誤都將導(dǎo)致算法出錯(cuò)。因此,算法學(xué)習(xí)是培養(yǎng)思維的縝密性的有效方法。
