摘要:針對學生在C語言程序設計學習中,在邏輯思維建立與題目分析求解方面存在的問題進行了深入探討,提出了設問引導構思法、一題多解算法比較、框架教學法、實驗題目設計的層次化與多樣化等思想。通過多年的實踐教學表明,這些方法對提高學生學習興趣、引發學生積極思考與提高編程實踐能力有較好的效果。
關鍵詞:C語言;教學引導;課堂教學
作者簡介:劉亞輝(1974-),女,河北任丘人,北京信息科技大學計算中心,副教授;李桂芝(1971-),女,遼寧開原人,北京信息科技大學計算中心,高級實驗師。(北京 100192)
基金項目:本文系北京信息科技大學2012年度高教研究課題資助(項目編號:2012GJYB15)、黑龍江省高等教育學會高等教育科學研究“十二五”規劃課題(項目編號:HGJXHC110662)、黑龍江省教育科學規劃課題(項目編號:GBD1211026)的研究成果。
中圖分類號:G642.0 文獻標識碼:A 文章編號:1007-0079(2013)23-0080-02
C語言是大學生學習程序設計的一門入門課程,也是后續計算機專業課如數據結構、編譯原理等課程的基礎。其教學目的是讓學生建立基本的編程思想、掌握程序編寫與調試的基本技能,運用所學知識解決基本實際應用問題,而教學目標的實現應是以激發學生學習興趣,調動學生主動性參與學習實踐為基礎。在C語言教學改革的研究中,通過比較眾多版本的優秀教材,[1-3]不難發現:教師在授課過程中靈活運用教學技巧將教學內容合理編排、授課過程中有意識進行思維引導以及合理選擇與設計實驗題目,是提高學生學習主動性與實踐能力不可或缺的關鍵要素。而傳統枯燥的語法講解、快速翻閱幻燈片、擠壓式的編程訓練會讓大一的新生們心理上畏懼與反感,教師無意識的“填鴨”教學影響了教學質量。本文結合教學實踐,將教學過程中的一些實用教學方法以及實驗題目層次化與多樣化設計方法進行闡述,這些方法在激發學生學習的積極性,提高課堂教學效果上有一定的借鑒意義。
一、教學引導
1.從已知到未知
從已知入手,學生在高中階段已經儲備了足夠的數學知識,并熟悉多種函數的應用與計算。所以在第一節課,教師不但可以演示簡單的Hello入門程序、輸入與輸出語句,而且可以配合講解并演示sin(x)、cos(x)以及ln(x)等函數的復合運算。學生自然感悟到:原來編程可以算數學題。此外,還可以結合專業知識演示C語言的應用,例如:結合Matlab、Opencv演示C語言在數學計算、數字圖像處理等領域的應用,讓學生初步對編程的用途有所了解,這樣學生會有目的地學習,而不是不知學為何用。
2.設問引導構思,同步編程演示
教師在講解算法或題目時,采取同步編程演示的方法要好于對幻燈片不厭其煩多次講解。可以從數學思維角度引導學生勾勒自己的編程思路,并配合編程,使學生比較容易理解教師的思考過程。首先,在提出問題時,要先聽學生的想法,而不是填鴨式灌輸教師的思想,學生的奇思異想有時也可以開拓教師的思路,可謂教學相長。其次,在講解時,可以采用設問方式引導學生一步步主動而深入思考問題的求解方法。思路確定后,對于怎樣將想法演變為代碼,循序漸進引導學生順理成章把想法實現,這會讓學生增加學習的信心。例如:求10個數中的最大值問題。求解這個問題的方法不唯一,教師可以在與學生進行算法溝通后,編程時比較不同算法(方法一、方法二,見圖1)。同時,進一步讓學生思考只用循環與用數組求解的不同之處,最小值、求和以及平均值的求法,舉一反三,程序該如何修改?
3.算法比較,一題多解
學生在上機時,會對同一題目寫出多樣的程序,注重不同算法的比較,一題多解,有助于學生學習好的算法,同時也尊重了學生的獨立思維。例如:輸入500個0-20的整數,統計每個數出現的次數。可以引導學生思考:循環多少次?怎樣統計個數?根據已學知識只用if語句可行嗎?與循環語句結合該怎樣寫?比較圖2所示(a)、(b)、(c)三個算法,可以看出(c)算法較好。
4.框架結構法
在讀程序時,初學者容易混淆語句間的關系,在if語句與循環語句同時出現時,除了借助流程圖外還可以輔助框架結構,將循環語句、if、switch以及其所屬語句關系用框架分割,以幫助學生理解復雜程序。
5.循序漸進,任務驅動,“滾雪球”式學習
對授課者來說,在有限的學時內完成授課,若再進行一定的綜合題目訓練是有一定難度的。但是,可將綜合問題化解到各章。在講解輸入、輸出語句的使用后就可以讓學生完成簡單的菜單顯示;在講選擇時,可以進一步進行菜單的選擇設計;在講循環時,再添入某一位學生的各門課成績累加求和、求平均值;在講解數組后就可對多位學生的成績求和、求平均、求最值;講函數后可以進一步將程序模塊化,包括數據錄入、查詢、修改、刪除,統計計算等;講授結構體、文件與鏈表后,可以建立存儲學生的信息、動態結點訪問。隨著對學生成績管理系統功能的逐步完善,學生對運用程序開發設計不但有了基本的認識,同時通過教師有意識的串聯講解,也可讓學生在有限的課時內完成綜合題目的練習。[4]
二、實踐設計
C語言實驗教學平臺能夠完成學生題目的自動判題,有效促進了程序語言的教學改革。但是,題目的選擇與題型設計對教學平臺的設計提出了更高的要求。
1.實驗題目層次化選擇
在學習編程時,學生理解接受知識的能力是有差別的。在設計題目與設置要求時,對少數有編程基礎的學生,可提出與解決實際問題難度適中的題目;對初次接觸程序但理解能力較強的學生,可將布置的題目逐步引申,促使學生循序漸進對所學知識點加深理解;對編程入門較困難的學生,鼓勵其用課堂所學語句模仿編程,以幫助學生消化理解所學內容,并掌握基本的程序調試方法。
2.實驗題型多樣化設計
C語言實驗教學平臺主要以選擇題與編程題為主。在題目設計中還可以適當根據知識點添加程序改錯或填空題型,以提高程序調試能力并降低部分題目的編程難度。除了基礎的編程題型外,還可設計有趣的題目,解決如:歌手大獎賽、青蛙過河、對聯文字逆序輸出、密碼破解以及手機通訊錄等實際問題。
3.小組協作互助學習
有的學生比較內向,遇到困難時一般不會主動求助于教師。在上機時,如果讓快速完成題目的學生協助完成,不但增強了他們的自信心,也有助于這些學生的問題能夠得到及時解決與反饋。此外,還可以適當布置有一定綜合性的題目,讓每組對題目進行模塊劃分,討論、協作完成并在課堂講解,教師進行即時點評,這樣可以激發學生學習的興趣與主動性,并使教師及時了解學生對知識點的掌握情況。
4.改革考核方式
在期末考核中,應逐步加大上機考試,尤其是平時實驗成績在期末成績中的比例,這也是督促學生重視編程實踐的方法之一。
三、結論
本文對C語言教學中引導學生問題求解構思、算法比較、框架輔助教學、實驗題目層次化設計、題型多樣化設計等方面進行了闡述,這些方法對激發學生學習興趣,提高編程實踐的主動性與培養編程能力有一定的效果。
參考文獻:
[1]譚浩強.C程序設計[M].第三版.北京:清華大學出版社,2007.
[2]何欽銘,顏暉.C語言程序設計[M].北京:高等教育出版社,2008.
[3]蘇小紅,孫志崗.C語言大學實用教程[M].北京:電子工業出版社,2012.
[4]陳婷.C語言程序設計實驗教學改革與探究[J].實驗技術與管理,2010,27(10):182-184.
(責任編輯:劉輝)