摘要:《C語言程序設計》是高職計算機各個專業中一門重要的專業基礎課。筆者幾年來從事高等職業教育的《C語言程序設計》教學工作,在教學過程中不斷地探索、總結和積累經驗,并運用于教學實踐之中,使之能夠幫助學生在有限的教學時間內,在最容易理解、最容易接受地方式下,快速并扎實地掌握C語言,并能靈活地運用。以下是筆者在C語言教學中的幾個方面的探索和研究。
關鍵詞:C語言;程序;算法;教學
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2009)26-7470-02
1 教學對象分析
根據多年教學經歷,發現高職的學生存在如下幾個特點:
1) 學習目的基本明確但不清晰、不具體;
2) 學習缺乏主動性、探究性、聯系性;
3) 學習興趣不高;
4) 學習方法欠缺;
5) 英語等基礎普遍較差。
有壓力才有動力,為了讓學生明確學習目標,針對高職學生的如上特點,我對學生提出如下幾點要求:
1) 積極參加計算機二級等級考試(C語言);
2) 鼓勵C語言學得較好的學生參加程序員、軟件分析師等各種相關考證;
3) 鼓勵C語言學得較好的學生參加自考本科計算機專業。
2 注重培養學生的學習興趣
大家都知道“興趣是最好的老師”[1],然而C語言這門課程本身有一定的難度,再加上高職學生自身的特點,要讓學生對這門課程感興趣就特別重要。
首先讓學生明確這門課程的重要性。讓學生明確C語言的基礎地位顯著,實用前景廣闊。讓學生明確該課程是一門專業基礎課程,為后續的系列課程(例如:如數據結構、JAVA等)奠定良好的基礎。另外從實用角度講告訴學生C語言程序設計功能強大:目前大部分的操作系統、計算機控制系統、嵌入式系統及工業控制的軟件都可以用C語言來完成。讓學生感受到 C 語言程序設計的魅力。
其次是趣味性實例教學。為了極大的調動學生的學習興趣,讓學生對C語言不再覺得枯燥無謂,我為學生準備了一些趣味編程實例, 如:“抓肇事司機”、“破譯密碼”、“體重測量儀”等,培養學生的學習興趣,讓大家積極主動、自覺獨立地獲取知識,打好學習程序設計語言的基礎。
再次我們可以巧妙的運用CAI。C 語言有些知識比較抽象,可能僅僅通過講解的方式學生還是難以理解,借助CAI可以幫助學生對知識點的理解。比如在講遞歸的時候,我們可以準備一個漢諾塔的游戲,讓學生上臺來玩這個游戲,讓學生在玩游戲的過程中體會到遞歸的神奇之處,進而掌握遞歸的思想和算法,從而讓學生理解 C 語言之妙。再如我們還可以在教學過程中編寫一些小的實用程序,讓學生知道C語言可以學以致用。比如我用Visual C++編寫了一個小小的搖獎程序,操作者可以設置參加搖獎的人數,然后通過單擊“開始”按鈕,就可以進行通過搖獎來挑選學生上臺演示了,結果發現,學生們興趣高漲,而且他們積極都要求用這種“公正”的方法。小小的搖獎程序除了可以活躍課堂氣氛,更重要的是也可以鼓勵學生自己編輯一些類似的小程序。
3 注重培養良好的代碼風格
筆者認為培養學生的代碼風格十分重要,但是往往被很多老師忽略。代碼風格就好比是程序員的書法,但是又比書法好學得多。培養良好的代碼風格對于以后參加工作,培養團隊合作精神都大有幫助。我們得從一開始就告訴學生培養良好的代碼風格的重要性,重視對學生代碼風格的培養,因為壞習慣一旦養成以后就很難以改變,而且會對以后的學習和工作都會帶來很大的不便和障礙。那么如何才能培養良好的代碼風格?首先在教材的選擇上就得把好關。我們得選擇代碼風格好的教材,否則后患無窮。其次在教學過程中,得確保教師自己的代碼風格的良好性。再著我們在教學過程中還得不斷地提醒和修改學生的不良代碼風格,直到都養成良好的代碼風格為止。相信在我們不斷的練習和堅持下,每位學生都能養成較好的程序代碼風格。
4 抓住重點,循序漸進
C語言有很多的定義、概念、語法規則等。筆者在教學過程中,發現學生們普遍感到C語言的概念和語法規則太多,太細,不大容易掌握,而且比較容易混淆。但是C語言的教學重點不在于此,而在于算法和程序設計方法。因此如何把這些語法規則等講透,讓學生以盡快的速度掌握這些知識點,并有效地抓住教學重點是我們應該值得思考的問題。我于是進行了一定的教學探索。在重點抓住講解算法的過程中,把語法規則融入到其中。我一般先提出一個具體的應用問題,要求學生分析用C語言解決這個問題的算法,并在其中滲透講解一些相關的語法規則。不要求學生死記語法規則,而是要求他們能把各個孤立的語句組織成一個有機的程序,理解并靈活運用這些語法規則。在選擇例題的時候也要注意由簡到難,循序漸進,逐步呈現給學生。[2]讓學生在編制程序過程中不斷總結、鞏固,達到學會方法、記住語法規則,提高設計技巧的目的。以講解邏輯運算為例,可以提出如何用邏輯表達式來表達閏年(能被4整除,但是不能被100整除,或則可以被400整除的年份)的問題,使得學生在解決問題的過程中掌握邏輯表達式。再例如在講解循環結構的時候,我們可以通過解決同一問題來比較講解while,do…while,和for循環的3種結構的異同。
5 抓好上機實踐
“紙上談兵”學不出程序設計本領,只有大量上機、編程、調試,才能掌握C語言。為了突出實踐教學,培養學生的知識應用能力,筆者對實驗內容進行了改革。
一方面在實踐內容上進行調整。首先保留基礎性實驗,例如:三角形周長、面積計算,求一元二次方程的根等基礎編程實驗,使學生能夠較順利地通過實驗,從而讓學生獲得一定的成就感,進一步得到提高學習熱情。同時自編增加一些應用性強的、難度略大的實驗。例如讓學生解決一個數據加密的問題。
另一方面在方式上也進行一定的調整。對于一些相對有點難度的實際問題,學生們可能一開始無從下手,我們可以采取分組的方式,選出一位學生擔TeamLeader,模仿公司小團隊的工作方式。以數據加密為例:某個公司采用公用電話傳遞數據信息,數據是小于8位的整數,為了確保安全,在傳遞過程中需要加密,加密規則如下:首先將數據倒序,然后將每位數字都加上5,再用和除以10的余數代替該數字,最后將第一位和最后一位數字交換。為了解決這個問題,我們可以先讓學生們分組討論,對問題進行分析。然后給一定時間進行編寫代碼。當大部分同學都碰到相同問題時,教師可以進行統一引導。從而最終把問題解決。這樣一來,一方面有利于培養學生對知識的應用能力與問題的分析能力,更主要的也培養了他們團結協作能力。
6 有選擇地運用多媒體教學
在C語言程序教學過程中,運用多媒體技術輔助教學,有利也有弊。其積極作用:1)形象直觀,激發興趣,調動學生主觀能動性;2)信息量大,節省時間,優化教學過程等。不利之處:1)可能會分散學生注意力;2)限制學生的想象力,不利于能力拓展;3)影響師生之間的情感交流等。在C語言程序設計課程教學過程中,我們應該考慮到課程的特點,將傳統教學與多媒體教學進行有機的結合,即要有選擇地運用多媒體教學。例如:在講解一些概念較多,學生又比較容易理解和接受的知識點的時候,我們可以采用多媒體教學。[3]這樣的多媒體教學,能夠收到將抽象問題形象化、枯燥問題生動化的效果。而在講解一些算法和程序的編寫過程的時候,我們可以發揮傳統教學的優勢,進行板書講解。總之將傳統的教學方法與多媒體教學相結合,大大提高了學生的綜合思維能力。
如何幫助學生在有限的教學時間內,在最容易理解、最容易接受地方式下,快速并扎實地掌握C語言,并能靈活地運用,是很值得我們探索和研究的問題。以上只是我個人幾年來的一點教學探索,希望能夠起到拋磚引玉的作用。
參考文獻:
[1] 《C語言程序設計》教學的幾點體會[EB/OL].(2007-11-15).http://www.pcdog.com/a/06/12/f286831.html.
[2] C語言程序設計》教學的幾點體會[EB/OL].(2006-08-06).http://www.xker.com/page/e2007/0104/4390.htmlhttp://www.xker.com/page/e2007/0104/4390.html.
[3] 張書云,姜淑菊.程序設計語言課程教學方法探析[J].計算機教育,2005(5).