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