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