石光華
摘要針對高職學(xué)生學(xué)習(xí)C語言結(jié)構(gòu)化編程的困難,作者對高職計算機專業(yè)的“C語言程序設(shè)計”課程,在教學(xué)內(nèi)容、教材建設(shè)、實訓(xùn)設(shè)計、網(wǎng)站建設(shè)和考核方式等諸多方面,進(jìn)行了大膽的改革和探索,建立了基于案例驅(qū)動的結(jié)構(gòu)化編程教學(xué)模式。本文具體論述了該模式的思想和方法。
關(guān)鍵詞高職教育C語言結(jié)構(gòu)化編程互聯(lián)網(wǎng)
如何提高高職計算機類專業(yè)學(xué)生非圖形模式下的結(jié)構(gòu)化編程能力,是高職計算機教育中的一個普遍問題。作者通過三年的努力,對“C語言程序設(shè)計”課程在教學(xué)內(nèi)容、教材建設(shè)、實訓(xùn)設(shè)計、網(wǎng)站建設(shè)和考核方式等諸多方面,進(jìn)行了大膽的改革和探索,將電子教材、電子教案、學(xué)習(xí)論壇、編程工具、學(xué)習(xí)資料等,整合成為學(xué)習(xí)網(wǎng)站,在教學(xué)過程中通過論壇發(fā)布程序不同版本,實施案例驅(qū)動,課后通過QQ群進(jìn)行輔導(dǎo)答疑,通過論壇、電子郵件進(jìn)行作業(yè)提交批改,建立了基于案例驅(qū)動的結(jié)構(gòu)化編程教學(xué)模式。本文具體論述了基于案例驅(qū)動的高職C語言結(jié)構(gòu)化編程教學(xué)的過程和方法。
1教學(xué)內(nèi)容
在課程設(shè)計上,針對高職計算機專業(yè)學(xué)制短,技能要求高的特點,提出了“一條線兩階段,三結(jié)構(gòu)四循環(huán)”的教學(xué)模式。
“一條線”是指在一年級的編程教學(xué)課中,貫徹C語言一條線。曾經(jīng)有一種觀點,認(rèn)為高職計算機專業(yè)的編程語言教學(xué),直接從面向?qū)ο笳Z言開始學(xué)習(xí),可以節(jié)約時間。但是,70%的企業(yè)依然要求學(xué)生具備面向過程的結(jié)構(gòu)化編程能力??紤]到企業(yè)的需求,結(jié)合后續(xù)的課程安排,我們決定在一年級的課程安排上,貫徹C語言“一條線”,即在第一學(xué)期,開設(shè)“程序設(shè)計基礎(chǔ)”,第二學(xué)期,開設(shè)面向過程的“C語言程序設(shè)計”。
“兩階段指課程安排分為“程序設(shè)計基礎(chǔ)”和“C語言程序設(shè)計”兩個階段。“程序設(shè)計基礎(chǔ)”解決程序的基本結(jié)構(gòu),重點在建立學(xué)生的結(jié)構(gòu)化程序的基本框架和概念;以C語言為基本語言,使學(xué)生能有實際操作的平臺,但準(zhǔn)確把握“把C語言作為偽語言”的原則,不讓學(xué)生陷入C語言多變的泥淖,而把注意力放在結(jié)構(gòu)化程序的基本結(jié)構(gòu)上?!癈語言程序設(shè)計”放在解決C語言的使用上,把握“C語言”是編程工具而不是研究對象的原則,根據(jù)企業(yè)的編程規(guī)范,對“C語言”進(jìn)行簡化,重點是如何使用C語言解決一般復(fù)雜程度的結(jié)構(gòu)化編程問題。
“三結(jié)構(gòu)”是指在一年的學(xué)習(xí)中,學(xué)生要學(xué)習(xí)三個成績管理軟件的編程,分別是基于一維數(shù)組、二維數(shù)組和動態(tài)結(jié)構(gòu)數(shù)組。從企業(yè)實際應(yīng)用來看,動態(tài)空間的使用,可以用動態(tài)數(shù)組解決。因此我們?nèi)サ袅随湵?,重點是讓學(xué)生寫出有工程實際意義的結(jié)構(gòu)化程序。
“四循環(huán)”是指編寫基于“三結(jié)構(gòu)”的每一個成績管理軟件過程中,教師發(fā)布四個以上的程序版本,引導(dǎo)學(xué)生改寫、增加函數(shù),讓學(xué)生直觀地看到軟件的功能是如何一步一步構(gòu)建起來的。
結(jié)構(gòu)化程序設(shè)計的教學(xué)中,如何讓學(xué)生建立起結(jié)構(gòu)化程序的框架是很困難的。一個簡單的成績管理軟件,代碼就超過300行。對初學(xué)者來說,看懂超過100行的程序就需要很長時間,學(xué)生又如何能在短短的課堂時間里通過增加/改寫函數(shù)來增加功能呢?這也就是很多學(xué)生學(xué)完了C語言程序設(shè)計,依然不能編寫一個簡單的應(yīng)用程序的主要原因。我們發(fā)現(xiàn)通過論壇發(fā)布程序版本,利用工具軟件BeyondCompare,比較不同的程序版本之間的差異,可以讓學(xué)生直觀地看到軟件的功能是如何一步一步構(gòu)建起來的,如圖1所示。程序的第一個版本,就是一個主函數(shù),不超過10行,只顯示程序的幾項功能菜單,學(xué)生很容易理解,然后通過發(fā)布第二個、第三個版本,每一個版本實現(xiàn)或改進(jìn)一個菜單的功能,直到最后版本。
通過圖1,我們可以看到程序功能的增加是由哪些代碼實現(xiàn)的,而通過不斷反復(fù)的比較,學(xué)生就可以掌握結(jié)構(gòu)化程序設(shè)計的過程和方法。
在教學(xué)過程中,通過比較版本,讓學(xué)生直觀地看到復(fù)雜的程序功能是如何由簡單的函數(shù)一個一個構(gòu)成的。學(xué)生經(jīng)過“程序設(shè)計基礎(chǔ)”的課程設(shè)計,基本掌握主函數(shù)與模塊函數(shù)的作用和相互關(guān)系,可以看懂超過100行的C語言源程序,理解基于一維數(shù)組的成績管理系統(tǒng);在“C語言程序設(shè)計”的課程設(shè)計中,學(xué)生對主函數(shù)與模塊函數(shù)的理解更加深入,可以看懂超過300行的C語言源程序,理解基于動態(tài)結(jié)構(gòu)數(shù)組的成績管理系統(tǒng),掌握主函數(shù)的設(shè)計方法,并按照規(guī)范的格式寫出自己的函數(shù)?;叵肴昵?,因為沒有采用這種方法,只要是超過20行的程序,學(xué)生就普遍反映看不懂。由此可見,采用新的方法后,學(xué)生編程能力的提高十分明顯。
2教材建設(shè)
2004年9月清華大學(xué)出版社出版了作者主編的21世紀(jì)高職高專規(guī)劃教材《程序設(shè)計基礎(chǔ)》,教材主要在三個方面進(jìn)行了改革。
(1)強調(diào)把生活中的問題轉(zhuǎn)化為程序的能力,使學(xué)生真正能夠編寫實用的程序
在教材編寫思想上,重點放在培養(yǎng)學(xué)生把生活中的問題轉(zhuǎn)變成為程序并進(jìn)行處理的能力,強調(diào)轉(zhuǎn)變講授思路,推行引導(dǎo)學(xué)生首先想清楚“我要做什么?”,然后才教給學(xué)生“如何做”,最后上機進(jìn)行驗證的三步教學(xué)法。
在教材的編寫風(fēng)格上,對全書所有的例題進(jìn)行了通盤的考慮,在循環(huán)、數(shù)組、函數(shù)和結(jié)構(gòu)化設(shè)計等單元,所有的例子都有前后的聯(lián)系,強調(diào)內(nèi)容的前后銜接,特別注意工程規(guī)范的引入,在變量的命名、程序格式方面,均按工程要求進(jìn)行。在案例選擇上,全部采用工程實際和實際生活中的案例。
(2)提出了以“三大區(qū)域”為特色的c程序的基本框架
通過把一個基本的C程序從上到下分成預(yù)處理區(qū)、變量聲明區(qū)、執(zhí)行語句區(qū)“三大區(qū)域”為特色的C程序的基本框架,讓學(xué)生樹立正確的程序格式與規(guī)范。“三大區(qū)域”概念的提出,明確規(guī)定了程序的基本框架,讓學(xué)生從一開始就按固定的格式進(jìn)行編程,養(yǎng)成良好的編程習(xí)慣。
(3)提出了使用函數(shù)的“三大步九要素”的基本方法,建立使用函數(shù)的清晰框架
我們提出的使用函數(shù)的“三大步九要素”的基本方法,在教學(xué)中取得了很好的效果。
所謂“三大步”,是指我們在使用自定義的函數(shù)時,對函數(shù)進(jìn)行聲明、定義和調(diào)用。三大步按順序進(jìn)行。
所謂“九要素”,是分別指函數(shù)聲明、定義、調(diào)用各有三要素共九點:函數(shù)聲明的三要素:返回值的類型、函數(shù)的名字、形式參數(shù)。函數(shù)定義的三要素:形式參數(shù)、功能、返回值。函數(shù)調(diào)用的三要素:名字、實際參數(shù)、返回值。通過對“九要素”的理解掌握,學(xué)生能夠建立起使用函數(shù)的清晰框架。
3實訓(xùn)設(shè)計
對高職學(xué)小的技能培養(yǎng),實訓(xùn)是很重要的環(huán)節(jié)。我們采用了項目驅(qū)動的思想來設(shè)計實訓(xùn)項目,每一單元的實訓(xùn),都是構(gòu)成最終程序的不同版本,在“程序設(shè)計基礎(chǔ)”頭發(fā)布程序版本8個,“C語言程序設(shè)計”共發(fā)布程序版本10個,構(gòu)成了實用的軟件框架,學(xué)生相當(dāng)于參與了一個中等復(fù)雜程度的軟件開發(fā),積累了經(jīng)驗。在今后的實際工作中,完全可以以此為模板,進(jìn)行結(jié)構(gòu)化程序的開發(fā)。
4網(wǎng)站建設(shè)
利用互聯(lián)網(wǎng)技術(shù),建立基于互聯(lián)網(wǎng)的學(xué)習(xí)資源。2003年建立了“光華之窗”教學(xué)網(wǎng)站,在網(wǎng)站平臺上,將電子教材、電子教案、學(xué)習(xí)論壇,編程工具、學(xué)習(xí)資料等,整合成為學(xué)習(xí)網(wǎng)站,設(shè)計了“程序設(shè)計基礎(chǔ)”、“C語言程序設(shè)計”教學(xué)論壇,兩年來積累了完整的教學(xué)過程資料。可以說,網(wǎng)站的建設(shè)和運行,為課程的質(zhì)量提供了保證,避免了“課隨老師走”的問題。
5考核方式
高職C語言的考試應(yīng)該完全不同于傳統(tǒng)的等級考試。等級考試的川發(fā)點是以C語言為研究對象,多以c語言本身的復(fù)雜多變性為難點。我們認(rèn)為,使用C語言的能力才是重要的。我們采用形成性考核方式,參考學(xué)生學(xué)習(xí)過程中的表現(xiàn),考核學(xué)生用程序解決實際問題的能力,取得了較好的效果。
通過在教學(xué)內(nèi)容、教材建設(shè)、實訓(xùn)設(shè)計、網(wǎng)站建設(shè)和考核方式等諸多方面的改革和探索,充分利用互聯(lián)網(wǎng)資源,建立了基于案例驅(qū)動的結(jié)構(gòu)化編程教學(xué)模式。通過三屆學(xué)生的實際運用,普遍提高了學(xué)生的編程能力。如2003級學(xué)生黃小明編寫的“課堂警官”軟件,在全國第九屆“挑戰(zhàn)杯”上,作為全國高職院校的唯一參賽選手,和清華、北大等國內(nèi)外一流大學(xué)同臺競技,取得了三等獎的良好成績。