一、引言
中學數學中引入計算機算法相關的內容是為了體現信息社會發展的需要,其重要性是顯而易見的。由于計算機具有強大的重復計算能力,現代社會越來越多的事情需要交由計算機來進行自動化處理以提高勞動生產率。受制于經濟條件,中國計算機教育起步比西方發達國家要晚,尤其在小學和中學階段,然而盡早形成算法思維對今后有效地使用計算機來解決實際問題非常重要。鑒于此,我們有必要對計算機算法的一些基本特點進行探討,以此來促進算法課程的教學工作,幫助學生適應和理解用計算機解決實際問題的一般性思維。
二、算法的概念
算法這個詞并不是計算機領域專有的,早在中國古代就有算法的概念,從字面上理解算法就是計算的方法。具體的講,算法就是為了解決某一具體問題而提出的計算上可行的方案。在計算機出現之前,人們就對很多經典的數學問題提出了很多可行的解決方案,這些方案都可以稱作算法。在計算機出現之后,很多以前由于計算復雜度太大而無法手工模擬的算法可以遷移到計算機上得以實現,同時也出現了很多針對計算機環境而設計的新算法。從這些概念可以看出,算法并不是計算機領域專有的高深理論,它本質上就是一種解決問題的方法和步驟。
一個算法首先要是正確的才有意義,正確在這里意味著該算法可以對相應的問題提供確切可行的答案,這是對算法的基本要求。但有一種情況是,由于計算機所能提供的精度是有限的,我們無法在計算機上對部分實際問題作精確表示,這種情況下的算法我們稱之為近似算法,這種算法也可以認為是正確的。除此之外,考慮到計算機的實際情況,算法還需要在時間和空間上可行。雖然目前計算機的速度越來越快,但是一個時間復雜度太大的算法隨著問題規模的迅速增長也將會變得不可行。同樣的,計算機的內存空間也是有限的,如果一個算法消耗太多的內存資源,它也將在實踐上是不可行的。
三、算法的元素
在計算上解決問題跟實際生活中解決問題的一個不同之處在于,計算機上所有的問題最終都是以機器語言的形式來表示,計算機無法理解人類用自然語言描述的問題。這就是說,我們必須將算法用計算機所能接受的格式進行規范化,然后才有可能利用到計算機的高速計算能力。一般來說,一個算法都有輸入、輸出和處理等基本單元,并且每個單元都有其相對固定的結構。這樣我們可以很自然地看到,在教材上出現的一些程序基本結構就是為了算法設計的標準化和直觀化而提出的。不管問題有多復雜,都必須通過這些最基本的元素的各種組合來表示才能最終付諸實施,所以掌握這些最基本的元素對今后進一步學習復雜算法是至關重要的。更關鍵的是,這些基本元素體現的是一種計算機思維,即計算機解決問題的基本方式,這恰恰是算法教學中最重要的一環。受限于計算機的硬件體系結構,我們目前還無法用人類的思維方式來設計計算機。雖然有過很多的努力和嘗試,但目前計算機還僅僅是一個機器,它的“思維方式”也完全是機械式。
四、中學算法教學
上面已經提到,思維方式的改變是中學算法教學與學習的重要目標,然而這往往是很難在短期內實現的一個目標。為了達到理想的教學效果,教師必須利用一些可能的機會來強化算法的理念,力圖將學生從多年養成的“動物性”思維中轉變過來。比如在日常的教學工作中,除了在教材中能接觸到的一些實例,我們也應該更多地結合現實生活來展示算法在描述現實應用時的強大之處,這樣可以吸引學生嘗試對未知的一些問題利用算法工具來建模處理,其引導和啟發作用是很明顯的。我們雖然不可能把算法專門作為一門課程在高中階段進行長時間深入的教學與訓練,但是相信通過合理的引導和重點的突出,我們依然可以使學生在相對較短的時間內認識到算法精髓,并能在今后的實際問題中一定程度上進行應用。
中學算法學習中的另一個要點就是各種流程圖的作圖,這同樣對于今后的深入學習必不可少。與文字相對,流程圖能使算法的設計者對算法的整體有更好的把握,這樣能在很大程度上提高設計的效率。同時,標準的流程圖比文字更便于與人交流。由于這些圖表跟現實生活并不直接相關,具有一定的枯燥性,教師必須耐心對這部分內容進行介紹。為了使學生能對這些技術有較深的認知,足夠量的訓練也是必不可少的。這個過程會比較枯燥,但是在完成這一階段的訓練之后,學生自己也會發現算法知識本身的巨大魅力。
五、總結
算法教學作為銜接中學課程和大學課程的一個紐帶很好地發揮著特別的作用。鑒于其與傳統數理化課程的不同點,在算法的教學中,我們要著重注意引導學生轉變思維方式,同時對于流程圖等基本知識要注意理論聯系實際進行一定量的訓練,激發學生興趣。相信通過對這些教學要點的合理強化,本部分課程的教學肯定可以獲得比較滿意的成效,學生也能建立起對計算機等學科的初步興趣。
(作者單位 湖北省天門市天門中學分校)