摘 要:作為基礎教育的數學新課程改革已把算法列為高中數學課程新的雙基內容之一。的確,算法學習的現實意義不容忽視,它不但能夠培養學生有條理地思考與表達的能力,而且能發展學生解決實際問題的能力,并為今后學習程序設計打下基礎。
關鍵詞:高中數學 教學 算法
一、高中數學算法教學的特點
2003年頒布的《普通高中數學課程標準(實驗)》中指出:“算法教學必須通過實例進行,使學生在解決具體問題的過程中學習一些基本邏輯結構和語句。”由此可見,算法案例是算法知識的載體,也是算法教學的靈魂,師生無論對算法結構,算法語言的探討都以案例為媒介進行,案例在算法教學中占有舉足輕重的作用。從《標準》的要求中可以看出,算法的定義和特性沒有作出要求,但是《標準》要求“體會算法的思想,了解算法的含義”“進一步體會算法的基本思想”,不僅在各部分的目標中作了強調,而且在“說明與建議”中特別指出:“本模塊的主要目的是使學生體會算法的思想,提高邏輯思維能力,不要將此部分內容簡單處理成程序語言的學習和程序設計。”可見,中學階段安排算法的學習,除了學習必要的算法知識,更重要的是使學生接受算法思想的熏陶,而不是以學習多少算法知識為目標。
二、高中數學算法的案例
老師:意大利數學家菲波拉契在出版的書里提出了這樣一個問題:一對兔子飼養到第二個月進入成年,第三個月生一對小兔,以后每個月生一對小兔,所生小兔能全部存活并且也是第二個月成年,第三個月生一對小兔,以后每個月生一對小兔,問這樣下去到年底應有多少對兔子?請用偽代碼表示該問題的算法。
老師請同學們進行小組討論,適時提示:第一個月有一對小兔,第二個月有一對成年兔子,第三個月有兩對兔子,從第三個月開始,每個月的兔子對數是前面兩個月兔子對數的和,設第n(n≥2)個月有A對兔子,第n-1個月有B對兔子,第n-2個月有C對兔子,則有A=B+C,一個月后,即n+1個月時,式中變量的新值應變為第n個月兔子的對數(A的舊值),變量C的新值應變為第n-1個月兔子的對數(B的舊值),這樣,用B+C求出變量A的新值就是n+1個月兔子的對數,以此類推,得到一個數的序列,數序列的第12項就是年底應有兔子對數,我們可以先確定前兩個月的兔子對數均為1,以此為基準,構造一個循環程序,讓表示“第x個月的I從3逐次增加1,一直變化到12,最后一次循環得到的A”就是所求結果。偽代碼如下:
B-1
C-1
I-3
WhileI≤12
A-B+C
C-B
B-A
I-I+1
End While
Print A
老師請同學們思考上述問題能否換用Until語句及For語句表述。
循環語句主要用來實現算法中的循環結構,處理一些需要反復執行的運算任務,在累加求和,累乘求積等問題中常用到。希望同學們掌握For語句,While語句及Until語句的一般格式。
三、高中數學算法的變式教學法
變式教學是在教學中運用不同形式的直觀材料或事例說明不同事物的本質屬性,或變換非同類事物的本質特征以突出事物的本質特征。變式教學是促進有效的數學學習的中國方式。
剖析清楚教材中幾例典型算法的算理尤為重要,數學必修課程的重點之一不在實踐層面的算法語言以及一些語法的規定,而在算法思想的理解上。下面以典型的求1+2+3+4+…+100的和為例談如何剖析算理。
例:設計計算1+2+3+4+…+100的值的算法,并畫出程序框圖。
算法:按照通常的加法計算法則,可以按照從前往后的次序依次計算下去。
分析:如何實現以上算法呢?我們知道,上述計算過程,實際上始終重復著一個計算,即用下一個數加上上一個計算結果,直到加到100時這個“和”就是所要求的結果。根據這一思想,我們先設定一個“和”,通過一種手續讓這個“和”不斷增加,直至加上最后一個數100。這個“和”就是所求結果。為此,我們引進一個計數變量i,用這一變量記錄循環的次數,它將控制循環的進程,實現循環終止的判斷。相應算法如下:
S1 sum-0
S2 i-0
S3 sum-sum+i
S4 i-i+1
S5 如果i不大于100,則返回執行S3,S4,S5;
如果大于100,則轉S6。
S6 輸出sum
對這一類循環結構,其算理可以相通,學生通過下面的練習,掌握了實質所在,就能在此基礎上舉一反三,觸類旁通。
(1)寫出求13+23+33+…+1003,的值的一個算法。
分析,s=s+i改為s=s+i3。
(2)寫出求13-23+33+…-1003的值的一個算法。
分析s=s+i改為s=s+i3*a,a=a*(-1),a的初始值是1。
參考文獻:
[1]宋文,吳晨,杜亞軍.算法設計與分析.重慶大學出版社,2001.
[2]董榮勝,古天龍.計算機科學與技術方法論.人民郵電出版社,2002.
[3]曾范紅.注重數學思維與計算機算法的辨析.中國電腦教育報.2005(13).
作者單位:江蘇省江都市丁溝中學