劉爭(zhēng)紅 張向利
(桂林電子科技大學(xué),廣西 桂林 541004)
C語(yǔ)言是目前世界上最流行、也是使用最廣為泛的高級(jí)程序設(shè)計(jì)語(yǔ)言之一。其語(yǔ)言簡(jiǎn)潔緊湊、靈活方便,數(shù)據(jù)類型豐富,表達(dá)方式靈活,具備很強(qiáng)的數(shù)據(jù)處理能力,在操作系統(tǒng)和許多大型應(yīng)用軟件以及需要對(duì)硬件進(jìn)行操作的場(chǎng)合都是采用C語(yǔ)言編程設(shè)計(jì)的。在我國(guó)高等院校理工科相關(guān)專業(yè)的課程體系中,C語(yǔ)言課程通常作為必修課程來(lái)定位的,也有一些高等院校把通過(guò)計(jì)算機(jī)等級(jí)考試二級(jí)(C語(yǔ)言)作為獲得學(xué)位的基本條件。對(duì)于電子信息類本科專業(yè)來(lái)說(shuō),C語(yǔ)言課程地位在后續(xù)課程乃至學(xué)生職業(yè)生涯中同樣是不容小覷。C語(yǔ)言課程通常被安排在大學(xué)一年級(jí),是一門(mén)全新的編程課程,相對(duì)于其之前的所掌握的的知識(shí)結(jié)構(gòu),所涉及的概念復(fù)雜,規(guī)則繁雜,使用靈活,相對(duì)于高中階段的知識(shí)結(jié)構(gòu)而言,具有完全不同知識(shí)結(jié)構(gòu)的課程。對(duì)于這些剛剛進(jìn)度大學(xué)的C語(yǔ)言初學(xué)者,不能透徹的理解掌握本課程的知識(shí)甚至精髓,更別提深入靈活運(yùn)用到后續(xù)專業(yè)課程中了。
鑒于電子信息類專業(yè)C語(yǔ)言教學(xué)過(guò)程中存在的一系列問(wèn)題,尋找合適的教學(xué)方法,提高學(xué)生學(xué)習(xí)C語(yǔ)言的學(xué)習(xí)興趣,掌握解決實(shí)際問(wèn)題能力顯得非常重要。目前電子信息專業(yè)C語(yǔ)言教學(xué)過(guò)程中存在的主要問(wèn)題:
在電子信息專業(yè)的培養(yǎng)計(jì)劃里,C語(yǔ)言課程會(huì)被安排在大學(xué)一年級(jí),而本階段的本科學(xué)生剛剛進(jìn)入大學(xué),對(duì)于本專業(yè)課程體系沒(méi)有一個(gè)清晰的認(rèn)識(shí),也無(wú)法體會(huì)C語(yǔ)言在今后專業(yè)學(xué)習(xí)乃至進(jìn)入工作崗位從事IT行業(yè)技術(shù)開(kāi)發(fā)的重要地位。C語(yǔ)言是一門(mén)理論性和實(shí)踐性都很強(qiáng)的課程,在實(shí)際的教學(xué)或時(shí)間的模式中,基本遵循這灌輸是的教學(xué)方法,教師為了完成教學(xué)工作量而教,學(xué)生為了獲得學(xué)分而學(xué);這種教學(xué)方法與電子信息類專業(yè)培養(yǎng)需求和模式完全脫節(jié)。以至于畢業(yè)生知識(shí)結(jié)構(gòu)停留于書(shū)本停留于考試,不具備解決實(shí)際應(yīng)用問(wèn)題,導(dǎo)致一方面大學(xué)畢業(yè)生感嘆就業(yè)難,而企業(yè)同時(shí)感嘆找人難的兩難尷尬境地。
C語(yǔ)言具有有語(yǔ)法規(guī)則靈活、運(yùn)算符和數(shù)據(jù)類型豐富、程序設(shè)計(jì)自由度大的特點(diǎn),C語(yǔ)言不是簡(jiǎn)單的語(yǔ)法學(xué)習(xí),同時(shí)還包含了數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)基礎(chǔ)知識(shí)還有程序設(shè)計(jì)算法。目前國(guó)內(nèi)基礎(chǔ)教育的現(xiàn)狀決定了很多進(jìn)入大學(xué)的學(xué)生習(xí)慣了高中階段那種填鴨式的應(yīng)試教育模式,缺乏主動(dòng)鉆研的學(xué)習(xí)動(dòng)力,仍然采用機(jī)械式的方法被動(dòng)的去學(xué)習(xí)C語(yǔ)言知識(shí),通過(guò)死記硬背來(lái)來(lái)掌握C語(yǔ)言編程中的語(yǔ)法規(guī)則、指針使用,函數(shù)調(diào)用等一些知識(shí)點(diǎn),自然無(wú)法做到靈活應(yīng)用。各種原因造成了C語(yǔ)言學(xué)習(xí)入門(mén)難,學(xué)生對(duì)于該課程的學(xué)習(xí)產(chǎn)生了厭學(xué)和畏難情緒,嚴(yán)重影響了C語(yǔ)言教學(xué)效果。
目前沒(méi)有單獨(dú)針對(duì)電子信息專業(yè)C語(yǔ)言教學(xué)的教材。作為電信信息專業(yè),后續(xù)課程如單片機(jī)編程、信號(hào)處理及DSP實(shí)現(xiàn)、計(jì)算機(jī)網(wǎng)絡(luò)這些課程都涉及到C語(yǔ)言具體應(yīng)用。但是這些在前期的C語(yǔ)言教材以及課堂教學(xué)中并沒(méi)有體現(xiàn)出來(lái)。如果需要做到這一點(diǎn)要求這本身對(duì)授課老師提出了更高層次的要求:知識(shí)全面,對(duì)后續(xù)課程有著較為深刻的認(rèn)識(shí);實(shí)踐應(yīng)用能力強(qiáng),具有豐富的相關(guān)開(kāi)發(fā)經(jīng)驗(yàn)。當(dāng)然也不排除多學(xué)科老師共同參與到C語(yǔ)言教學(xué)中來(lái),將C語(yǔ)言教學(xué)課堂分解成多個(gè)小課堂,邀請(qǐng)具有不同專業(yè)開(kāi)發(fā)經(jīng)驗(yàn)的教師來(lái)講授不同章節(jié)的內(nèi)容。
鑒于C語(yǔ)言教學(xué)與大學(xué)階段其他常規(guī)課程學(xué)習(xí)在學(xué)習(xí)方法、知識(shí)結(jié)構(gòu)、有較大的不同,使得C語(yǔ)言教學(xué)存在很多的問(wèn)題。通過(guò)探索和研究靈活多樣的教學(xué)手段,結(jié)合專業(yè)背景,因材施教,提高學(xué)生教學(xué)效率與專業(yè)素質(zhì),是目前電子信息專業(yè)一個(gè)亟待解決的問(wèn)題。以下從幾個(gè)方面結(jié)合教學(xué)過(guò)程中的一些體會(huì)談?wù)勲娮有畔I(yè)C語(yǔ)言教學(xué)。
學(xué)習(xí)最忌盲目,更忌為考而學(xué)。讓學(xué)生明白本課程在專業(yè)課程體系中的地位,讓學(xué)生對(duì)有目的的去學(xué),做到有的放矢,激發(fā)學(xué)生的專業(yè)興趣,這一點(diǎn)是非常重要的。C語(yǔ)言在電子信息專業(yè)課程體系中屬于一門(mén)應(yīng)用基礎(chǔ)課程,在學(xué)習(xí)信號(hào)處理、計(jì)算機(jī)網(wǎng)絡(luò)、通信原理等課程的基礎(chǔ)上,結(jié)合DSP、MPU、MCU等硬件平臺(tái)可以進(jìn)行通信網(wǎng)絡(luò)設(shè)備、工業(yè)控制設(shè)備、消費(fèi)類電子設(shè)備等專業(yè)技術(shù)應(yīng)用開(kāi)發(fā)。我們可以在教學(xué)過(guò)程中不妨通過(guò)現(xiàn)場(chǎng)演示本課程在后續(xù)課程中的應(yīng)用(嵌入式DSP FPGA單片機(jī)):演示C語(yǔ)言編程實(shí)現(xiàn)DSP變成實(shí)現(xiàn)數(shù)字信號(hào)濾波、對(duì)比匯編語(yǔ)言來(lái)理解C語(yǔ)言的編程效率;通過(guò)展示TCP/IP協(xié)議棧部分源代碼來(lái)了解計(jì)算網(wǎng)絡(luò)通信的部分工作機(jī)理。通過(guò)這種基礎(chǔ)課程與專業(yè)課程、專業(yè)理論和技術(shù)應(yīng)用的前后關(guān)聯(lián),讓他們明白本課程在后續(xù)課程甚至職業(yè)發(fā)展中的重要性:C語(yǔ)言兼具高級(jí)語(yǔ)言的開(kāi)發(fā)效率和底層匯編語(yǔ)言執(zhí)行效率的特點(diǎn),可應(yīng)用于后續(xù)課程如單片機(jī)、ARM流程控制、人機(jī)界面交互、在信號(hào)處理專業(yè)領(lǐng)域DSP信號(hào)處理應(yīng)用算法、移動(dòng)通信、計(jì)算機(jī)網(wǎng)絡(luò)通信等領(lǐng)域協(xié)議開(kāi)發(fā),是電子信息專業(yè)畢業(yè)設(shè)計(jì)從事技術(shù)開(kāi)發(fā)主要涉及的領(lǐng)域。掌握好C語(yǔ)言編程也是電子信息專業(yè)的學(xué)生今后從事IT行業(yè)的一項(xiàng)重要技能。
C語(yǔ)言開(kāi)發(fā)環(huán)境眾多,在目前大多數(shù)教學(xué)過(guò)程中主要采用的集成開(kāi)發(fā)環(huán)境有Turbo C、Visual C++和C++Builder,這些編譯環(huán)境功能非常強(qiáng)大,通用性也很好,但是不同編譯環(huán)境都有著各自的特點(diǎn)。從教學(xué)角度來(lái)看,Turbo C小巧靈活,操作簡(jiǎn)單,最容易為學(xué)生接受。從學(xué)生專業(yè)發(fā)展角度考慮,筆者建議采用Visual C++和C++Builder應(yīng)用于C語(yǔ)言教學(xué),畢竟這兩種集成開(kāi)發(fā)環(huán)境普遍應(yīng)用于商業(yè)軟件開(kāi)發(fā)。雖然在前期的熟悉使用過(guò)程中,學(xué)生會(huì)多少存在一定的障礙和難度,但是通過(guò)一系列的上機(jī)實(shí)驗(yàn),學(xué)生對(duì)于開(kāi)發(fā)環(huán)境的使用無(wú)形之中得到訓(xùn)練,也為以后有關(guān)課程的學(xué)習(xí)和從事軟件開(kāi)發(fā)奠定基礎(chǔ)。對(duì)于開(kāi)發(fā)環(huán)境的選擇也不要僅僅拘泥于這兩種主流的開(kāi)發(fā)環(huán)境,作為電子信息專業(yè)教學(xué),我們不妨做一些大膽的嘗試,于在課堂和實(shí)驗(yàn)教學(xué)中提前引入Keil C51、TI CCS這一類基于硬件平臺(tái)的開(kāi)發(fā)環(huán)境,這一類的開(kāi)發(fā)環(huán)境有一個(gè)共同特點(diǎn)就是以某一系列MCU或者DSP作為開(kāi)發(fā)平臺(tái),其數(shù)據(jù)類型與數(shù)據(jù)長(zhǎng)度、程序跳轉(zhuǎn)與地址操作直接與硬件關(guān)聯(lián)、從而更容易理解C語(yǔ)言程序設(shè)計(jì)如數(shù)據(jù)類型、地址、指針等精髓內(nèi)容。
任何一門(mén)課程的教學(xué),都包含教與學(xué)兩個(gè)方面,只有很好的組織這兩個(gè)環(huán)節(jié),才能切實(shí)提高我們的教學(xué)效果。同樣的授課內(nèi)容,如何形象具體的將知識(shí)呈現(xiàn)在課堂上,讓學(xué)生輕松愉快的,甚至于是有所感悟的獲取知識(shí),才能避免理論與實(shí)踐脫鉤,才能充分調(diào)動(dòng)學(xué)生的積極性。C語(yǔ)言教學(xué)內(nèi)容包括數(shù)據(jù)表達(dá)、流程控制、數(shù)據(jù)的輸入和輸出及處理機(jī)制方面的語(yǔ)法和規(guī)則。機(jī)械的講授C語(yǔ)言的語(yǔ)法和規(guī)則,那么課堂必然變得單調(diào)與枯燥,氣氛比較沉悶,教學(xué)效果不理想,學(xué)生產(chǎn)生厭學(xué)情緒,挫傷了學(xué)生的學(xué)習(xí)積極性。整個(gè)課程概念抽象,理論性強(qiáng),對(duì)于剛剛進(jìn)入大學(xué)的新生來(lái)說(shuō),在理解和掌握這些規(guī)則和定義存在一定的困難。如何將抽象的概念具體化,將理論、方法和技術(shù)形象化,理論與實(shí)際相結(jié)合是我們?cè)诮虒W(xué)中不斷探討和研究的課題。實(shí)例化教學(xué)模式的應(yīng)用在理論教學(xué)中收到了較好的效果。通過(guò)比較同樣的數(shù)學(xué)算法匯編語(yǔ)言實(shí)現(xiàn)與C語(yǔ)言實(shí)現(xiàn)的編程效率與可讀性;通過(guò)單片機(jī)實(shí)現(xiàn)軟啟動(dòng)來(lái)理解地址的深入應(yīng)用;通過(guò)演示單片機(jī)矩陣鍵盤(pán)動(dòng)態(tài)掃描來(lái)理解位移操作;通過(guò)LCD點(diǎn)陣液晶漢字字庫(kù)取模與顯示演示如何通過(guò)定義常量類型數(shù)據(jù)節(jié)省存儲(chǔ)空間,通過(guò)字庫(kù)尋址演示靈活運(yùn)用指針。
現(xiàn)在單片機(jī)在中小學(xué)生中的應(yīng)用推廣已經(jīng)不是什么新鮮事情了,自然將單片機(jī)的編程應(yīng)用與C語(yǔ)言教學(xué)結(jié)合起來(lái)對(duì)于應(yīng)該不會(huì)有什么困難。盡管低年級(jí)學(xué)生還沒(méi)有學(xué)習(xí)《數(shù)字電路》、《單片機(jī)原理》這類課程,無(wú)法對(duì)單片機(jī)內(nèi)部結(jié)構(gòu)及工作原理深入理解,但是在C語(yǔ)言教學(xué)過(guò)程中,這部分并非重點(diǎn)。通過(guò)運(yùn)行只需要C語(yǔ)言課程所學(xué)習(xí)到的基礎(chǔ)語(yǔ)句實(shí)現(xiàn)的小例程,如跑馬燈、數(shù)碼管顯示、按鍵掃描等,這些小例程現(xiàn)象直觀,也不要求初學(xué)者掌握單片機(jī)定時(shí)器、中斷等內(nèi)部硬件資源。借助單片機(jī)這個(gè)低門(mén)檻的入門(mén)平臺(tái),類似寓教于樂(lè)的形式,來(lái)來(lái)促進(jìn)學(xué)生學(xué)習(xí)C語(yǔ)言的興趣和培養(yǎng)學(xué)生自學(xué)能力,可以達(dá)到較好的效果。這一點(diǎn)在全國(guó)大部分工科院校的類似于科協(xié)的學(xué)生社團(tuán)得到了很好的印證。
在以往的教學(xué)過(guò)程中,程序編寫(xiě)的規(guī)范性往往是最容易忽略的環(huán)節(jié)。學(xué)生編寫(xiě)的程序只要求實(shí)現(xiàn)功能,對(duì)于可讀性、移植性甚至于測(cè)試性均不作額外要求。盡管編程規(guī)范和習(xí)慣并不屬于教學(xué)大綱所要求的內(nèi)容,但是缺乏良好的編程習(xí)慣,同樣沒(méi)有達(dá)到預(yù)期的教學(xué)目標(biāo)。對(duì)于電子信息專業(yè)的學(xué)生畢業(yè)之后進(jìn)入公司從事編程開(kāi)發(fā)之前,首先接受的往往就是編程規(guī)范的培訓(xùn)。因?yàn)樗麄兘^大部分對(duì)C語(yǔ)言的編程規(guī)范例如縮進(jìn)風(fēng)格、命名規(guī)則、注釋格式等等都一無(wú)所知。國(guó)內(nèi)某些主流教材在這個(gè)方面也起到了不好的示范作用:各章節(jié)示例代碼編寫(xiě)隨意,變量以 a、b、c、m、n、k 命名;函數(shù)以 fun1、fun2 命名,無(wú)法反應(yīng)出變量和函數(shù)本身的功能;函數(shù)無(wú)注釋、程序代碼塊無(wú)縮進(jìn)、程序塊之間無(wú)空行、長(zhǎng)語(yǔ)句無(wú)分行、長(zhǎng)語(yǔ)句無(wú)分行甚至亂分行,根本談不上什么可讀性。然后在引入國(guó)內(nèi)的一些經(jīng)典C語(yǔ)言編程方面的入門(mén)級(jí)編程書(shū)籍中,常常都是單獨(dú)拿出一章詳細(xì)介紹編程風(fēng)格及命名風(fēng)格,這一點(diǎn)值得我們國(guó)內(nèi)的教材編寫(xiě)者學(xué)習(xí)和借鑒。同時(shí)在我們的教學(xué)過(guò)程中,教師自身在做編程示范的時(shí)候,也要嚴(yán)格遵守編程規(guī)范,給學(xué)生做出一個(gè)好的表率。在課堂上,我們可以讓學(xué)生觀摩國(guó)外優(yōu)秀程序員編寫(xiě)的開(kāi)源代碼,讓他們發(fā)現(xiàn)自己與一個(gè)優(yōu)秀的程序員之間的差距;可以推薦國(guó)內(nèi)外著名IT公司的C語(yǔ)言編程規(guī)范和開(kāi)源示例,供有學(xué)習(xí)興趣的學(xué)生進(jìn)一步提高。
C語(yǔ)言自身知識(shí)結(jié)構(gòu)特點(diǎn)、專業(yè)課程體系安排、教師教學(xué)方法以及學(xué)生態(tài)度等多種因素決定了C語(yǔ)言課程教學(xué)效果,需要我們教師給與正確的引導(dǎo)。本文針對(duì)電子信息類專業(yè)C語(yǔ)言教學(xué)過(guò)程中存在的問(wèn)題進(jìn)行了分析,并結(jié)合了電子專業(yè)特點(diǎn),為培養(yǎng)本專業(yè)學(xué)生學(xué)習(xí)C語(yǔ)言興趣,提高學(xué)生解決實(shí)際問(wèn)題的專業(yè)能力,為電子信息類專業(yè)培養(yǎng)合格人才做出了一些有益的探討。
[1]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)[M].清華大學(xué)出版社,2010.
[2]馬忠梅.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2013.
[3]孫靜.C語(yǔ)言在單片機(jī)開(kāi)發(fā)中的應(yīng)用[J].電子世界,2012(5):24-25.
[4]張蕾.基于項(xiàng)目化教學(xué)的“C語(yǔ)言程序設(shè)計(jì)”課程改革[J].計(jì)算機(jī)教育,2013(2):17-20.