王曉勇 肖四友 張文祥
文章編號:1672-5913(2009)10-0060-03
摘要:本文針對C語言課程學習特點提出了知識模塊化、訓練項目化的教學模式,通過分析C語言當前教學現狀,介紹了該教學模式下項目化教學方法的設計思路、并給出詳細的訓練項目設計方案以及項目化教學方法的實施流程和實施效果;通過項目化教學方法的實際運用說明這種教學模式的教學效果及推廣價值。
關鍵詞:C語言課程;知識模塊化;訓練項目化;教學模式;探索與實踐
中圖分類號:G642
文獻標識碼:B
1C語言的重要性及目前教學現狀
“C語言程序設計”課程是高等院校計算機及其應用專業學生一門必修課,也是其它一些非計算機專業學生一門重要的基礎課程,它對訓練學生思維能力和實際解決問題能力的培養,起到重要作用。目前多數高校的C語言教學方法主要形式仍然是以講授語法、分析算法為主,教學學時安排大多采用理論與實踐2+2的學時計劃;由于C語言功能強大,表達能力強,其豐富的功能所帶來的繁多的數據類型、復雜語法結構以及面向過程的結構化程序設計,傳統的教學方法理論學時學語法、講算法,實踐學時讓學生通過做練習題,記住語法、算法,使初學者感覺C語言學習難度大,學習過程枯燥,因而很多學生在學習C語言時不是理解算法而是去“背”算法,更少有學生去欣賞精巧的算法。因此,在C語言的教學過程中,教師必須找到適合學生學習特點的教學手段和方法,合理地組織教學內容、精心地設計教學案例。由于“C語言程序設計”課程也是一門實踐性很強的課程,除了合理的理論課堂教學,還必須重視上機實踐環節,通過讓學生動手實踐,鞏固和消化理論教學內容,因此如何設計實踐教學環節的上機任務,使學生有興趣動手編程,又能恰當與理論教學內容銜接好,使實踐環節有充分滿的上機任務,從而讓C語言的學習過程由枯燥變為愉快的探索之旅。
本文介紹的C語言課程階段性項目化訓練教學方法,正是針對目前C語言教學現狀中存在的不足而提出,并且階段性項目化訓練教學方法在“C語言程序設計”課程中實際教學運用也取得良好的教學效果。
2C語言的學習難點分析
C語言課程在很多高校一般是一年級第二學期開設,學生對C語言學習的第一印象雖然覺得它很神秘,也很想學會它。但翻開C語言第一章,C語言豐富的數據類型、運算符和表達式等基本語法往往會讓學生覺得難、枯燥,因此有些學生在還沒有能了解到C語言學習樂趣時就已經在主觀上產生畏難情緒,還有一些學生在上機調試程序時,編譯產生的一堆錯誤也會嚇跑學生的學習興趣;當教學過程進行到數組、函數部分時,學生在完成課后側重語法和算法訓練的練習題時,編程不斷遇到的困難更是學生學習興趣最大的“殺手”,如果得不到及時的幫助,更會使得學生失去對C語言這門課程的學習的信心和興趣。因此,傳統C語言教學方法按照章節不斷推進的學習過程,雖然在知識傳授上具有很好的系統性,但從學生對C語言的學習現狀也可以看出,這個系統的學習過程會隨著知識難度和深度地加深而逐漸失去一部分學習者,最后學習到C語言指針部分時,有較多學生已經因為積累太多的問題和困難不能再接受,跟不上教學進度,從而放棄對C語言課程的學習。針對C語言這種學習情況,如何在C語言的整個教學過程中始終保持學生的學習興趣,使學生在學習過程中不斷會有成就感,不會被困難嚇跑,在學習上了一個臺階后還有具有再上一個新臺階的信心和興趣,這些都需要教師合理組織C語言教學內容和運用恰當的教學方法才能實現。本文提出的C語言階段性項目化訓練教學方法,也是針對這些需要對C語言的教學做出的一些探索和總結。
3什么是階段性項目化教學模式
3.1C語言課程教學內容分階段模塊化
根據C語言教學內容學習特點,將C語言課程教學內容分階段模塊化,即將知識單元化,針對不同單元知識特點,設計相應訓練項目,使學生通過這一階段的訓練項目編程鞏固單元知識。C語言課程分階段模塊化知識結構如圖1所示。

