石光華
摘要針對高職學生學習C語言結構化編程的困難,作者對高職計算機專業的“C語言程序設計”課程,在教學內容、教材建設、實訓設計、網站建設和考核方式等諸多方面,進行了大膽的改革和探索,建立了基于案例驅動的結構化編程教學模式。本文具體論述了該模式的思想和方法。
關鍵詞高職教育C語言結構化編程互聯網
如何提高高職計算機類專業學生非圖形模式下的結構化編程能力,是高職計算機教育中的一個普遍問題。作者通過三年的努力,對“C語言程序設計”課程在教學內容、教材建設、實訓設計、網站建設和考核方式等諸多方面,進行了大膽的改革和探索,將電子教材、電子教案、學習論壇、編程工具、學習資料等,整合成為學習網站,在教學過程中通過論壇發布程序不同版本,實施案例驅動,課后通過QQ群進行輔導答疑,通過論壇、電子郵件進行作業提交批改,建立了基于案例驅動的結構化編程教學模式。本文具體論述了基于案例驅動的高職C語言結構化編程教學的過程和方法。
1教學內容
在課程設計上,針對高職計算機專業學制短,技能要求高的特點,提出了“一條線兩階段,三結構四循環”的教學模式。
“一條線”是指在一年級的編程教學課中,貫徹C語言一條線。曾經有一種觀點,認為高職計算機專業的編程語言教學,直接從面向對象語言開始學習,可以節約時間。但是,70%的企業依然要求學生具備面向過程的結構化編程能力。考慮到企業的需求,結合后續的課程安排,我們決定在一年級的課程安排上,貫徹C語言“一條線”,即在第一學期,開設“程序設計基礎”,第二學期,開設面向過程的“C語言程序設計”。
“兩階段指課程安排分為“程序設計基礎”和“C語言程序設計”兩個階段。“程序設計基礎”解決程序的基本結構,重點在建立學生的結構化程序的基本框架和概念;以C語言為基本語言,使學生能有實際操作的平臺,但準確把握“把C語言作為偽語言”的原則,不讓學生陷入C語言多變的泥淖,而把注意力放在結構化程序的基本結構上。“C語言程序設計”放在解決C語言的使用上,把握“C語言”是編程工具而不是研究對象的原則,根據企業的編程規范,對“C語言”進行簡化,重點是如何使用C語言解決一般復雜程度的結構化編程問題。
“三結構”是指在一年的學習中,學生要學習三個成績管理軟件的編程,分別是基于一維數組、二維數組和動態結構數組。從企業實際應用來看,動態空間的使用,可以用動態數組解決。因此我們去掉了鏈表,重點是讓學生寫出有工程實際意義的結構化程序。
“四循環”是指編寫基于“三結構”的每一個成績管理軟件過程中,教師發布四個以上的程序版本,引導學生改寫、增加函數,讓學生直觀地看到軟件的功能是如何一步一步構建起來的。
結構化程序設計的教學中,如何讓學生建立起結構化程序的框架是很困難的。一個簡單的成績管理軟件,代碼就超過300行。對初學者來說,看懂超過100行的程序就需要很長時間,學生又如何能在短短的課堂時間里通過增加/改寫函數來增加功能呢?這也就是很多學生學完了C語言程序設計,依然不能編寫一個簡單的應用程序的主要原因。我們發現通過論壇發布程序版本,利用工具軟件BeyondCompare,比較不同的程序版本之間的差異,可以讓學生直觀地看到軟件的功能是如何一步一步構建起來的,如圖1所示。程序的第一個版本,就是一個主函數,不超過10行,只顯示程序的幾項功能菜單,學生很容易理解,然后通過發布第二個、第三個版本,每一個版本實現或改進一個菜單的功能,直到最后版本。
通過圖1,我們可以看到程序功能的增加是由哪些代碼實現的,而通過不斷反復的比較,學生就可以掌握結構化程序設計的過程和方法。
在教學過程中,通過比較版本,讓學生直觀地看到復雜的程序功能是如何由簡單的函數一個一個構成的。學生經過“程序設計基礎”的課程設計,基本掌握主函數與模塊函數的作用和相互關系,可以看懂超過100行的C語言源程序,理解基于一維數組的成績管理系統;在“C語言程序設計”的課程設計中,學生對主函數與模塊函數的理解更加深入,可以看懂超過300行的C語言源程序,理解基于動態結構數組的成績管理系統,掌握主函數的設計方法,并按照規范的格式寫出自己的函數。回想三年前,因為沒有采用這種方法,只要是超過20行的程序,學生就普遍反映看不懂。由此可見,采用新的方法后,學生編程能力的提高十分明顯。

