曹雋 劉旭光 周秀明
摘要:針對(duì)當(dāng)前高職院校教學(xué)實(shí)際和改革要求,通過“教、學(xué)、做”合一,在c語言程序設(shè)計(jì)教學(xué)中設(shè)立“3W1H”項(xiàng)目課程,結(jié)合企業(yè)應(yīng)用單片機(jī)、射頻識(shí)別技術(shù)進(jìn)行科技項(xiàng)目產(chǎn)品開發(fā)和軟件編程的過程,幫助學(xué)生真正認(rèn)識(shí)和掌握c語言程序設(shè)計(jì)的原理、方法和工具,同時(shí)闡述如何運(yùn)用“工學(xué)結(jié)合、項(xiàng)目導(dǎo)向、任務(wù)驅(qū)動(dòng)”做好c語言程序設(shè)計(jì)教學(xué)改革。關(guān)鍵詞:項(xiàng)目;產(chǎn)品;c語言程序設(shè)計(jì)
0 引言
c語言程序設(shè)計(jì)是計(jì)算機(jī)及應(yīng)用電子技術(shù)相關(guān)專業(yè)開設(shè)的一門課程,具有一定的難度。目前比較流行的基于“行動(dòng)導(dǎo)向”的“項(xiàng)目教學(xué)法”“項(xiàng)目驅(qū)動(dòng)+案例教學(xué)”教學(xué)模式是教好和學(xué)好這門課程的有效途徑,但問題的關(guān)鍵是教師如何選用一些符合學(xué)生專業(yè)和企業(yè)實(shí)際的真實(shí)項(xiàng)目,在教學(xué)中真正做到“工學(xué)結(jié)合”。
近年來學(xué)院新進(jìn)青年教師較多,多數(shù)人缺乏實(shí)際工作經(jīng)驗(yàn),只是針對(duì)課程理論知識(shí)按部就班講解,雖然也按照章節(jié)布置一些相應(yīng)的實(shí)訓(xùn)項(xiàng)目,但很少涉及社會(huì)實(shí)踐和企業(yè)應(yīng)用內(nèi)容,久而久之使學(xué)生處于被動(dòng)學(xué)習(xí)狀態(tài),感覺內(nèi)容枯燥,難以激發(fā)學(xué)習(xí)興趣,不利于培養(yǎng)學(xué)生的職業(yè)能力和創(chuàng)新精神。在項(xiàng)目產(chǎn)品c程序設(shè)計(jì)教學(xué)中,筆者根據(jù)多年的教學(xué)與科研實(shí)踐經(jīng)歷,采用科技攻關(guān)項(xiàng)目案例,如針對(duì)林業(yè)企業(yè)木材生產(chǎn)、經(jīng)銷環(huán)節(jié)中應(yīng)用的專用計(jì)算器的軟件設(shè)計(jì),進(jìn)行c語言程序設(shè)計(jì)的項(xiàng)目案例教學(xué)示范,旨在指導(dǎo)青年教師做好高職c語言項(xiàng)目課程開發(fā),通過豐富教師自身的社會(huì)實(shí)踐,提高學(xué)生解決各種實(shí)際問題的意識(shí)和培養(yǎng)學(xué)生應(yīng)用C語言進(jìn)行編程的能力,從而提高青年教師和高職學(xué)生的創(chuàng)新意識(shí)與實(shí)踐能力。
1 讓學(xué)生了解課程的目的是什么——What(做什么)
在課程伊始,首先向?qū)W生交代清楚C語言是什么?學(xué)習(xí)C語言程序設(shè)計(jì)有什么實(shí)際作用?由此引入C語言是目前常見的高級(jí)編程語言基礎(chǔ)。通過學(xué)習(xí)C語言的發(fā)展和演化,學(xué)生了解到C是一種面向過程編程的語言,c++是一種面向?qū)ο蟮恼Z言,C#融合Java又對(duì)c++進(jìn)行簡化。由于C語言在可讀性和可移植性上比匯編語言有優(yōu)勢(shì),因此許多應(yīng)用項(xiàng)目、電子產(chǎn)品的應(yīng)用軟件多源于c語言程序設(shè)計(jì),使得C/C++語言編程已成為高級(jí)語言程序設(shè)計(jì)教學(xué)、單片機(jī)嵌入式編程發(fā)展的方向和潮流。其次,讓學(xué)生了解如何針對(duì)社會(huì)需求和企業(yè)生產(chǎn)實(shí)際,運(yùn)用C語言開發(fā)項(xiàng)目產(chǎn)品。項(xiàng)目是指以生產(chǎn)一件具有實(shí)際應(yīng)用價(jià)值的具體產(chǎn)品為目的的任務(wù)。課堂以“原木經(jīng)銷專用計(jì)算器的研究”項(xiàng)目產(chǎn)品的軟件系統(tǒng)開發(fā)為例,通過具體介紹從用戶需求調(diào)查、產(chǎn)品立項(xiàng)到軟件開發(fā)、產(chǎn)品應(yīng)用的整個(gè)過程案例,說明c語言程序設(shè)計(jì)在項(xiàng)目產(chǎn)品軟件開發(fā)中的實(shí)際作用,幫助學(xué)生真正理解c語言程序設(shè)計(jì)課程的學(xué)習(xí)目的,以調(diào)動(dòng)學(xué)習(xí)積極性。
黑龍江生態(tài)工程職業(yè)學(xué)院過去曾是培養(yǎng)森工林區(qū)管理干部和專業(yè)技術(shù)人才的成人高校,建校時(shí)間長,具有林業(yè)行業(yè)背景,因此目前相當(dāng)一部分在校學(xué)生來源于森工林區(qū),對(duì)于林業(yè)企業(yè)木材生產(chǎn)、經(jīng)銷等有所耳聞。在原木生產(chǎn)、繳庫、銷售中,檢尺是木材生產(chǎn)經(jīng)營中的重要環(huán)節(jié),其準(zhǔn)確性對(duì)木材生產(chǎn)中各環(huán)節(jié)的銜接、管理及企業(yè)經(jīng)濟(jì)效益都有重大影響。為改變傳統(tǒng)、落后的木材檢尺方式,我們把現(xiàn)代信息技術(shù)應(yīng)用到木材檢尺中,通過開發(fā)原木經(jīng)銷計(jì)算器可離線存放每根木材的全部信息,包括生產(chǎn)林班、材種、材積、等級(jí)、采伐日期等10余項(xiàng)內(nèi)容,再通過接口傳輸?shù)接?jì)算機(jī)中,在檢尺、繳庫、銷售環(huán)節(jié)通過計(jì)算機(jī)聯(lián)網(wǎng)在線操作將每根木材的信息錄入信息中心服務(wù)器,實(shí)現(xiàn)木材檢尺現(xiàn)代化、精準(zhǔn)化、數(shù)字化,達(dá)到有效控制木材檢尺環(huán)節(jié)中所造成的效益流失,可降低生產(chǎn)成本,提升企業(yè)競爭力。
專用計(jì)算器項(xiàng)目是為了解決林業(yè)企業(yè)木材生產(chǎn)和銷售檢尺中的實(shí)際問題而提出,最初軟件解決方案為匯編語言。據(jù)此可對(duì)學(xué)生設(shè)問:現(xiàn)在如何以c語言改造并創(chuàng)新?由此引出C語言源程序的編輯、編譯問題。由于目前高校程序設(shè)計(jì)教學(xué)中一般選擇運(yùn)行于DOS環(huán)境下的Turbo c2.0作為初學(xué)c語言的首選編譯器,往往使學(xué)生對(duì)其產(chǎn)生“過時(shí)”的錯(cuò)覺,認(rèn)為現(xiàn)在計(jì)算機(jī)操作系統(tǒng)早已進(jìn)入“視窗”時(shí)代,Turbo c教學(xué)軟件檔次太低。這時(shí)教師首先要向?qū)W生說明,Turbo C是經(jīng)典的程序設(shè)計(jì)軟件之一,由于它對(duì)運(yùn)行環(huán)境要求較低,早期的PC均可滿足Turbo c要求,繼續(xù)保留和沿用Turbo c 2.0作為c語言通用模塊的選修課程教學(xué)內(nèi)容和實(shí)訓(xùn)環(huán)境仍然必要。
鑒于目前全國計(jì)算機(jī)等級(jí)考試(NCRE)二級(jí)c語言考試已改為VC++6.0這一環(huán)境,我們可以將VC++6.0作為計(jì)算機(jī)軟件及應(yīng)用電子技術(shù)兩個(gè)專業(yè)的必修課程,讓這兩個(gè)專業(yè)的學(xué)生可以通過“學(xué)c語言考二級(jí)”引導(dǎo)“課證結(jié)合”,調(diào)動(dòng)學(xué)習(xí)c語言程序設(shè)計(jì)的積極性,在學(xué)校學(xué)習(xí)期間就有一種就業(yè)意識(shí),學(xué)好理論知識(shí)并掌握實(shí)踐技能,以適應(yīng)未來人才市場的選擇,為企業(yè)技術(shù)創(chuàng)新儲(chǔ)備能力。對(duì)于相關(guān)專業(yè)學(xué)生需要強(qiáng)調(diào)的是,針對(duì)Turbo c、VC++6.0環(huán)境中c語言程序編譯后在電腦磁盤上保留的“主文件”名稱相同但擴(kuò)展名不同的4個(gè)文件(.c,.BAK,.OBJ,.EXE),除了要知道c語言程序編譯后可在PC操作系統(tǒng)下運(yùn)行.EXE文件外,還需要了解單片機(jī)c語言的“軟件固化”過程,即在開發(fā)環(huán)境下通過編程器使.OBJ被“燒錄”到單片機(jī)的EPROM中進(jìn)行固化,令產(chǎn)品具有所謂的“智能”,這也是基于項(xiàng)目的c語言課程設(shè)計(jì)的最終歸宿。
2 讓學(xué)生學(xué)會(huì)如何進(jìn)行軟件功能分析——How(怎么做)
這一項(xiàng)即如何通過產(chǎn)品功能分析確定軟件模塊。c語言程序設(shè)計(jì)課程的傳統(tǒng)教學(xué)模式是以語言的語法系統(tǒng)為主線,以小型練習(xí)為訓(xùn)練手段,只對(duì)一兩個(gè)語法要點(diǎn)進(jìn)行有針對(duì)性的練習(xí),與企業(yè)應(yīng)用項(xiàng)目聯(lián)系較少。在c語言程序設(shè)計(jì)課程介紹到結(jié)構(gòu)化程序設(shè)計(jì)方法時(shí),教師可通過講解圖1所示項(xiàng)目產(chǎn)品的“輕觸式薄膜按鍵”操作面板功能,繪制出圖2所示的軟件系統(tǒng)結(jié)構(gòu)流程圖,讓學(xué)生學(xué)會(huì)應(yīng)用流程圖工具分析產(chǎn)品功能,引導(dǎo)他們對(duì)軟件系統(tǒng)進(jìn)行模塊化設(shè)計(jì),進(jìn)而掌握從產(chǎn)品的操作面板功能設(shè)計(jì)到軟件系統(tǒng)模塊設(shè)計(jì)的普遍方法,培養(yǎng)系統(tǒng)分析與設(shè)計(jì)能力。
3 讓學(xué)生學(xué)會(huì)如何按照軟件模塊分工——Who(誰來做)endprint
這一項(xiàng)即如何按照軟件模塊進(jìn)行算法流程設(shè)計(jì)。c語言是一種結(jié)構(gòu)化語言,重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。教師可在課程伊始,系統(tǒng)講述c語言的各種數(shù)據(jù)類型和輸入輸出格式,這需要花費(fèi)大量時(shí)間,但又沒有足夠多的例子印證這些內(nèi)容的重要性。許多學(xué)生就是在這個(gè)階段失去學(xué)習(xí)的耐心和興趣,造成后續(xù)學(xué)習(xí)的困難。尤其對(duì)于算法,許多學(xué)生感覺枯燥無味。這時(shí)我們可以考慮通過項(xiàng)目讓學(xué)生學(xué)會(huì)針對(duì)軟件模塊進(jìn)行小組分工,按照系統(tǒng)模塊設(shè)計(jì)流程做好子模塊算法設(shè)計(jì),培養(yǎng)團(tuán)隊(duì)協(xié)作意識(shí)。
由圖2可見,產(chǎn)品的軟件系統(tǒng)采用模塊化結(jié)構(gòu)程序設(shè)計(jì),第一模塊“數(shù)值計(jì)算”功能是模擬常見的數(shù)字計(jì)算器,用于解決通用的四則運(yùn)算,可以作為一個(gè)獨(dú)立的子模塊由專人負(fù)責(zé)模塊細(xì)化,挑選一組對(duì)計(jì)算器功能及操作比較熟悉的學(xué)生按照加、減、乘、除子函數(shù)設(shè)計(jì)進(jìn)行分工,逐步合并后再用主函數(shù)調(diào)用子函數(shù)完成該子模塊設(shè)計(jì)。第二模塊“查材積表”功能主要用于林業(yè)企業(yè)木材生產(chǎn)中的原木材積計(jì)算,可挑選一組來自林區(qū)對(duì)木材生產(chǎn)和銷售比較了解的學(xué)生,在“查材積表”模塊的程序設(shè)計(jì)中采用“選擇型”算法,通過輸入原木材長和徑級(jí)計(jì)算原木的材積,完成相應(yīng)模塊的子函數(shù)設(shè)計(jì)。依據(jù)現(xiàn)行的國家標(biāo)準(zhǔn)GB48 14—84,原木材積統(tǒng)計(jì)算法公式分以下兩種情況。
(1)檢尺徑自4-12cm的小徑原木材積。
V=0.785 4L(D+0.45L+0.2)2÷10000
(2)檢尺徑自14cm以上的原木材積。
V=0.7854L[D+0.5L+0.005L2+0.000125L
(14-L)2(D-10)]2÷10000
公式中:V——材積(m3);
L——檢尺長(m);
D——檢尺徑(cm)。
據(jù)此計(jì)算公式,可以繪制出圖3所示的“查材積表”模塊算法流程圖。
對(duì)于c語言選擇程序設(shè)計(jì)教學(xué)內(nèi)容,這是一個(gè)很好的“模塊化”算法設(shè)計(jì)案例,可以讓學(xué)生學(xué)會(huì)按照“模塊分解”進(jìn)行項(xiàng)目分工協(xié)作,掌握“逐步求精”的程序設(shè)計(jì)方法。2005年初,項(xiàng)目組成員作為任課教師曾在黑龍江生態(tài)工程職業(yè)學(xué)院帶嶺分院計(jì)算機(jī)應(yīng)用成人大專班的c語言程序設(shè)計(jì)課程中運(yùn)用此案例。由于多數(shù)學(xué)生來自林業(yè)生產(chǎn)一線,因此學(xué)生容易理解,接受理論較快,實(shí)踐效果也較好。此外,在講解上述教學(xué)內(nèi)容時(shí),教師還向?qū)W生介紹了一些林業(yè)生產(chǎn)管理知識(shí),突出黑龍江生態(tài)工程職業(yè)學(xué)院的行業(yè)特色。
這種采用項(xiàng)目案例結(jié)合企業(yè)生產(chǎn)實(shí)際進(jìn)行教學(xué)的方法,不僅符合林業(yè)成人職業(yè)教育規(guī)律,還符合高職院校培養(yǎng)高技能應(yīng)用型人才目標(biāo)的實(shí)際,有利于激發(fā)學(xué)生對(duì)c語言程序設(shè)計(jì)的學(xué)習(xí)興趣。2007年末,項(xiàng)目組成員作為評(píng)委在黑龍江生態(tài)工程職業(yè)學(xué)院舉辦的“青年教師基本功大賽”中,對(duì)部分計(jì)算機(jī)技術(shù)系青年教師主講的“c語言選擇程序算法設(shè)計(jì)”課程進(jìn)行講評(píng),建議教師盡量采用企業(yè)生產(chǎn)中的一些應(yīng)用實(shí)例,對(duì)提高青年教師實(shí)踐能力、帶動(dòng)和提升學(xué)生的職業(yè)能力起到一定的指導(dǎo)作用。
4 讓學(xué)生學(xué)會(huì)如何選擇軟件開發(fā)工具——Where(在哪兒做)
這一項(xiàng)即如何根據(jù)實(shí)際條件合理選擇軟件操作環(huán)境和開發(fā)工具。目前多數(shù)高職院校比較重視在多媒體教室PC上進(jìn)行程序設(shè)計(jì)教學(xué)訓(xùn)練,但是較少能夠做到在實(shí)驗(yàn)室進(jìn)行軟件產(chǎn)品模擬仿真,更不用說結(jié)合相應(yīng)電子產(chǎn)品進(jìn)行底層編程,因此應(yīng)該向青年教師和學(xué)生指出c語言程序設(shè)計(jì)在學(xué)好理論、掌握方法、運(yùn)用工具3個(gè)方面是有連貫性的。企業(yè)在運(yùn)用IT工具方面往往領(lǐng)先一步,使科技真正發(fā)揮“第一生產(chǎn)力”的作用,因此軟件開發(fā)工具首先要看IT企業(yè)選擇什么,這也是“工學(xué)結(jié)合”的基本要求。
許多學(xué)生在“工學(xué)結(jié)合”實(shí)習(xí)過程中,看到IT企業(yè)應(yīng)用Microsoft Visual c++軟件開發(fā)環(huán)境,誤以為Vc++是一種語言,從而產(chǎn)生一種錯(cuò)覺。項(xiàng)目課程通過介紹“計(jì)算機(jī)及圖像識(shí)別技術(shù)在原木檢尺中的應(yīng)用研究項(xiàng)目”案例,可將師生引入VC++這一具有較強(qiáng)圖形函數(shù)功能、可視化的C++語言開發(fā)環(huán)境。VC++包含在Visual Studio 6.0集成開發(fā)環(huán)境中(還有VB等),作為一個(gè)集成開發(fā)工具,它不是一種語言,是基于c++的一個(gè)開發(fā)平臺(tái)。與Vc++類似的c++程序開發(fā)工具還有Borland公司推出的c++Builder等。c語言有標(biāo)準(zhǔn)的函數(shù)庫,它們是松散的,只是把功能相同的函數(shù)放在一個(gè)頭文件(h)中;而vc++大多數(shù)的函數(shù)都是集成的,特別是vc++中的圖形處理,它和c語言的圖形函數(shù)有很大區(qū)別,c語言中的圖形處理函數(shù)基本上不能用于vc++中。此外,VC++還可以寫基于DOS的程序以及DLL等。
在明確了系統(tǒng)模塊分工、算法流程之后,學(xué)生便可以運(yùn)用軟件工具進(jìn)行c語言具體語句的程序編寫和編譯,實(shí)現(xiàn)相應(yīng)的模塊功能,如通過運(yùn)用if和switch語句實(shí)現(xiàn)兩向選擇模塊(如圖3所示)和多向選擇結(jié)構(gòu)(如圖2所示)程序設(shè)計(jì),真正進(jìn)行實(shí)戰(zhàn)練習(xí),完成相應(yīng)模塊的程序編寫和代碼編譯。在編寫中需要注意的是c++除了能夠使用c語言的所有標(biāo)準(zhǔn)函數(shù)外,還有自己的另“類”,如在C語言中,輸入輸出使用scanf()和primf()函數(shù)實(shí)現(xiàn),而在c++中使用cin,cout等對(duì)象實(shí)現(xiàn),即在c++中也可以不使用c的固有函數(shù)而只使用c++的類。教師要通過一些簡單的說明,講清C/C++語言的聯(lián)系與區(qū)別,指導(dǎo)學(xué)生看懂c++程序,提高他們對(duì)IT企業(yè)運(yùn)用c++開發(fā)軟件的實(shí)習(xí)環(huán)境的適應(yīng)能力。
對(duì)于側(cè)重學(xué)習(xí)單片機(jī)c語言的學(xué)生,可以給他們提出一些未來發(fā)展方向,如可以參加IBM的c++國際認(rèn)證培訓(xùn),提高就業(yè)競爭力。這些學(xué)生在學(xué)習(xí)時(shí)可能會(huì)感覺有較大難度,因?yàn)橐灰芯幊唐?、仿真器,二要學(xué)習(xí)編程語言,還有眾多種類的單片機(jī)需要選擇,這就要求教師掌握好C語言程序設(shè)計(jì)方法和開發(fā)工具的運(yùn)用,對(duì)外首先做到“工學(xué)結(jié)合”,對(duì)內(nèi)做好實(shí)驗(yàn)室建設(shè),這樣才能較好地指導(dǎo)學(xué)生進(jìn)行實(shí)踐。項(xiàng)目組成員通過參與科技攻關(guān)項(xiàng)目的產(chǎn)品研發(fā),熟悉和掌握了單片機(jī)c++程序開發(fā)環(huán)境及C51編程器應(yīng)用等開發(fā)工具,如開發(fā)原木經(jīng)銷專用計(jì)算器是采用AT89C51單片機(jī),通過PC的RS232接口連接EMP100編程器,在UCDOS下運(yùn)行批處理程序,可較快完成C++程序編輯、編譯和目標(biāo)文件“燒寫”。目前,c++應(yīng)用程序開發(fā)一般采用可在Windows下運(yùn)行的KEIL51軟件,即在一個(gè)集成環(huán)境下進(jìn)行c++程序編輯、編譯仿真,再燒寫固化、上電運(yùn)行。
5 結(jié)語
一般的C語言課程大致是按照“數(shù)據(jù)類型一基本結(jié)構(gòu)一數(shù)組一函數(shù)一指針一文件”的順序組織教學(xué)?;陧?xiàng)目產(chǎn)品的c語言程序設(shè)計(jì)課程教學(xué)有時(shí)會(huì)打破常規(guī),提倡用什么講什么、精講多練,突出基本知識(shí)與技能,著重應(yīng)用能力的培養(yǎng)。我們要發(fā)揮院校和企業(yè)各自優(yōu)勢(shì),通過企業(yè)項(xiàng)目產(chǎn)品開發(fā)應(yīng)用課程,結(jié)合“功能分析、算法設(shè)計(jì)與開發(fā)工具”3個(gè)情境設(shè)計(jì),介紹在c語言程序設(shè)計(jì)課程教學(xué)方面的體會(huì),通過“項(xiàng)目產(chǎn)品”引導(dǎo)青年教師在教學(xué)改革中做到“理論與實(shí)踐”一體化,通過“校企合作”搞好“工學(xué)結(jié)合”實(shí)習(xí)實(shí)訓(xùn)基地建設(shè),有效促進(jìn)“產(chǎn)學(xué)研”的結(jié)合,在課程教學(xué)中不斷改進(jìn)教學(xué)內(nèi)容。一是在現(xiàn)行IT產(chǎn)品開發(fā)環(huán)境以及閑置的早期PC設(shè)備中,針對(duì)不同類型項(xiàng)目產(chǎn)品設(shè)定c語言課程實(shí)習(xí)任務(wù),強(qiáng)化基于真實(shí)產(chǎn)品的編程訓(xùn)練,在為社會(huì)提供高技能應(yīng)用型人才的同時(shí),發(fā)揮院校為社會(huì)服務(wù)的職能,同時(shí)參與企業(yè)軟件產(chǎn)品開發(fā),提升教師的科技創(chuàng)新意識(shí)和軟件開發(fā)能力;二是要結(jié)合國家職業(yè)標(biāo)準(zhǔn)考核必備的知識(shí)與技能,培養(yǎng)相關(guān)專業(yè)學(xué)生的軟件編程技能,幫助其獲得相應(yīng)的職業(yè)資格證書和提升未來步入IT企業(yè)的職業(yè)能力。
(編輯:宋文婷)endprint