算法是計(jì)算機(jī)理論和技術(shù)的核心,也是數(shù)學(xué)的最基本內(nèi)容之一.隨著現(xiàn)代信息技術(shù)飛速發(fā)展,算法在科學(xué)技術(shù)、社會(huì)發(fā)展中發(fā)揮著越來(lái)越大的作用.算法的基本知識(shí)、方法、思想日益融入社會(huì)生活的許多方面,已經(jīng)成為現(xiàn)代人應(yīng)具備的一種基本素質(zhì).算法這一章節(jié)反映了時(shí)代的特點(diǎn),也是數(shù)學(xué)課程新增內(nèi)容之一.
一、基本知識(shí)
在江蘇高考中均以填空題形式出現(xiàn),主體考查條件語(yǔ)句和循環(huán)語(yǔ)句.條件語(yǔ)句,循環(huán)語(yǔ)句有當(dāng)型循環(huán)、直到型循環(huán)和“For”語(yǔ)句,他們分別可以用下面的語(yǔ)句形式來(lái)描述.
二、三種循環(huán)語(yǔ)句的區(qū)別
三種循環(huán)語(yǔ)句的區(qū)別:do....Until語(yǔ)句是先運(yùn)行循環(huán)體,再判斷條件是否滿足,因此至少會(huì)執(zhí)行循環(huán)語(yǔ)句一次,而while語(yǔ)句只要不滿足條件則不執(zhí)行語(yǔ)句.也就是說(shuō)do....Until先做再判斷,而while語(yǔ)句先判斷再做.而“For”語(yǔ)句中需要知道開(kāi)始和結(jié)束的相關(guān)值,另外“For”語(yǔ)句中可以省略Step“步長(zhǎng)”,默認(rèn)步長(zhǎng)為“1”.
例1求1到100之間的所有素?cái)?shù)并輸出.
分析:在此題中主要考慮如何把素?cái)?shù)從1到100中挑出來(lái),根據(jù)素?cái)?shù)的概念,除了1和本身約數(shù)外沒(méi)有其他約數(shù)的是素?cái)?shù).故在給出的算法中用i除以1到i的所有整數(shù),用i÷j是否等于Int(i÷j)來(lái)判斷是否整除(Int(x),表示不超過(guò)x的最大整數(shù)).用k來(lái)計(jì)數(shù),讓i除以1到i的所有整數(shù)后判斷k是否等于2,若等于2則表明該數(shù)是素?cái)?shù)并輸出,否則不是.
在給出的算法中用到了條件語(yǔ)句沒(méi)有“Else”的情況,即單行條件語(yǔ)句.另外給出的這種算法還可以對(duì)其優(yōu)化,如在“k←k+1”后面加上判斷“If k>2 Then Exit For”,即k>2后,該數(shù)就不可能是素?cái)?shù)了,循環(huán)就可以結(jié)束,開(kāi)始下一個(gè)數(shù)的判斷.計(jì)算機(jī)的最大特點(diǎn)就是計(jì)算,我們?cè)诰帉?xiě)偽代碼的時(shí)候,可以采用這種按序式的計(jì)算.但是一個(gè)好的偽代碼是要盡可能的減少運(yùn)算的次數(shù),以達(dá)到減少計(jì)算機(jī)計(jì)算步驟和時(shí)間的目的.
在問(wèn)題解決方案中,三種循環(huán)語(yǔ)句可以實(shí)現(xiàn)互相轉(zhuǎn)化,但是他們也有不能轉(zhuǎn)化的時(shí)候.do....while語(yǔ)句由于是先執(zhí)行再判斷,while語(yǔ)句是先判斷再計(jì)算,故do....while語(yǔ)句至少會(huì)執(zhí)行一次循環(huán)體.而For語(yǔ)句需要知道開(kāi)始和結(jié)束,循環(huán)的開(kāi)始一般都是知道的,但是結(jié)束不一定是指定變量來(lái)判斷的,故有時(shí)無(wú)法互轉(zhuǎn).因?yàn)镕or語(yǔ)句的簡(jiǎn)潔給不少人留下深刻的印象,所以在寫(xiě)偽代碼的時(shí)候有不少人喜歡用For語(yǔ)句.
三、高考范例
例2(2013·新課標(biāo)Ⅱ理,6)執(zhí)行程序框圖,如果輸入的N=10,那么輸出的S=(用表達(dá)式表示).
答案:1+12!+13!+…+110!.
解析:當(dāng)輸入N=10時(shí),由于初值k=1,S=0,T=1,故程序運(yùn)行過(guò)程依次為:T=11=1,S=0+1=1,k=1+1=2,此時(shí)不滿足k>10→T=12=12!,S=1+12!,k=2+1=3,不滿足k>10→T=12!3=13!,S=1+12!+13!,k=3+1=4仍不滿足k>10,…,直到k=10時(shí),T=19!10=110!,S=1+12!+13!+…+110!,k=11,此時(shí)滿足k>10,結(jié)束循環(huán),輸出S=1+12!+13!+…+110!后結(jié)束.
評(píng)注:對(duì)于此類(lèi)題目尤其要關(guān)注的是它何時(shí)開(kāi)始,何時(shí)結(jié)束,我們?cè)诮獯鸫祟?lèi)題時(shí),要對(duì)其進(jìn)行推演.也就是說(shuō)我們要分析它的每一個(gè)運(yùn)算步驟,把運(yùn)算過(guò)程寫(xiě)出來(lái).
例3(2013·江西師大附中、鷹潭一中聯(lián)考)張老師給學(xué)生出了一道題,“試寫(xiě)一個(gè)程序框圖,計(jì)算S=1+13+15+17+19”.發(fā)現(xiàn)同學(xué)們有如下幾種做法,其中有一個(gè)是錯(cuò)誤的,這個(gè)錯(cuò)誤的做法是()
答案:B.
解析:B圖中,i=5時(shí),仍滿足i≤5的條件,故i=5+1=6,S在原值的基礎(chǔ)上加上12×6-1=111,此時(shí)i≤5不成立,輸出S的值,故B錯(cuò)誤.
評(píng)注:對(duì)于一個(gè)問(wèn)題,有多個(gè)方法可以解決,要仔細(xì)體會(huì)每一種程序框圖的共同點(diǎn)和不同點(diǎn).有時(shí)候即使同一個(gè)程序框圖在寫(xiě)偽代碼時(shí),也會(huì)出現(xiàn)不一樣.
例4(2013·湖北12)閱讀如圖所示的程序框圖,運(yùn)行相應(yīng)的程序,輸出的結(jié)果i=.
答案:5.
解析:當(dāng)a=10時(shí),a≠4,a為偶數(shù),a=5,i=2;a=5,a≠4,a為奇數(shù),a=16,i=3;a=16,a≠4,a為偶數(shù),a=8,i=4;a=8,a≠4,a為偶數(shù),a=4,i=5;a=4,滿足,則輸出i=5.評(píng)注:此題中,首先要明白i在框圖中是用來(lái)計(jì)數(shù)這樣一個(gè)作用,然后再對(duì)框圖進(jìn)行逐步循環(huán),直到滿足a=4為止.
算法在高考中從近幾年的難度來(lái)看,均不難.同學(xué)們要做的是能知道幾種循環(huán)結(jié)構(gòu)以及在程序框圖中,填入一些判斷語(yǔ)句,以使得程序結(jié)束.再次強(qiáng)調(diào)算法中需要我們知道何時(shí)開(kāi)始,何時(shí)結(jié)束.對(duì)于例題4類(lèi)的題目需要我們有耐心認(rèn)真執(zhí)行好它的每一步,注意每個(gè)變量在框圖中的作用.
(作者:陳宏春,海安縣曲塘中學(xué))