2教材建設
2004年9月清華大學出版社出版了作者主編的21世紀高職高專規劃教材《程序設計基礎》,教材主要在三個方面進行了改革。
(1)強調把生活中的問題轉化為程序的能力,使學生真正能夠編寫實用的程序
在教材編寫思想上,重點放在培養學生把生活中的問題轉變成為程序并進行處理的能力,強調轉變講授思路,推行引導學生首先想清楚“我要做什么?”,然后才教給學生“如何做”,最后上機進行驗證的三步教學法。
在教材的編寫風格上,對全書所有的例題進行了通盤的考慮,在循環、數組、函數和結構化設計等單元,所有的例子都有前后的聯系,強調內容的前后銜接,特別注意工程規范的引入,在變量的命名、程序格式方面,均按工程要求進行。在案例選擇上,全部采用工程實際和實際生活中的案例。
(2)提出了以“三大區域”為特色的c程序的基本框架
通過把一個基本的C程序從上到下分成預處理區、變量聲明區、執行語句區“三大區域”為特色的C程序的基本框架,讓學生樹立正確的程序格式與規范。“三大區域”概念的提出,明確規定了程序的基本框架,讓學生從一開始就按固定的格式進行編程,養成良好的編程習慣。
(3)提出了使用函數的“三大步九要素”的基本方法,建立使用函數的清晰框架
我們提出的使用函數的“三大步九要素”的基本方法,在教學中取得了很好的效果。
所謂“三大步”,是指我們在使用自定義的函數時,對函數進行聲明、定義和調用。三大步按順序進行。
所謂“九要素”,是分別指函數聲明、定義、調用各有三要素共九點:函數聲明的三要素:返回值的類型、函數的名字、形式參數。函數定義的三要素:形式參數、功能、返回值。函數調用的三要素:名字、實際參數、返回值。通過對“九要素”的理解掌握,學生能夠建立起使用函數的清晰框架。
3實訓設計
對高職學小的技能培養,實訓是很重要的環節。我們采用了項目驅動的思想來設計實訓項目,每一單元的實訓,都是構成最終程序的不同版本,在“程序設計基礎”頭發布程序版本8個,“C語言程序設計”共發布程序版本10個,構成了實用的軟件框架,學生相當于參與了一個中等復雜程度的軟件開發,積累了經驗。在今后的實際工作中,完全可以以此為模板,進行結構化程序的開發。
4網站建設
利用互聯網技術,建立基于互聯網的學習資源。2003年建立了“光華之窗”教學網站,在網站平臺上,將電子教材、電子教案、學習論壇,編程工具、學習資料等,整合成為學習網站,設計了“程序設計基礎”、“C語言程序設計”教學論壇,兩年來積累了完整的教學過程資料。可以說,網站的建設和運行,為課程的質量提供了保證,避免了“課隨老師走”的問題。
5考核方式
高職C語言的考試應該完全不同于傳統的等級考試。等級考試的川發點是以C語言為研究對象,多以c語言本身的復雜多變性為難點。我們認為,使用C語言的能力才是重要的。我們采用形成性考核方式,參考學生學習過程中的表現,考核學生用程序解決實際問題的能力,取得了較好的效果。
通過在教學內容、教材建設、實訓設計、網站建設和考核方式等諸多方面的改革和探索,充分利用互聯網資源,建立了基于案例驅動的結構化編程教學模式。通過三屆學生的實際運用,普遍提高了學生的編程能力。如2003級學生黃小明編寫的“課堂警官”軟件,在全國第九屆“挑戰杯”上,作為全國高職院校的唯一參賽選手,和清華、北大等國內外一流大學同臺競技,取得了三等獎的良好成績。