徐進(jìn)強
(威海職業(yè)學(xué)院,山東 威海 264210)
基于Arduino的C語言課程教學(xué)改革的探討
徐進(jìn)強
(威海職業(yè)學(xué)院,山東 威海 264210)
本文論述了目前高職C語言課程教學(xué)存在的主要問題,針對C語言教學(xué)現(xiàn)狀,嘗試在教學(xué)過程中結(jié)合所教專業(yè)的實際應(yīng)用引入Arduino項目平臺。實踐證明,基于Arduino平臺的C語言教學(xué),可以做到理論聯(lián)系實際,貼近具體專業(yè)的應(yīng)用,大大激發(fā)學(xué)生的學(xué)習(xí)興趣和積極性。
C語言;Arduino平臺;教學(xué)改革
C語言功能強大,編程靈活,表達(dá)能力強,是程序設(shè)計中的重要工具之一。隨著軟件編程技術(shù)在各行各業(yè)的應(yīng)用越來越廣泛,C語言課程已成為高職理工類專業(yè)普遍開設(shè)的一門基礎(chǔ)課程。應(yīng)用電子技術(shù)、物聯(lián)網(wǎng)、通信及機械類等眾多專業(yè)均安排了課時不等的C語言教學(xué)內(nèi)容。但在長期的教學(xué)實踐中發(fā)現(xiàn),C語言是一門難教難學(xué)的科目,特別在高職院校中的教學(xué)效果并不理想。C語言課程的教學(xué)內(nèi)容、教學(xué)模式與方法亟需改革。
(一)高職學(xué)生基礎(chǔ)薄弱,學(xué)習(xí)積極性不高。
高職院校生源種類多,參差不齊。有些來自春季高考,有些是夏季高考,有些是單獨招生,還有些是來自中職合作院校。總的來說,大部分學(xué)生的文化課基礎(chǔ)普遍較差,數(shù)學(xué)邏輯思維和英語基礎(chǔ)特別薄弱,而這些方面恰恰是軟件編程人員應(yīng)具備的重要專業(yè)素質(zhì)。另外,高職學(xué)生多數(shù)缺乏堅持不懈、積極思考的精神。面對困難,特別是面對滿屏幕的英文程序代碼,如果教師不積極引導(dǎo),不充分激發(fā)學(xué)生的學(xué)習(xí)興趣,容易造成知難而退的局面。
(二)教材沿用傳統(tǒng)本科模式,教學(xué)內(nèi)容脫離實際應(yīng)用。
傳統(tǒng)的C語言程序設(shè)計教材主要圍繞語言自身的語法展開,教材的體系結(jié)構(gòu)、內(nèi)容安排和例題習(xí)題配置上,過于數(shù)學(xué)化,理解起來有一定難度。傳統(tǒng)教材普遍采用單向灌輸?shù)姆绞剑雎粤伺c學(xué)生的溝通與交流,忽略了給予學(xué)生自主學(xué)習(xí)與探究的機會,忽視了對學(xué)生創(chuàng)新能力和綜合素質(zhì)的培養(yǎng)。即便是所謂的立體化教材建設(shè),也無非強化了多媒體技術(shù)應(yīng)用,擴充了網(wǎng)絡(luò)資源,在形式上顯得豐富多彩,仍然存在諸多缺憾。
(三)教師能力欠缺,知識面與專業(yè)面不夠?qū)掗煛?/p>
教師在教學(xué)過程中,由于知識面和專業(yè)面的限制,一味的重視理論知識的講解,局限在C語言本身,脫離本專業(yè)的應(yīng)用,使得課程學(xué)習(xí)抽象而晦澀,學(xué)生缺乏貼合自身專業(yè)的實際操作的經(jīng)歷。高職院校的師資應(yīng)該是多面手,能夠執(zhí)教本專業(yè)的多門課程,熟悉相近專業(yè)的核心技術(shù),了解相關(guān)專業(yè)的技術(shù)發(fā)展,能夠跟隨時代潮流,將新技術(shù)、新方法、新平臺運用到傳統(tǒng)課程教學(xué)中。
(一)Arduino平臺簡介。
Arduino是一個可以用于C語言課程教學(xué)的效果很好的項目平臺。它源自國際上一個開放源代碼的硬件平臺,包括一塊具備簡單I/O功能的電路板以及一套程序開發(fā)環(huán)境軟件。Arduino可以用來開發(fā)交互產(chǎn)品,比如它可以讀取大量的開關(guān)和傳感器信號,并且可以控制電燈、電機和其他各式各樣的物理設(shè)備;Arduino也可以開發(fā)出與PC相連的周邊裝置,能在運行時與PC上的軟件進(jìn)行通信。
Arduino設(shè)計之初的目的是希望讓人們能夠很快地學(xué)習(xí)電子和傳感器的基礎(chǔ)知識,并應(yīng)用到他們的設(shè)計當(dāng)中。設(shè)計中所要表現(xiàn)的想法和創(chuàng)意才是最主要的,至于核心控制器如何工作,硬件的電路是如何構(gòu)成的,用戶并不需要考慮。Arduino的出現(xiàn),大大降低了互動設(shè)計的門檻,沒有學(xué)過電子知識的人也能夠使用它制作出各種創(chuàng)意的作品,如巡線機器人、超聲波倒車?yán)走_(dá)、門禁控制系統(tǒng)等。由于大多數(shù)理工類專業(yè)的學(xué)生都具備一些物理、電工電子、計算機等方面的基礎(chǔ)知識,使得Arduino平臺能夠在各專業(yè)教學(xué)中得到廣泛接受。
(二)Arduino編程語言。
Arduino語言是建立在C/C++基礎(chǔ)上的,其實也就是基礎(chǔ)的C語言,Arduino語言只不過把相關(guān)的一些參數(shù)設(shè)置都函數(shù)化,用戶不必去了解其底層,即便是不了解單片機(微控制器)的學(xué)生也能輕松上手。
實際工作當(dāng)中所用到的很多應(yīng)用編程軟件都是以C/C++為基礎(chǔ),進(jìn)行了一定的改進(jìn)和優(yōu)化。因此作為學(xué)校教師,教學(xué)過程中不必拘泥于標(biāo)準(zhǔn)C、經(jīng)典C的框架束縛,當(dāng)然在教學(xué)當(dāng)中,提示學(xué)生注意各類編程工具有些許差別還是有必要的。
在Arduino中,主函數(shù)main在內(nèi)部已經(jīng)定義,使用者只需要完成和loop()函數(shù)就能完成Arduino程序的編寫,這兩個函數(shù)分別負(fù)責(zé)Arduino程序的初始化部分和執(zhí)行部分。setup()函數(shù)主要用于設(shè)置一些引腳的輸出/輸入模式、初始化串口等,該函數(shù)只在上電或重啟時執(zhí)行一次;loop()函數(shù)用于執(zhí)行程序,它是一個死循環(huán),其中的代碼將被循環(huán)執(zhí)行,用于完成程序的功能,如讀入引腳狀態(tài)、設(shè)置引腳狀態(tài)等。
(三)教學(xué)方法。
C語言教學(xué),特別是針對高職學(xué)生,應(yīng)偏重編程思想與邏輯思維的訓(xùn)練,強化各類函數(shù)的靈活調(diào)用,以與本專業(yè)相關(guān)的實際應(yīng)用項目為導(dǎo)向,施以具體任務(wù)為驅(qū)動,通過大量生動有趣的編程訓(xùn)練解決實際問題,提升學(xué)生的技能水平和應(yīng)用能力。
Arduino開發(fā)環(huán)境下提供了大量的基礎(chǔ)函數(shù)和擴展函數(shù),這些函數(shù)涉及I/O控制、時間函數(shù)、數(shù)學(xué)函數(shù)、三角函數(shù)等,使用者可以很方便地對板上的硬件資源進(jìn)行控制。同時,在Arduino開發(fā)環(huán)境下還提供了豐富的示例程序來使用這些函數(shù)。教師可以基于Arduino平臺當(dāng)堂演示各種程序的運行效果,講解示例程序的編寫架構(gòu)和技巧,鼓勵學(xué)生參照示例程序進(jìn)行改造,實現(xiàn)其他自定義的控制功能。
C語言教學(xué)內(nèi)容無非主要包括C語言的標(biāo)識符與關(guān)鍵字、三大程序結(jié)構(gòu)(順序、分支與循環(huán))、函數(shù)、數(shù)組、指針、結(jié)構(gòu)體等。在傳統(tǒng)的教學(xué)模式下,這些內(nèi)容需要按部就班的學(xué)習(xí)。在Arduino平臺下不必拘泥于以上教學(xué)順序,可以將內(nèi)容打碎,糅合在項目和任務(wù)中教授,在課程最后再形成完整的知識體系。
引入Arduino平臺教學(xué)模式,并不意味著徹底擯棄傳統(tǒng)的C語言教學(xué)模式。相反,如果教師認(rèn)為某些知識點難以在Arduino平臺的教學(xué)項目中講述,仍可以沿用以往的講授方式,比如結(jié)構(gòu)體,文件操作等。二者并不矛盾,應(yīng)該是相互補充的關(guān)系。究竟哪種教學(xué)模式占主導(dǎo)地位,筆者認(rèn)為與所教專業(yè)有很大關(guān)系。建議計算機與軟件開發(fā)類專業(yè)將Arduino平臺作為期末的集中實訓(xùn)平臺,占次要地位,而其它專業(yè)可以將其作為主要學(xué)習(xí)平臺,充分發(fā)揮它的專業(yè)結(jié)合能力。
(四)教學(xué)項目。
Arduino平臺下可以完成的項目非常之多,如LED彩燈控制,電機驅(qū)動,LCD顯示,機器人運動,RFID讀卡器,無線模塊應(yīng)用等。不同專業(yè)可以選取2、3個合適的項目學(xué)習(xí)。如物聯(lián)網(wǎng)專業(yè)可以選擇RFID應(yīng)用、各類傳感器的應(yīng)用;機電類專業(yè)選擇電機驅(qū)動、機器人項目;通信專業(yè)選擇無線模塊的應(yīng)用,如藍(lán)牙技術(shù)等;計算機與軟件類專業(yè)可以選擇LCD和矩陣按鍵相關(guān)的編程項目,如小型計算器的編程應(yīng)用等。
可能有教師會有所顧忌,擔(dān)心以上編程項目涉及到比較深的專業(yè)知識,大一的學(xué)生會難以接受。但由于Arduino平臺已經(jīng)將涉及的硬件控制程序模塊化,用戶只需調(diào)用庫函數(shù)即可。教師只需告訴學(xué)生相關(guān)庫函數(shù)的用途,簡單講解硬件系統(tǒng)的原理。實踐證明,大一學(xué)生完全可以接受并理解,使得該專業(yè)的初學(xué)者在不太懂硬件技術(shù)的前提下也能夠?qū)τ布M(jìn)行控制,從而實現(xiàn)看似很專業(yè)的功能。對專業(yè)學(xué)習(xí)非常感興趣的學(xué)生,在Arduino平臺的引導(dǎo)下,甚至能夠在課下提前自學(xué)很多專業(yè)課程,激發(fā)自主學(xué)習(xí)積極性。
雖然學(xué)生不必花很多時間研究Arduino平臺硬件,但對于教師來說,要想充分發(fā)揮平臺的教學(xué)功能,解答學(xué)生練習(xí)中可能遇到的各種軟硬件的問題,教師必須熟練掌握Arduino平臺及涉及到的與本專業(yè)相關(guān)的技術(shù)。例如,對于物聯(lián)網(wǎng)專業(yè)的C語言教師,不僅要求具備扎實的C語言編程技能,還應(yīng)熟悉RFID技術(shù)、傳感器技術(shù)等,能夠基于Arduino平臺把這些深奧的技術(shù)簡化,引導(dǎo)學(xué)生在僅僅了解專業(yè)技術(shù)的基礎(chǔ)上就能夠編寫要求的C語言程序代碼。
由于以上項目都是實實在在的技術(shù)應(yīng)用,與本專業(yè)應(yīng)用結(jié)合緊密,項目任務(wù)本身活潑有趣,如LED跑馬燈項目,機器人行走項目,大大激發(fā)了學(xué)生的學(xué)習(xí)熱情和積極性。傳統(tǒng)的C語言教學(xué)過程自始至終都是面對電腦編寫程序,程序運行結(jié)果索然無味,無非是屏幕打印些簡單圖形,輸出運算結(jié)果,很難吸引年輕學(xué)生的注意力。兩種教學(xué)方式相比較,孰優(yōu)孰劣,一目了然。
教學(xué)實踐證明,高職C語言課程教學(xué)不能再走千篇一律式的傳統(tǒng)教學(xué)模式,引入Arduino平臺,是一種很好的教學(xué)改革的模式。各專業(yè)任教教師應(yīng)針對不同專業(yè),以“必需夠用”為原則,依托Arduino平臺,選擇貼近本專業(yè)實際應(yīng)用的教學(xué)案例,重構(gòu)教學(xué)體系,激發(fā)學(xué)生的學(xué)習(xí)興趣和積極性。
[1]程晨.Arduino開發(fā)實戰(zhàn)指南[M].北京:機械工業(yè)出版社,2012.
[2][美]Michael McRobers.Arduino從基礎(chǔ)到實踐[M]. 北京:電子工業(yè)出版社,2013.
[3]劉永平,郭小波.C語言教學(xué)改革探討[J].時代教育, 2016,(11):253-255.
G718
A
1671-864X(2016)09-0166-02
徐進(jìn)強(1974—),男,山東青島人,碩士,副教授,專業(yè)帶頭人,主要研究方向為高職教育,嵌入式技術(shù)開發(fā)。