算法思想是現(xiàn)代人所應(yīng)該具備的一種數(shù)學(xué)素養(yǎng),高中教師應(yīng)把握讓中學(xué)生理解算法思想這一本質(zhì),在數(shù)學(xué)教學(xué)中滲透算法思想,讓學(xué)生體會算法思想,并將算法思想融入到自己的生活中.
算法作為一個全新的課題,已經(jīng)成為計算科學(xué)的重要基礎(chǔ),它在科學(xué)技術(shù)和社會發(fā)展中起著越來越重要的作用,算法的思想已經(jīng)成為現(xiàn)代人所具備的一種數(shù)學(xué)素養(yǎng),每一個高中學(xué)生,都應(yīng)該在九年義務(wù)教育的基礎(chǔ)上,為適應(yīng)時代發(fā)展的需要,進一步提高自身的數(shù)學(xué)素養(yǎng).本次高中數(shù)學(xué)課程改革將“算法初步”列為高中必修課程內(nèi)容的一部分,既體現(xiàn)了現(xiàn)代社會使公民具有較高數(shù)學(xué)素養(yǎng)的要求,也是基礎(chǔ)數(shù)學(xué)教育改革面向世界、面向未來、面向現(xiàn)代化的體現(xiàn),是歷史的必然.
1算法概念及算法基本思想的理解
算法:(algorithm)一詞出現(xiàn)于12世紀,指的是用阿拉伯?dāng)?shù)字進行算術(shù)運算的過程.在數(shù)學(xué)中,算法通常是指按照一定規(guī)則解決某一類問題的明確和有限的步驟.現(xiàn)在,算法通常可以編成計算機程序,讓計算機執(zhí)行并解決問題.
算法的基本思想是程序化思想.要理解算法的基本思想,一定要把握算法的主要特征:
(1)有窮性:一個算法的步驟序列是有限的,它應(yīng)在有限步操作之后停止,而不能是無限的.
(2)確定性:算法中的每一步應(yīng)該是確定的并且能有效地執(zhí)行且得到確定的結(jié)果.
(3)順序性和正確性:算法從初始步驟開始分為若干明確的步驟,每一個步驟只能有一個確定的后繼步驟,前一步是后一步的前提,只有執(zhí)行完前一步才能進行下一步,并且每一步都準(zhǔn)確無誤,才能完成問題.
(4)不唯一性:求解某一個問題的解法不一定是唯一的,對于一個問題可以有不同的算法.
(5)普遍性:很多具體的問題,都可以設(shè)計合理的算法去解決,如心算、計算器計算都要經(jīng)過有限的、事先設(shè)計好的步驟加以解決.
2算法思想在教學(xué)中的滲透
2.1算法思想在算法概念教學(xué)前的滲透
首都師范大學(xué)王尚志教授在新教材課程培訓(xùn)中說:“我們有一個更重要的想法,就是把算法的思想貫穿于教材的自始至終,凡是能夠用算法表示出來的東西,我們盡量用算法表示出來,之所以強調(diào)這些,與我們中國的數(shù)學(xué)教學(xué)傳統(tǒng)是一脈相承的.”《算法初步》內(nèi)容安排在高中數(shù)學(xué)必修3中進行教學(xué),在進行必修1、必修2的教學(xué)時,可以提前介入算法的思想,把解決問題的步驟算法化,既有利于后續(xù)學(xué)習(xí),也有利于學(xué)生理清解決問題的思路和規(guī)范解決問題.中學(xué)數(shù)學(xué)中有很多內(nèi)容是和算法內(nèi)容密切聯(lián)系在一起的.一般情況下,能夠利用概念、公式或者定理、法則來解題的過程都可以看成算法的過程,都可以用程序框圖或程序語言來描述,比如線性方程組的解法,求一元二次方程的根,還有函數(shù)奇偶性、單調(diào)性的判定,數(shù)列求和,等等.
例1用算法框圖描述判斷一個函數(shù)奇偶性的步驟.
算法分析:
第一步:判斷f(x)定義域是否對稱,若否,則f(x)非奇非偶,若是,則執(zhí)行第二步;
第二步:計算f(-x),判斷f(-x)與f(x)的關(guān)系,若f(-x)=f(x)①,則f(x)是偶函數(shù);若f(-x)=-f(x)②則f(x)是奇函數(shù);若①②都成立,則f(x)是既奇又偶函數(shù):若①②都不成立,則f(x)是非奇非偶函數(shù),如圖1.
《標(biāo)準(zhǔn)》要求在教學(xué)中應(yīng)注意挖掘教材,合理選擇相關(guān)內(nèi)容滲透算法.在其他內(nèi)容中滲透算法的目的有兩個:一方面借助直觀的算法表示(比如程序框圖),有利于學(xué)生更好地理解該內(nèi)容;另一方面也有利于學(xué)生進一步學(xué)習(xí)算法,體會算法思想.
2.2在算法教學(xué)中,加強算法思想學(xué)習(xí)
2.2.1選取教學(xué)例子時要合理定位
【1】選取的例子來自學(xué)生已學(xué)過的數(shù)學(xué)知識,要貼近學(xué)生學(xué)習(xí)“最近發(fā)展區(qū)”.選擇這樣的問題,一方面是期望打破學(xué)生對算法的陌生感,另一方面也是希望將重點放在算法的理解上,而不是算法所涉及的問題本身,這樣,學(xué)生就易于理解算法的程序化思想.
如例2有一函數(shù)y=-1(x<0)0(x=0)1(x>0)畫出流程圖,輸入一個x值,一個y值.
解答用變量x、y分別表示自變量和函數(shù)值,算法步驟如下:
【2】選取的例子要有一定的基礎(chǔ),不要偏難偏怪,但要蘊涵豐富的算法思想,能夠讓學(xué)生從中學(xué)習(xí)算法的“三基”—基本思想、基本結(jié)構(gòu)、以及基本語句.
例3給出1+2+3+4+5+6+7+8+9+10的算法,并畫出流程圖
算法分析
第一步:取n=10.
第二步:計算n(n+1)2.
第三步:輸出運算結(jié)果.(如圖3)
【3】選取的例子要蘊涵中國傳統(tǒng)數(shù)學(xué)思想,貼近學(xué)生的生活,并且要有一定的趣味性,能增強學(xué)生學(xué)習(xí)算法的積極性,激發(fā)探究算法知識的興趣,利于學(xué)生對算法思想的理解.
例4意大利數(shù)學(xué)家裴波那契,在1202年出版的一書里提出了這樣的一個問題:一對兔子飼養(yǎng)到第二個月進入成年,第三個月生一對小兔,以后每個月生一對小兔,所生小兔能全部存活并且也是第二個月成年,第三個月生一對小兔,以后每月生一對小兔,問這樣下去到年底應(yīng)有多少對兔子?試寫出解決此問題的算法及相應(yīng)的流程圖.
分析:根據(jù)題意可知,第一個月有1對小兔,第二個月有1對成年兔子,第三個月有兩對兔子,從第三個月開始,每個月的兔子對數(shù)是前面兩個月兔子對數(shù)之和,設(shè)第n個月有s對兔子,第n-1個月有i對兔子,第n-2個月有j對兔子,則有s=i+j,一個月后,即第n-1個月時,式中變量i的新值應(yīng)為第n個月兔子對數(shù)(s的舊值),變量j的新值應(yīng)變?yōu)榈趎-1個月兔子的對數(shù)(i的舊值),這樣,用i+j求出變量s的新值就是n+1個月兔子的對數(shù),以此類推,可以得到一個數(shù)序列,數(shù)序列的第12項就是年底應(yīng)有兔子對數(shù),我們可以先確定前兩個月的兔子對數(shù)均為1,以此為基準(zhǔn),構(gòu)造一個循環(huán)結(jié)構(gòu),讓表示“第x個月的k從3逐次增加1,一直變化到12,最后一次循環(huán)得到的s”,就是所求結(jié)果.
算法步驟如下:
第一步:輸入i,j,k.
第二步:i=1,j=1,k=3.
第三步:判斷k≤12是否成立,
若k≤12不成立,則輸出s.
第四步:若k≤12成立,則s=i+j.
第五步:i=s,j=i.
第六步:k=k+1
第七步:回到第三步,重新執(zhí)行第三步、
第四步、第五步、第六步.(如圖4)
2.2.2結(jié)合數(shù)學(xué)史內(nèi)容,加深算法思想的學(xué)習(xí)和理解,培養(yǎng)學(xué)生的數(shù)學(xué)精神
算法是中國古代數(shù)學(xué)的精髓,很多數(shù)學(xué)典籍中都包含一些經(jīng)典的實例及其算法.如《九章算術(shù)》及其劉徽注等中的算法思想,以及“賈憲三角”(二項式定理系數(shù)表)與“增乘開方法”(即其后歐洲所講的“霍納法”),“秦九韶程序”(高次方程數(shù)值解法),“垛積術(shù)”(高階等差級數(shù)求和)與“招差術(shù)”(高次內(nèi)插法),“大衍求一術(shù)”和“大衍總數(shù)術(shù)”(一次同余組解法),“天元術(shù)”(數(shù)字高次方程組的立法)和“四元術(shù)”(高次方程組的解法)等算法,這些古代數(shù)學(xué)中的算法,其算法思想對我們今天數(shù)學(xué)問題的解決有極大的啟發(fā)作用.要重視介紹計算機算法對現(xiàn)代數(shù)學(xué)研究和發(fā)展的作用.如吳文俊先生怎樣從中國古代數(shù)學(xué)的算法思想中汲取營養(yǎng),推陳出新,首先用計算機算法實現(xiàn)了幾何定理的機器證明,以及用吳氏機械算法對數(shù)學(xué)的貢獻和進展
2.2.3算法思想的學(xué)習(xí)和理解過程中學(xué)生學(xué)習(xí)誤區(qū)
①學(xué)生在寫“判斷53,1997是否為質(zhì)數(shù)”的算法步驟,如:
第1步,2不能整除53,所以進行下一步;
第2步,3不能整除53,所以進行下一步;
第3步,4不能整除53,所以進行下一步;
……
第52步,5不能整除53,所以進行下一步;
學(xué)生在寫該步驟時,由于該算法步驟冗長,所以會采用“……”,由于(……)的不確定性,與算法所要求的“明確性”相悖,因而不能表示一個算法.
②對于類似x=x+1的賦值語句,學(xué)生受思維定勢的影響,往往將這個式子看成代數(shù)式,顯然這是不成立的,所以,要讓學(xué)生真正理解賦值的含義就需要理解變量的含義,這里的x僅僅是表示一個數(shù)值的存儲位置,x=x+1使得這個存儲位置上的值增加了1.
教學(xué)時可以用下列的比喻幫助學(xué)生理解賦值語句x=x+1,如果用x表示一個房子中的人數(shù),當(dāng)房子中的人數(shù)有10人時,若再走進1人,房子中的人數(shù)就變?yōu)?1,這時x=10+1.如果個房子中走進1人前與1人后的人數(shù)都用x表示,就得到x=x+1.因此,在賦值語句x=x+1中,“=”兩邊的x所表示的值是不同的.
2.3在后續(xù)學(xué)習(xí)中,仍加強算法思想滲透
算法的知識及思想是學(xué)生的終身發(fā)展所必需的,但是要求高中學(xué)生通過12課時就能系統(tǒng)地掌握算法的所有知識,形成非常成熟的算法思想,顯然是不現(xiàn)實的,因此學(xué)習(xí)算法內(nèi)容后,在后續(xù)學(xué)習(xí)中我們要多層次、多方位地將算法思想融入到課堂教學(xué)中,并鼓勵學(xué)生盡可能地運用算法解決相關(guān)問題.如我們在學(xué)習(xí)統(tǒng)計概率知識時仍然引導(dǎo)學(xué)生將問題算法化.
一枚硬幣有正反兩個面,擲硬幣時每面朝上的機會均等,但在硬幣落地之前,我們不能預(yù)知哪面朝上,這時我們說哪一面朝上是隨機的.
由函數(shù)rnd產(chǎn)生的隨機數(shù)序列中,隨機數(shù)值基本上是均勻分布的,也就是說,幾乎有一半的數(shù)分布在0到0.5之間,其他一半數(shù)分布在0.5(包括0.5)到1之間,與此相仿,在擲硬幣時,正面向上或反面向上的概率各占50%,所以我們可以用隨機數(shù)模擬硬幣的正反面,用rnd產(chǎn)生隨機數(shù)(相當(dāng)于擲硬幣),如果隨機數(shù)大于0.5(相當(dāng)于正面朝上),輸出“front”,如果隨機數(shù)小于或等于0.5(相當(dāng)于反面朝上),輸出“back”,如果擲10次硬幣,則產(chǎn)生10個隨機數(shù),這就是用隨機函數(shù)來模擬擲硬幣這一隨機事件的算法.(如圖5)
3結(jié)束語
高中教學(xué)應(yīng)側(cè)重于思想和方法的滲透,教學(xué)過程中要始終把握算法思想這一靈魂,其余內(nèi)容均由此展開.通過學(xué)習(xí),要讓學(xué)生在自己的頭腦里建構(gòu)起“算法思想”,在自己的學(xué)習(xí)和生活中用來指導(dǎo)自己的行為.并以算法為線索經(jīng)常反思所學(xué)過的數(shù)學(xué)知識或者其他學(xué)科的知識,即將算法思想融入自己的生活.
參考文獻
1劉紹學(xué).普通高中課程標(biāo)準(zhǔn)實驗教科書#8226;數(shù)學(xué)3(A版)[M].北京:人民教育出版社,2004
2史炳星,王桂霞.算法初步[M].北京:高等教育出版社,2005
3李建華.算法及其教育價值[J].?dāng)?shù)學(xué)教育學(xué)報,2004(8)
4李亞嶺.算法及其學(xué)習(xí)的意義[J].?dāng)?shù)學(xué)通報,2004(2)
5許夢日.高中數(shù)學(xué)“算法初步”部分與高校教學(xué)銜接問題的探究.阜陽師范學(xué)院學(xué)報(自然科學(xué)版),2007(3)
本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文