汪宋良
C語言是一門廣泛使用的計算機高級語言,各高等院校電子類專業都普遍開設了“C語言程序設計”課程。目前,單片機、DSP、ARM系統的軟件編程都采用C語言甚至更高級語言(C++)來實現。因此,對于電子類專業來說,C語言是一門必須掌握的專業基礎課,是后續課程(如“單片機原理與應用”、“單片機C語言”、“嵌入式系統”)及各類電子競賽培訓的編程基礎;同時,根據高職院校的人才培養體系特點,如培養年限短(3年)、生源較本科生差、嵌入式(ARM)課程及更高級語言(C++)難度大等,學習單片機和C語言尤為重要。
根據學習后續課程的迫切需要,寧波城市職業技術學院電子類專業目前已將C語言安排為第一語言。在高職高專“項目化”課程改革背景下,如何有效提高C語言教學效果,給學校和教師帶來了新的壓力和挑戰。為了實現課程的教學目標,學校通過與企業的深入合作、共同探索與實踐,在實施“崗位引導、雙高雙證三體系”的特色人才培養模式基礎上,采用以Protues和Keil軟件相結合為環境的運行平臺,以“項目引導、任務驅動”為教學理念的“C語言程序設計”課程教學模式,收到了良好的教學效果。
目前,普通高等學校(本科教育)一般都將“C語言程序設計”作為理工科非計算機專業的計算機基礎教育課程,而高職院校也基本參照本科院校教育體系,將“C語言程序設計”作為計算機基礎教育課程的一部分進行教學。但在教學方法上,并沒有考慮高職教育與本科教育、計算機專業與電子類專業、四年與三年、生源等的差別,沒有針對高職電子類專業特點進行課程體系改革,最終,使該課程成為非計算機專業學生的“計算機通識教育”課程。通過走訪、調研及查閱資料發現,高職電子類專業C語言課程教學現狀如下。
1.教學模式1。按照本科教育課程體系,電子類專業C語言課程由計算機專業教師擔任,采用標準C語言編程的應用軟件Vc++環境為運行平臺,以printf()及scanf()指令對課程語法及知識進行調試(算法、數據類型、運算符、表達式、順序結構、選擇結構、循環結構、數組、函數、變量類型、預處理命令、指針、結構體與共用體、位運算及文件等)。
2.教學模式2。區別于本科院校教學模式。由于“C語言程序設計”課程教學存在學生學習積極性低、學習目的不明確,教師教學方法未與時俱進、實踐教學效果不明顯等問題,因此,提出“教學做一體”、“任務驅動”、“項目化教學”等教學模式和方法。但其教學內容跟“教學模式1”沒有本質區別。
3.教學模式3。由于高職電子類專業“C語言程序設計”課程教學存在弊端,因此,運用基于工作過程的課程體系開發對課程重構設計,對教學目標重新定位。將“單片機原理與應用”課程設為前序課程,將“C語言程序設計”與“單片機C語言”合并統稱為“單片機C語言程序設計”,并對其進行基于工作過程的學習情境設計,大膽改革教學內容,采取任務驅動式教學方法,以達到高職教育的教學目標。
為了實現教學目標,區別于前述教學模式,C語言課程改革思路為:將課程安排在大一第2學期,將課程的思路及語法基礎融入電子類專業具體的案例中,通過與單片機仿真軟件Proteus和Keil相結合的典型可視化項目,改革“C語言程序設計”課程的教學內容、教學方法和手段、考核機制等,側重其在電子專業中的工程應用,使教學更具針對性,為后續“單片機應用與技術”、“電子競賽培訓”及“嵌入式系統”等課程打下扎實的編程基礎。
課改后,在以Protues和Keil軟件相結合為環境的運行平臺下編譯、調試C語言程序,完全去除以標準C語言編程的應用軟件Vc++環境為運行平臺的教學模式。選取按鍵、LED指示燈、數碼管、蜂鳴器作為輸入和輸出設備,替代抽象的printf()和scanf()輸入輸出語法指令,使電子類專業學生能更加生動形象地理解C語言與專業的關系,這也是該課程最大的創新之處。按照課程項目內容,學習C語言語法知識并使用指令完成編程訓練,在Keil編程軟件下編譯和調試。要求學生能熟練使用Keil編程軟件及環境下編譯、調試的方法,使用Keil生成.hex文件導入Proteus ISIS仿真軟件,實現效果演示。
因為本課程開設前,學生未學過單片機的硬件知識,所有編程涉及單片機硬件部分則采用整體打包、函數調用方式實現。這樣,學生不用理解單片機硬件基礎知識,就能在該平臺下編程、編譯、調試及演示,能直觀看到編程效果。比如:點亮第n盞LED燈時,直接調用函數LED[n]即可(該函數課堂提供),與單片機引腳無關。而且,課程所有實訓項目在同一個典型Proteus ISIS電路圖下調試完成(Proteus軟件畫圖不作要求),典型電路如圖1所示。

