摘要:本文介紹了偽代碼的教學方式在數(shù)值分析課程實驗教學中的重要性。一方面從教學角度分析了數(shù)值分析課程中算法設計的重要性,另一方面從實驗教學中分析了偽代碼在實現(xiàn)這些算法中的方便性。通過加入偽代碼的教學,使得學生更加理解算法的設計,并使得學生更容易把算法編程程序實現(xiàn)。本文針對本校學生在Matlab為零基礎的實際情況下,論證了偽代碼在運用軟件Matlab實現(xiàn)數(shù)值分析中算法的必要性。
關鍵詞:數(shù)值分析;偽代碼;Matlab
中圖分類號:G642.41 文獻標志碼:A 文章編號:1674-9324(2018)26-0268-02
一、數(shù)值分析中算法的重要性
數(shù)值分析課程的內容主要包含線性插值、數(shù)值積分、方程求根和解線性方程組的直接法和迭代法。這些都是處理數(shù)學模型和離散數(shù)據(jù)的有力工具,也是處理利息理論中未知利率的有力手段。因此數(shù)值分析是信息與計算科學專業(yè)的必修課程,也是很多高校中工科專業(yè)的選修課。
在大學的第一年中,學生已經(jīng)學習過線性代數(shù)、高等數(shù)學等基礎知識,這都為學習數(shù)值分析這門課程打下了堅實的基礎。中學階段的數(shù)學學習方式和大一基礎數(shù)學課學習方式一樣。學生學習數(shù)學主要靠一張紙和一支筆,通過題海戰(zhàn)術來得到關于定理的理解和應用。這樣使得很多學生對于深入學習數(shù)學沒有太大興趣,覺得比較枯燥。更多的學生愿意通過自己多動手和多操練來增加自己的實踐能力。數(shù)值分析課程中就有很多算法的講解。這使得學生對于傾向于學些數(shù)值分析這門課程。作者當年在學習數(shù)值分析這類課程的時候,是在2000年左右,當時的計算機本身就不算多,算法的實現(xiàn)不夠成熟。2000年左右的計算機是新生事物,是剛冒出嫩芽的階段,所以不可能讓學生在電腦上實現(xiàn)。但是基于計算機的普及以及高校學習環(huán)境的改善,算法的實現(xiàn)就變得簡單多了。從軟件方面來講,軟件Matlab早由美國Mathworks公司發(fā)布,它將數(shù)值分析、矩陣計算、可視化等諸多功能集成在環(huán)境中,為科學研究、工程設計以及必須進行有效數(shù)值計算的眾多科學領域提供了一種全面的解決方案。
二、算法的設計
基于現(xiàn)實的情況,我們在數(shù)值分析這門課程中就需要加入上機實踐環(huán)節(jié),讓學生通過上機來完成這些算法。盡管要編程實現(xiàn)這些算法就需要付出很多努力。但是如有對算法有了好的理解,對編程的算法的流程一目了然,在這基礎上實現(xiàn)起來就容易的多。以前對于算法的優(yōu)點只是從理論分析入手,現(xiàn)在結合算法真正實現(xiàn),可以更加清楚地看到算法的優(yōu)點、精度等。目前針對算法的講解主要有三種方式——自然語言、框圖法、偽語言。一般來講,自然語言描述算法的方法讓學生從表述的方式更加容易接受,因此相對比較容易掌握,可是這種方式也存在很大的缺陷。比如,當算法中包含多個分支或循環(huán)操作時文字語言就很難表述清楚。另一方面,使用自然語言描述算法也容易對一些問題造成歧義。例如,“武松打死老虎”既可以理解為“武松/打死/老虎”,又可以理解為“武松/打/死老虎”。在自然語言中的表述中,語氣和停頓對相同的一句話產(chǎn)生不同的理解。特別是對較復雜的問題,用自然語言難以表達準確。綜上,無論是通過自然語言還是框圖法來描述算法,它們僅僅可以表述算法設計的理解和一種思路,但是都無法直接被計算機接受并進行直接識別和執(zhí)行。
三、偽代碼嵌入的時機
偽代碼是一種算法描述語言。我們使用偽代碼的目的在于使學生更好地理解和實現(xiàn)算法。所以偽代碼在被用來描述算法的時候,必須以一種很容易地讓任何一種編程語言都可以實現(xiàn)的方式。所以一方面?zhèn)未a需要表述清楚,讓人容易理解。另一方面從計算機語言的角度講,必須結構清晰、代碼簡單、可讀性好。所以偽代碼有點類似自然語言,又有點類似編程語言。這樣偽代碼就需要將整個算法運行過程的結構或者流程用接近自然語言的形式描述出來并且容易編程計算機語言。這種形式可以使用大家熟悉的文字,但關鍵是可以把程序中的意思表達清楚。這樣偽代碼可以幫助寫出程序流程,也讓算法的實現(xiàn)變得更加方便,還可使得不同的編程人員方便的交流。比如:
If 8點以前 then
do 讀英語;
if 8點到20點 then
學習+吃飯;
else
回家睡覺;
end if
從上面的結構中我們可以看出,這種形式一方面節(jié)約了時間,另一方面使結構比較清晰,表達方式更加直觀。在接觸了偽代碼的方便之處后,我們有必要把偽代碼在教學過程中介紹出來。在數(shù)值分析的教材中,針對算法設計的描述,自然語言和框圖法的使用具有廣泛性。但是在數(shù)值分析的教學中,在已定本課程所采取的計算機高級語言確定的情況下,可以使用偽代碼的教學手段。例如,經(jīng)常在講解數(shù)值分析的課程中,教師確定使用Matlab作為實現(xiàn)的工具,因此在課堂教學中可以使用偽代碼的教學手段,其中計算機高級語言采用Matlab的控制結構來描述算法的步驟。目前經(jīng)常采用的手段是采取框圖法讓學生理解,可是在學生真正編程實現(xiàn)的時候還是遇到了很大的困難,特別是針對Matlab語言為0基礎的情況下,學生應用起來就很費勁。在培養(yǎng)學生過程中,把算法的設計思路和實現(xiàn)在課堂教學中展示出來,能夠增加學生的興趣,增強算法設計的理念和加強算法理解。
四、從算法入手滲透偽代碼應注意的問題
實際中,當學生上機時,課本中的關于算法設計的自然語言描述或者框架圖,也從某個方面讓學生理解了算法,但是偽代碼的出現(xiàn)讓學生更快更好地讓算法實現(xiàn)。因為我們知道從框架圖和自然語言仍是很難把算法轉化計算機可執(zhí)行語言,因此在課堂教學中,采用偽代碼的描述手段對于算法重新進行敘述就有很好的作用。我們針對數(shù)值分析中算法的設計,在教學中,不僅僅通過自然語言或框架圖講解,并且增加偽代碼的描述。對于沒有Matlab基礎的學生,通過課堂教學中算法偽代碼講解,首先課堂中展示把具體的算法通過偽代碼來用Matlab軟件實現(xiàn),并在上機操作中提高學生把算法用Matlab實現(xiàn)的能力,更好地讓學生掌握把自然語言轉化為偽代碼的能力,并提高偽代碼轉化為Matlab語言的能力。進一步讓學生喜歡并且愛上偽代碼。這樣在課堂教學中加入偽代碼的描述,使得學生對于算法設計和執(zhí)行都能起到促進作用。通過使用教材中的算法設計的框架圖或自然語言在課堂教學中都增加偽代碼描述部分,從而加強學生對算法設計的思路和上機實驗的操作。
五、算法的實現(xiàn)
確定在教學中采用Matlab語言進行編程實現(xiàn)的首選,因為Matlab相對0基礎的學生入門簡單。在教學中第一次講解算法的設計時,首先通過自然語言或框架圖讓學生對于算法有一定認識,在此基礎上,把算法的偽代碼描述出來。并通過計算機把偽代碼變成可執(zhí)行語句,進一步實現(xiàn)。從各個角度讓學生對于算法和算法的上機操作有深刻的體會。針對數(shù)值分析教學中采用Matlab進行上機實習的算法,寫出相應的偽語言。學生通過偽語言進行上機實習加強了學生對于算法設計轉化為應用的能力,使學生對于上機實習能更加從容,并加強了學生對算法設計和算法實現(xiàn)的實行能力。
參考文獻:
[1]陳芳,黃靜靜.Matlab在《數(shù)值分析》課程教學中的應用[J].考試周刊,2014,(49):118.
[2]姚祖喜.《數(shù)學分析》教學中若干問題的思考與實踐[J].中央民族大學學報,2003,(12):254-258.