算法是數(shù)學及其應用的重要屬性,也是計算機科學的基礎。在信息時代里,算法思想已成為我們必備的一種數(shù)學素養(yǎng)。
在現(xiàn)代社會里,由于計算機已經(jīng)成為人們日常生活和工作不可缺少的工具,也為舊的算法注入了新的活力:一方面,出現(xiàn)了大量的能夠推動現(xiàn)代社會科學進步和發(fā)展的算法;另一方面,在學習算法、熟悉算法的實踐過程中,也帶動了許多其他科學發(fā)展和繁榮并且產(chǎn)生了一些交叉學科。
聯(lián)合國教科文組織宣稱,未來社會的公民應該是從事“較多智力的和較少體力的,較多電子的而較少機械的勞動”[1],如何在數(shù)學教育中提高學生適應未來“瞬息萬變”的社會所必需的基礎知識和基本技能,那么在我們的教學實踐中培養(yǎng)學生的算法思想和意識,使之成為一種觀念和通識是非常必要的。
一、算法內容的教學
當前的數(shù)學教學改革在強調問題解決過程、數(shù)學過程的概念化和數(shù)學在現(xiàn)實生活中應用的同時,特別強調算法過程的學習和理解。中學教材的算法內容主要包括算法概念、流程圖、基本算法語句和算法思想。
1.算法的概念
算法概念就是做某件事的步驟和程序,但這些步驟必須是確定的、有效的、有限的。在當今社會日新月異的發(fā)展過程中,要想給出算法的嚴格定義是不恰當?shù)模怯幸环N普遍的看法:為解決某個(類)特定問題而采取確定的有限步驟。也就是說,對于我們所要研究對象——數(shù)學問題求解時,我們必須要思路清晰,明確地給出解決問題步驟的先后順序,并且要考慮到會出現(xiàn)分支的步驟和重復的步驟,然后再用圖或文字把這個過程描述出來,這種描述可以以不同的方式:日常語言、數(shù)學公式或用程序筐圖直觀地表示算法的整個結構。
2.算法的流程圖
流程圖是算法表示的一種方式。它的特點是直觀、清楚,便于檢查和交流。在流程圖的學習中,要讓學生通過模仿、操作、探索,體驗設計流程圖來表達解決問題的過程。
有了流程圖,算法的思想不再只是局限于數(shù)字計算了,而是可以更加廣泛地描述許多操作過程。但在實際教學中,我們應該考慮學生對事物的認識是遵從螺旋式上升和波浪式前進的規(guī)律,對教材做適當?shù)奶幚怼6踅贪嬖谟谩岸址ā鼻蠓匠痰慕平鈺r,給出了這種解法的程序框圖,滲透了算法思想,同時也為系列3中算法的學習奠定了基礎。通過循序漸進的方式掌握和運用算法,實現(xiàn)框圖在數(shù)學建模的表示,增強了學生的算法應用意識和實踐能力。
3.基本算法語句
高中階段的算法學習,所要掌握的基本算法語句有:輸入語句、賦值語句、條件語句、循環(huán)語句、輸出語句。通過這幾種算法語句我們可以實現(xiàn)程序框圖向程序語句的轉化。在基本算法語句的教學中,要鼓勵學生去總結規(guī)律。例如,若求只含有一個關系式的解析式的函數(shù)值時,僅用順序結構就行了;若為分段函數(shù)或者需要分類討論來執(zhí)行時要先給出一個標準才能執(zhí)行后續(xù)步驟的,就需要采用分支結構了;若問題涉及到的運算需要進行許多重復的步驟并且有相同的規(guī)律,就要考慮引入變量采用循環(huán)結構了,循環(huán)結構能大大簡化算法的表達,循環(huán)變量在循環(huán)結構中發(fā)揮了十分關鍵的作用。
例計算1+2+3+4+5
算法(按照逐一相加的程序):
Step1:計算1+2,得3;
Step2:將第一步中運算結果3與3相加,得到6;
Step3:將第二步中運算結果6與4相加,得到10;
Step4:將第三步中運算結果10與5相加,得到15。
該算法是以程序思想為基礎,計算1+2+3+4+5的一個專用算法(解決某個特定問題的算法),將五個數(shù)連續(xù)相加分解為四步,每步2個數(shù)相加。這個算法采用的是順序結構,符合初學者的認識規(guī)律。(變式)請說出下面算法的運行結果
s1s=0,i=1,進入s2;
s2s=s+i,i=i+1,進入s3;
s3如果i>5,進入,否則go to s2;
s4輸出s。
依然是求1+2+3+4+5的結果,但是這是一個既含有整體思想又含有構造思想的通用算法(解決某一類問題的算法),相對而言,通用算法比專用算法更具有通性通法的作用,也就更具有教育和發(fā)展的價值,但難度也是顯然的。若將s3中“如果i>5”改為“如果i>n”?熏就可以推廣為求自然數(shù)1+2+3+…+n的和了。在語句的表述上,也作了修改:由順序變?yōu)檠h(huán)的方式。
4.算法思想
算法含有豐富的數(shù)學思想:整體思想、程序思想、構造思想、最優(yōu)化思想,教學中應該注意挖掘與滲透,培養(yǎng)學生思維發(fā)展的深度和廣度。通過這些算法思想的學習可以達到以下幾個效果:“(1)有利于學生理解構造性數(shù)學;(2)有助于弄清計算機工作的原理;(3)有利于培養(yǎng)學生的理性精神和實踐能力”[2]。另外,算法思想的教學也需要選擇典型性的算法案例為載體。通過對案例的分析,使學生明白算法的表達方式,體會算法的基本思想。
總之,算法的教學,根本上就是要教會學生如何設計自己的算法,幫助學生符合邏輯的組織他們的思想,最終要讓學生能夠確定自己的問題解決步驟和方法。
三、算法教學中應該注意的幾個問題
1.教學內容上,不要把算法課上成計算機課
算法的定位應該是在問題解決和計算機求解之間,所以我們在算法的理解上要注意它的兩個側面:數(shù)學方面和計算機方面。在算法的教學中,應通過實例來說明由數(shù)學的算法到計算機使用的算法的過渡過程,要讓學生理解算法各個基本內容(結構框圖、語言等)的作用,在用算法求解問題中數(shù)學和計算機科學的關系如下圖:
計算機能處理許多復雜的問題,但是這些問題在處理之前,必須把問題分解成簡易的步驟。所以算法概念包含兩個步驟:分解與組合。分解就是把復雜的問題簡化成若干個單一的簡單步驟;組合就是將若干個單一的簡單步驟按照一定的邏輯關系組合起來,然后在按照一定的順序逐個解決,從而實現(xiàn)問題的最終解決。在實例教學中,最好以教材中提供的案例為載體,引導學生在設計流程圖以及在將流程圖轉化為程序語句的實踐中,讓學生理解和初步掌握算法的基本思想和操作過程,學會如何用流程圖表達解決問題的思路。
2.教學方法上,要注意學生的認知特點
由現(xiàn)代教育心理學知識可知,學生在數(shù)學學習中存在著顯著的認知差異,表現(xiàn)為:特征性和功能性。“大多數(shù)女生的行為是偏向于特征性的,而大多數(shù)男生則表現(xiàn)出較為強烈的功能性行為。在算法學習中,這種差異尤為明顯”[3]。特征性思維明顯的學生“優(yōu)先考慮特征與關系,關注事件的結構,思考狀態(tài)與狀態(tài)間的關系”[3]。而功能性思維明顯的學生一般注重某個過程并且善于考慮作用方式,因此他們把注意力集中在“動態(tài)和過程性的行動實施上,思考原理與信息流程”[3]。同時發(fā)現(xiàn)隨著年齡的增長、學識的豐富,學生在認知結構上表現(xiàn)出相對穩(wěn)定的認知定向,也就是說,大多數(shù)學生還是以原有的特征性或功能性認知結構取向來解決問題的。由于這種認知差異具有普遍的意義,需要教師在課堂上給予足夠的重視,關注學生認識問題和解決問題的多元化取向,盡可能采用算法多樣化教學。
3.教育目標上,要防止形而上學的趨勢
算法教學對于學生思維品質培養(yǎng)的特點:使學生養(yǎng)成了推理的意識和審慎的思維習慣;增強了學生邏輯推理能力,使學生思維更加嚴密、秩序化。但是,我們也應該注意到:算法解決問題的邏輯思維特征也是一把“雙刃劍”:一方面,算法的程序化解決問題的方式,具有很強的說服力和審美價值;另一方面,嚴密的邏輯程序不考慮其他主、客觀條件的變化,未免過于僵化、呆板了。所以,在算法教學中,要注意程序化形式的存在范圍和合理性,避免課堂教學陷入認識論上的形而上學。相反,我們更應該關注它的獨立思考、尊重事實和思辨分析的理性思維。
算法作為新課標新增內容,是社會發(fā)展的需要。因為算法內容具有一定的創(chuàng)新取向(一個算法問題就是一個探究性案例),所以在數(shù)學教學中,要對算法內容給予足夠的重視:注重培養(yǎng)學生諸如反思和批判、獨立思考的精神,推理的意識和習慣,以及搜尋信息、動手操作等實踐能力。另外,算法知識關于動作技能、智慧技能和思考與思維技能的不確定性和多元性需要學生敢于突破傳統(tǒng)觀念,不拘常規(guī),這些都是新課標倡導的“培養(yǎng)學生的創(chuàng)新精神和實踐能力”的理想材料。
參考文獻
[1] 美國國家委員會.人人關心數(shù)學教育的未來.方企勤譯.北京:世界圖書出版公司,1993.12.
[2] 李金嬌.關于新課標教材“算法”一章的教學思考與設想.數(shù)學通訊,2006(9):13.
[3] Schwank I.Iur konzeption praedikativer versus funktionaler kognitiver struktur and ihrer anwendung.In Zentralblatt Fuer Diaktik Der Mathematik,1996.
(責任編輯楊子)