圖1 Proteus ISIS典型電路
依據“項目引領、任務驅動”課程教學模式的基本理念與電子類專業“C語言程序設計”課程教學目標的要求,課程組對電子行業基本輸入輸出設備從常見常用角度進行篩選,按照項目可視化要求,最終確定以按鍵、LED指示燈、數碼管、蜂鳴器等四種輸入輸出設備使用作為該課程主要教學內容。在構建課程教學項目時,考慮到C語言課程內容范圍廣且章節間獨立性較強,如通過某一綜合項目串聯各部分內容必然會增加項目難度,導致大部分學生無法完成項目,失去對課程學習的信心,所以,課程組通過若干個小項目的組合來完成課程教學內容,既控制了項目的難易程度,又包含了C語言所有語法知識。
在具體項目設計過程中,課程組牢牢把握從為后續課程服務角度尋找項目(如輸入輸出設備等)的原則,運用真實性、直觀性來調動學生的學習興趣。此外,課程組對部分難度較大但直觀性很強的現實項目進行了教學改造,如數碼管替代LCD顯示屏,降低編程難度,使得大部分學生通過努力能夠完成項目,而不至于失去信心。“C語言程序設計”課程教學項目如表1所示。

表1 “項目引導、任務驅動”的“C語言程序設計”課程教學項目

續表1
課程組對“C語言程序設計”課程項目化教學實施遵循“案例—語法—編程”的教學規律來組織,每個教學項目都通過效果演示、明確任務、案例程序、編程修改、報告撰寫等五個步驟實現,如圖2所示為“交通指揮燈”項目實施流程。

圖2 “交通指揮燈”項目實施流程
1.提出問題:效果演示、明確任務。為激發學生對項目學習與編程的興趣,該階段首先通過Protues電路圖模擬演示程序運行效果,讓學生有直觀的認識。然后,再明確項目設計的具體功能,從生活中普遍見到的現象展開敘述,提高項目的可讀性。
2.分析問題:案例程序。在實際教學中,對案例程序進行詳細講解和分析,對案例程序中語法、指令、語句使用、編程習慣等重點闡述,并且對案例程序中出現的某一指令進行展開理論講解。比如,案例程序中使用了左移運算符(>>),那么,就會對所有的運算符(>>&|~^<<)進行講解、擴展,使學生有系統的理論體系。同時,敢于打破傳統學科體系的知識結構教學方法,根據任務要求的先后順序重新組織理論知識,這也是本文的創新點之一。
3.解決問題:編程修改、報告撰寫。在本階段,要以學生為主體開始具體程序的編寫,讓學生根據案例程序進行修改和功能擴展。教師的主要工作在于:一方面,引導學生從所學語法指令修改原案例程序,培養學生的動腦與動手編程思維能力;另一方面,引導學生通過Protues軟件對Keil軟件編寫程序進行運行、驗證及問題解決。此外,教師還要對學生的完成情況進行點評,以增強完成者的榮譽感與自信心,形成班級的競爭氛圍;對部分提前完成任務的學生,要提出更加復雜功能的編程任務,旨在培養編程方面更加優秀的學生。
4.項目化教學考核。課程項目化教學考核是檢查課程學習任務達成度的重要教學步驟,同時,也是促進學生學習的重要手段。項目化教學考核對學生全面認識自己的不足有很強的導向作用,因此,課程項目化教學考核重點要放在考察學生的能力與素質上。
考察分為形成性評價和終結性評價兩個部分:形成性評價包括工作態度(5%)、課堂項目完成(50%)、項目報告(5%)三個部分;終結性評價則分為期末理論閉卷考試(20%)、期末項目開卷考試(20%)兩部分。通過綜合評價,既體現了課程動手實踐、編程解決具體問題的教學導向,又體現了在實踐中掌握課程理論知識的教學目的。
目前,寧波城市職業技術學院運用“項目引領、任務驅動”教學模式組織“C語言程序設計”課程教學,已經過一屆學生的試行。通過教學比較,發現在新模式下學生對教學內容學習興趣濃厚,對基本編程方法能夠較靈活地運用,并在全國大學生電子類競賽中獲得了較好成績。但是,這項教改還面臨著課程教學理念、企業參與課程教學過程的方式等亟需完善的問題,還需要不斷進行探索。
[1]Brian W.Kernighan,Dennis M.Ritchie.The CProgramming Language[M].Prentice Hall:Inc,1988.
[2]Brian W.Kernighan,Dennis M.Ritchie.The CProgramming Language[M].北京:機械工業出版社,2004.
[3]Bjarne Stroustrup.The C++Programming Language:Special Edition[M].北京:機械工業出版社,2010.
[4]張玉學.高職電子專業C語言教學探討[J].現代企業教育,2007(8):32-33.
[5]黃光華.電子信息工程專業C語言程序設計課程“四位一體”教學模式探索[J].才智,2011(35):250.
[6]陸志強.非計算機專業“C語言程序設計”課程教學改革探討[J].張家口職業技術學院學報,2011(3):65-66.
[7]文星.高職電子專業C語言教學探究[J].湘潭師范學院學報,2009(3):211-212.
[8]封宇.淺談《C語言程序設計》在高職電子類專業的教學改革[J].廣西輕工業,2011(7):53.
[9]姜世芬.高職電子類專業“C語言程序設計”課程改革探究[J].科技創新導報,2009(17):110.
[10]邵長友.高職應用電子專業“C語言程序設計”課程改革設想[J].計算機教育,2008(4):34-36.
[11]梁廣瑞,鐘國文.淺談全國大學生電子設計大賽與“C語言程序設計”教學改革[J].太原城市職業技術學院學報,2011(11):151-152.
[12]李愛芹,趙鳳申.高職院校機電專業C語言課程教學探索與實踐[J].南通航運職業技術學院學報,2009(12):65-66.