3.2階段性項目化教學模式中項目的設計
C語言課程實踐教學中采用分階段項目訓練。訓練項目設計原則是程序功能與學生感興趣的實際問題相關,學生運用本單元學習的知識能夠完成項目編程;如果學生想把項目完成的更完善還需要再進入下一單元的學習;階段性項目的順利實現使學生體驗成就感,但程序功能上還存在的缺陷或漏洞能激勵學生積極主動地學習新的知識以實現程序功能的完善。下面給出的幾個訓練項目示例是C語言實踐教學中按教學進度與知識模塊劃分設計出五個小型程序設計項目:
(1) 算術運算測試軟件及超市商品收銀機程序
① 項目設計說明:運用選擇結構編程實現有限四則運算的算術測試軟件或能實現超市商品收銀機功能的軟件,要求算術測試軟件能隨機出題,用戶可自由選擇題量及練習的運算內容(如加、減、乘、除等);用戶可隨時結束練習,并給出本次測試的成績;要求軟件用戶操作界面友好,具有一定的容錯性。
② 訓練目的:在結構化程序設計順序結構、選擇結構及實現選擇結構的控制語句學習完之后,通過該小型程序設計項目的完成訓練學生對選擇結構程序的編程練習,鞏固選擇結構知識模塊,了解選擇結構在解決實際問題編程中的運用。
③ 訓練知識點:選擇結構及實現選擇結構的控制語句:if-else語句和switch語句。
(2) 剪刀、石頭、布游戲設計
① 項目設計說明:運用循環結構編程實現剪刀、石頭、布游戲軟件,要求軟件設計符合游戲公平的原則,該游戲實現用戶(玩家1)與計算機(玩家2)的剪刀、石頭、布游戲,每次比賽給出比賽結果,用戶選擇具有一定的容錯性、計算機選擇具有隨機性;用戶可多次進行游戲并能隨時退出游戲。
② 訓練目的:在結構化程序設計循環結構及實現循環結構的控制語句學習完之后,通過該小型程序設計項目的完成訓練學生對循環結構程序的編程練習,鞏固循環結構知識模塊,了解循環結構在解決實際問題編程中的運用。尤其在編程調試中對死循環的出現如何避免、程序的漏洞如何應對等,訓練學生的程序調試能力及分析問題、解決問題能力、培養學生考慮問題細致、周密的習慣。
③ 訓練知識點:循環結構及實現循環結構的控制語句:do-while語句、while語句和for語句。
(3) 加密短信閱讀程序設計
① 項目設計說明:綜合運用結構化程序設計的三種基本控制結構:順序結構、選擇結構和循環結構實現編程;本項目的設計難點有二點:一是如何密碼能安全輸入,同時也具有密碼輸入的容錯性;二是短信的存放方式及閱讀方式;要求軟件設計界面美觀、友好,當用戶輸入正確,可以順利閱讀短信內容。
② 訓練目的:在一維數組、字符數組和二維數組學習完之后,通過該小型程序設計項目的完成訓練學生對數組這種數據類型的編程練習,鞏固數組知識模塊,了解數組這種數據類型在解決實際問題編程中的運用。通過該項目設計,也使學生進一步感性認識到“程序設計=數據結構+算法”,數據結構在程序設計中的重要作用,使學生明確程序與數據之間的關系以及程序設計的設計思路可以從程序加工的對象—數據及其組織方式為切入點。
③ 訓練知識點:數組及數組應用;掌握一維數組、字符數組或二維數組的基本語法和數組在編程中的運用。
(4) 用戶自定義函數說明書的設計
① 項目設計說明:綜合運用結構化程序設計的三種基本控制結構、數組和函數的知識實現編程;本項目的設計要求至少設計出四個不同功能的用戶自定義函數,設計出用戶自定義函數說明書封面和選擇菜單,用戶可自由選擇要學習的函數,當用戶選擇學習某函數時,給出該函數的原型、功能、調用格式及函數應用示例等使用說明。要求軟件操作界面美觀、友好;用戶可隨時結束學習,并給出本次學習情況說明。
② 訓練目的:在用戶自定義函數及函數應用學習完之后,通過該小型程序設計項目的完成訓練學生對函數的編程練習,鞏固函數知識模塊,了解函數是C程序的基本模塊,掌握用戶自定義函數功能、定義格式、調用方式等基本語法知識。通過該項目設計,也使學生進一步感性認識到結構化程序的特點,認識到用戶自定義函數與C標準庫函數的關系及在編程中的作用。
③ 訓練知識點:函數及函數應用;掌握函數定義、函數聲明、函數調用等基本語法和在編程中函數模塊的設計。
(5) 學生信息管理系統設計
① 項目設計說明:要求綜合運用C語言課程知識編程,側重于理解指針在編程中的運用,要求使用結構體類型處理數據,掌握對文件的讀寫操作。學生信息管理系統功能要求:
●建立信息源,即能將若干學生信息添加到數據文件中。(學生信息主要包括:學號、姓名、性別、年齡、通訊地址等,也可自定信息)
●查找信息,為用戶提供幾種查找方式,如按姓名查找或按學號查找等,要求最少提供一種查找方式。如輸入要查找姓名,輸出相應結果。
② 訓練目的:在指針、結構體和文件操作學習完之后,通過該小型程序設計項目的完成訓練學生對指針、結構體、文件類型的編程練習,鞏固指針、結構體和文件知識模塊,了解結構體數據類型與數組類型對數據組織方式上的不同;掌握指針變量定義、結構體類型定義、結構體變量定義和文件讀寫操作等基本語法知識。通過該項目設計,也使學生更進一步綜合運用“C語言程序設計”課程所學的各模塊知識,分析、解決實際問題,達到學以致用的效果。
③ 訓練知識點:指針、結構體和文件;掌握指針與結構體數據類型在編程中的運用;掌握對文件的操作。
3.3分階段模塊化教學的優點
分解C語言課程的學習難點,針對每個階段和知識模塊設計的程序設計項目由淺入深,由易至難,使學生的學習過程有成就感,有效地激發學生的學習興趣。
4項目化教學方法應用
4.1階段性項目化教學方法實施流程
C語言課程理論教學知識模塊化、實踐教學階段性訓練項目編程在實際教學中的應用,教學效果良好,很大程度上激發了學生對C語言課程的學習熱情。教學方法實施流程如圖2所示:

