梁廣瑞,鐘國文
(廣西機電職業(yè)技術(shù)學(xué)院,廣西 南寧 530007)
淺談全國大學(xué)生電子設(shè)計大賽與《C語言程序設(shè)計》教學(xué)改革
梁廣瑞,鐘國文
(廣西機電職業(yè)技術(shù)學(xué)院,廣西 南寧 530007)
C語言是電子電氣各專業(yè)都開設(shè)的一門重要的專業(yè)基礎(chǔ)課,它涉及知識點多,概念復(fù)雜,語法表達靈活,學(xué)生掌握起來有困難。文章闡述了C語言傳統(tǒng)教學(xué)方法的弊端,并介紹了我系在全國大學(xué)生電子設(shè)計大賽的推動下對《C語言程序設(shè)計》課程進行的教改措施。
電子設(shè)計大賽;C語言教學(xué)改革;項目教學(xué)法;AVR單片機
全國大學(xué)生電子設(shè)計競賽已成為全國電子信息類專業(yè)學(xué)生規(guī)模和影響最大的賽事之一。該賽的特點是與高等學(xué)校相關(guān)專業(yè)的課程體系和課程內(nèi)容改革密切結(jié)合,以推動其課程教學(xué)、教學(xué)改革和實驗室建設(shè)工作。由于該賽的挑戰(zhàn)性、趣味性、公平性和對學(xué)生就業(yè)的促進性,吸引了大量的相關(guān)專業(yè)學(xué)生參與。如何利用該賽的影響力及指導(dǎo)作用推動相關(guān)課程的教學(xué)改革一直是我校重點關(guān)注的一個課題。論文以《C語言程序設(shè)計》課程為例,介紹我校電子電氣類專業(yè)圍繞該賽事所進行的教學(xué)改革及效果。
《C語言程序設(shè)計》是電子電氣各專業(yè)都開設(shè)的一門非常重要的專業(yè)基礎(chǔ)課,而由于當前嵌入式技術(shù)的飛速發(fā)展以及廣泛應(yīng)用,C語言作為其最重要的開發(fā)工具更加凸顯該門課程的重要性。但是,由于C語言知識點多,概念復(fù)雜,語法表達靈活,學(xué)生掌握起來有困難。出現(xiàn)最多的問題是學(xué)了不知道有什么用,程序看得懂但是自己寫不出來,沒有養(yǎng)成良好的編程習(xí)慣,缺乏寫出可復(fù)用代碼的意識,無法理解C語言的精髓,比如指針、模塊化編程、可移植性等。這些問題必須通過教學(xué)內(nèi)容、教學(xué)方法的改革來解決。
隨著計算機技術(shù)、嵌入式技術(shù)的發(fā)展,計算機基礎(chǔ)技術(shù)的內(nèi)容也在逐步地產(chǎn)生變化,當前《C語言程序設(shè)計》教學(xué)內(nèi)容、教學(xué)方法必須依據(jù)專業(yè)特點、技術(shù)熱點、企業(yè)的技術(shù)要求、發(fā)展趨勢進行改革,以適應(yīng)新的形勢和要求。傳統(tǒng)的教學(xué)內(nèi)容和方法存在很大的弊端,主要有下面幾點:
(1)以普通PC機作為C語言運行的主要硬件平臺
對于電子電氣類專業(yè)的學(xué)生,畢業(yè)后從事開發(fā)PC機的C語言程序的情況是非常少的,C語言功能的強大及廣泛應(yīng)用在于它既是高級語言又接近底層,所以被稱為“中級語言”。它不同于目前流行的C#、Java等語言,它主要活躍于單片機、嵌入式微處理器、DSP等嵌入式系統(tǒng),這些也正是電子設(shè)計大賽主要考核的內(nèi)容。以PC為平臺,學(xué)生不理解C語言有什么用,缺乏學(xué)習(xí)的動力,因為當前所接觸到的PC上林林總總、令人眼花繚亂的軟件基本不是用C語言直接開發(fā)的,學(xué)生產(chǎn)生了很大的疑惑。另外,以PC為平臺編寫的例子程序一般比較抽象,由于X86體系的處理器比較復(fù)雜,內(nèi)存的映射關(guān)系不容易理解,造成學(xué)生難以理解指針等C語言的重要概念。
(2)教學(xué)內(nèi)容過于注重語法細節(jié),忽視語言應(yīng)用
教學(xué)內(nèi)容重點放在語言要素講解上,過于重視語法細節(jié),現(xiàn)有教材提供的例子只重視語法講解,不注重風(fēng)格,在變量名稱、注釋、習(xí)慣用法上不符合規(guī)范,代碼質(zhì)量不高。作為模塊化編程基礎(chǔ)的函數(shù)、C語言的精髓指針、文件的組織與安排等重要內(nèi)容的引入過慢。另外在一些習(xí)題上出現(xiàn)一些或許是正確的但是卻不可能出現(xiàn)或很少有這種用法的程序表達,誤導(dǎo)了學(xué)生。還有一些基于項目教學(xué)法所引入的項目,由于基于PC平臺,而C語言不擅長做windows程序界面設(shè)計,以DOS界面為主,學(xué)生認為知識過時,提不起興趣。
(3)教學(xué)方法單調(diào),手段不多
教學(xué)方法主要采用講授法和實驗法,近年來也開始推廣采用項目教學(xué)法。對于講授法和實驗法,學(xué)生只是被動接受,缺乏主動參與,他們更多地關(guān)注計算機等級考試,不能切實體會C語言在實際應(yīng)用中的強大。對于項目教學(xué)法,關(guān)鍵在于選擇合適的項目,但是由于以PC為運行平臺,難以設(shè)計一個同時具備實用性、趣味性、新穎性、可操作性并覆蓋了大多數(shù)知識要點的題目。
電子設(shè)計大賽中,單片機或各種嵌入式微處理器的使用是非常重要的知識點,由于比賽時間短、題目靈活,對單片機的開發(fā)必須要采用C語言編程。因此,為了取得更好的成績,優(yōu)秀的隊伍還必須在比賽準備期間做好各個基本模塊,采用模塊化編程、考慮程序的移植性,以企業(yè)項目開發(fā)的標準來做準備。而由于以上幾點弊端,學(xué)生在參加電子設(shè)計大賽的過程中,感覺學(xué)與用之間鴻溝很大,指導(dǎo)教師需要給他們補充很多內(nèi)容。比如:課堂上C語言和單片機的課程是分開獨立的,而單片機的教學(xué)為強調(diào)對計算機原理的理解,課堂上主要運用的是匯編語言,而C語言課堂也沒有很好地結(jié)合單片機來講解,造成了銜接上的困難。
上面的分析中知道,C語言運行的平臺是一個關(guān)鍵的選擇,針對專業(yè)上需求的特點及目前電子設(shè)計大賽的要求,選擇了以單片機或嵌入式處理器為主、PC機為輔的平臺方案。通過分析比較了51、AVR、stm32、ARM7微處理器等幾個常見微控制器,從處理器的結(jié)構(gòu)、對標準C支持的程度、易學(xué)易用性、是否滿足電子大賽要求等幾個方面考慮,最終確定了AVR單片機作為C語言運行平臺。在教學(xué)內(nèi)容上,重點放在模塊化編程、常見控制程序分析、指針的操作等內(nèi)容,強調(diào)編程良好的風(fēng)格,一開始就要求學(xué)生寫規(guī)范的代碼。由于引入了AVR單片機,而學(xué)時上是不增加的,經(jīng)過我們教學(xué)實踐發(fā)現(xiàn),即使沒有對AVR單片機這部分做詳細的講解,學(xué)生也能夠理解并應(yīng)用,這個跟學(xué)C語言而不需要知道PC機的原理是一樣的。只需要告訴學(xué)生,如何通過指針操作單片機的寄存器,而不同的寄存器有什么功能或效應(yīng),學(xué)生就可以快速應(yīng)用。
1.教學(xué)方法的改進
參加電子設(shè)計大賽,就是在短短的三天時間里完成一個小型項目。因此,在教學(xué)方法上,主要采用項目驅(qū)動法。課程由淺入深設(shè)計了流水燈、步進電機控制、DS18B20溫度檢測控制、智能循跡小車等幾個項目。并在課程實訓(xùn)階段組織學(xué)生進行智能小車比賽,比賽成績作為課程成績的參考。由于這些項目具有趣味性,貼近實際,學(xué)生產(chǎn)生了濃厚的興趣,由以前的教師督促著學(xué)、灌輸著學(xué)改為現(xiàn)在的主動學(xué)、要求學(xué)。在教學(xué)時間安排上,使用3+3模式,即每周的6節(jié)課安排為3節(jié)理論加3節(jié)上機實踐。在具體的教學(xué)實施過程中,注意抓住幾個要點:一是弱化語法細節(jié),重視算法及其實現(xiàn)。通過突出算法,進而帶動基本語法的學(xué)習(xí),可以更加合理地分配學(xué)習(xí)時間,提高學(xué)習(xí)效率。二是指導(dǎo)學(xué)生閱讀“好”的代碼。不可否認,不少教材在這一方面做得遠遠不夠,代碼例子不重視編程風(fēng)格,變量命名、函數(shù)命名不符合規(guī)范,缺乏注釋,縮進混亂等等,這需要教師在平時的備課、科研項目中收集優(yōu)秀的代碼范本,讓學(xué)生去模仿。三是將常見的編程調(diào)試錯誤收集整理,以文本形式讓學(xué)生閱讀。實踐證明,由于學(xué)生初學(xué)編程,犯的錯誤很多是相同的,而且往往是語法上的簡單錯誤,因此在實驗上機操作課上,讓學(xué)生提前閱讀典型錯誤的信息,可以大大提高課堂效率,并培養(yǎng)了學(xué)生閱讀文檔的好習(xí)慣。
2.考試模式改革
C語言傳統(tǒng)的考試模式主要采用筆試的模式,試卷內(nèi)容一般為語法的基礎(chǔ)知識(主要以填空題或選擇題為主)、閱讀程序、程序設(shè)計等幾種類型,答案比較固定、唯一。這份試卷可以評估學(xué)生掌握基礎(chǔ)知識的能力,但是這種方法不能全面了解學(xué)生的能力,并且容易使學(xué)生以為C語言水平的高低就是簡單一份基礎(chǔ)知識試卷的成績高低,而沒有意識到C語言關(guān)鍵是應(yīng)用,真正實際工作中要完成一個項目不是簡單地運用C語言的基礎(chǔ)知識就足夠的。另外,在教學(xué)過程中采用3+3的模式,而考試只有理論筆試,不利于提高學(xué)生參與項目教學(xué)法的積極性。因此,考核應(yīng)采用理論筆試+項目機試的方法,其中每項的比重各占50%,最終成績并入期考成績項。
項目機試就是以一個包含多個知識點的小項目為題目,要求學(xué)生在規(guī)定的時間內(nèi)完成編程、調(diào)試??荚囘^程中可以參考課本、參考書等紙質(zhì)資料,但是不可以上網(wǎng)查閱。如何出好題目是關(guān)鍵,必須要考慮到各個層次學(xué)生的能力并要有區(qū)分度。一個典型的題目設(shè)計方法是將一個項目題目分成功能上相對獨立的幾塊,每塊難度逐漸增加,這樣可以保證不同水平的學(xué)生都能拿到一定的成績。
通過兩屆學(xué)生的教學(xué)實踐,證明以上教學(xué)的轉(zhuǎn)變是積極有效的。學(xué)生不但完成了C語言課程的學(xué)習(xí),而且對單片機技術(shù)有了一定的掌握,還學(xué)習(xí)了電子設(shè)計大賽經(jīng)常出現(xiàn)的一些基本功能模塊,因此在后續(xù)的單片機學(xué)習(xí)和電子設(shè)計大賽準備中起了很好的銜接作用。
[1]鄒海榮.非計算機專業(yè)《C語言程序設(shè)計》課程教改探析[J].福建電腦,2010,(5).
[2][美]Kenneth A.Reek.C和指針[M].北京:人民郵電出版社,2008.
[3]于華.應(yīng)用型本科院校C語言教學(xué)改革的探討[J].山西大同大學(xué)學(xué)報(自然科學(xué)版),2009,(6).
[4]宋楚平,李少芹.C語言教學(xué)改革的思考[J].職業(yè)教育研究,2005,(2).
[5]劉賢鋒.高職“C語言程序設(shè)計”課程整體教學(xué)設(shè)計探討[J]].中國電力教育,2009,(8).
G642
A
1673-0046(2011)11-0151-02