4.2C語言知識模塊化訓練項目化教學學生評價方法
為了與C語言階段性項目化訓練的教學方法相適應,對學生C語言課程的成績考核需要從注重結果轉變為注重過程的課程成績評價方法,課程考核成績的組成部分也從過去平時成績、期末考試成績轉變為由多項組成。如下面公式所示:
課程考核成績 = 平時上機實驗成績+模塊化單元測驗+階段項目設計成績+期末綜合知識考核成績
5結束語
針對高校計算機語言課程C語言程序設計課程進行的教學模式的研究與改革,在實際教學應用中取得了較好的效果,這種教學方法也受到學生的普遍歡迎,并獲得校級教學成果一等獎,按此教學方法進行教學改革的試點班在浙江省高校計算機應用水平二級考試通過率達到92%的好成績。C語言知識模塊化、訓練項目的教學模式對計算機語言類的課程教學模式、教學方法方面做出有益的探索。
參考文獻:
[1] 龔沛曾,楊志強. C/C++程序設計教程[M]. 北京:高等教育出版社,2004.
[2] 劉瑋瑋,汪曉平. C語言高級實例解析[M]. 北京:清華大學出版社,2004.
[3] 譚浩強. C語言程序設計[M]. 北京:清華大學出版社,2005.
Desk Study of Teaching Model about C-Language Project Training Based on Ability- Cultivation
WANG Xiao-yong, XIAO Si-you, ZHANG Wen-xiang
(Zhejiang Wanli University, Ningbo 315000, China)
Abstract: The paper mainly discusses the knowledge-blocking and project-training teaching model that designed based on the characteristic of C-language course studying, analyzes the current situation of C-language teaching, and introduces the design cycle of projected instruction under that teaching model, provides a detailed design proposal of the training project and actualizing procedures and effects of the Project training. It also explains the teaching results and promotion value of the teaching model by its practical application.
Key words: C-language course; phased projecting; teaching method; exploration and practicing