前言:想要寫出一篇引人入勝的文章?我們特意為您整理了非計算機專業Qt程序設計教學探索范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:針對高校非計算機專業C/C++教學的不足,分析開設qt程序設計課程的重要意義,提出以實驗為基礎、以項目為導向的Qt程序設計課程教學方案,結合西安交通大學的實踐說明Qt程序設計課程的教學效果。
關鍵詞:非計算機專業;Qt程序設計課程;案例教學;大作業
0引言
目前,在高校面向非計算機專業的程序設計入門課程中,相當一部分學校講授C/C++語言。由于C/C++語言標準中不包括圖形界面等高級編程內容,導致學生學習了該課程之后,僅能編寫控制臺窗口的命令行程序。這在很大程度上限制了學生利用C/C++編程解決問題的能力。Qt是基于C++的跨平臺開發框架,更確切地說,Qt是一個龐大的C++類庫。它出現于20世紀90年代,最初主要用于圖形界面開發。經過多年發展,Qt已經成為幾乎全能的開發框架,除了圖形界面開發,在數據庫、網絡、多媒體、嵌入式軟件開發等方面也常常見到Qt的身影。近年來,隨著嵌入式技術的廣泛應用,Qt作為Linux和嵌入式開發的重要工具受到了前所未有的關注。Qt框架設計優雅、功能強大、易于學習和使用,還兼容Windows、Linux、Mac等主流操作系統,這些優點使它成為C++語言后續課程的理想教學內容。目前各高校在Qt教學方面所做的工作并不多。文獻[1]提出將多維互動模式用于Qt教學;文獻[2]提出在Qt教學中使用項目分解與整合的策略;文獻[3]提出在面向嵌入式開發的Qt教學中采用邊講邊練的教學模式。西安交通大學的Qt教學強化實驗教學,引入課程大作業以提升學生的實踐能力,實行多元化考核,進一步保證教學效果。
1開設Qt程序設計課程的意義
對非計算機專業的學生而言,在學習了C/C++語言基礎之后,進一步學習一些Qt程序設計的知識,可以補充編程語言學習的短板,理解消息機制和事件處理的概念,并深刻體會面向對象編程方法的強大。
1.1補足C/C++語言教學短板
人們將圖形界面和圖形圖像兩方面的編程技術統稱圖形化編程。在C#、VB.NET、Java等語言中,圖形化編程都是重要組成部分,而C/C++語言標準中卻不包含這部分內容,不能不說是一種遺憾。開展Qt編程教學恰好可補充這方面的不足。事實上,Qt最強大、最完善的模塊就是圖形化編程模塊,使用Qt開發界面的重要軟件包括KDE(Linux窗體系統)、Maya(三維動畫)、WPS(辦公套件)、Skype(即時通訊)等。
1.2理解窗體編程重要概念
窗口系統及窗體應用軟件的運行依賴于消息機制和事件處理,這個概念在基礎C/C++教學中無法涉及。Qt系統有完善的事件處理機制,還有其專有的信號/槽通信機制,通過學習這些內容,可以很好地理解窗口系統的運行原理,進而理解消息循環在操作系統中的重要作用。
1.3深刻體會面向對象方法的作用
圖形界面編程是C++最成功的領域之一,而Qt的圖形界面類庫更是這方面的優秀代表。學習Qt的圖形化編程,了解各種控件類的繼承關系及其成員函數的實現和重載,可以讓學生深刻理解封裝、繼承、多態等面向對象的概念,體會面向對象編程方法帶來的巨大便利。
2優化Qt程序設計課程教學方案
Qt課程講授C++的高級編程技術,一般要求學生有一定的C++語言基礎。如果學生有較好的C語言基礎,那么可以在后續課程中先用少量課時講解C++語言面向對象的概念,然后再講授Qt編程的內容。將C++全部的基礎知識和Qt編程技術放到一門課中講授是難以完成的任務,原因是內容過多。西安交通大學的教學方案主要通過優化教學內容、加強實踐訓練、改善考核方法3個方面的改革提升學生開發軟件的能力.
2.1制訂合適的教學內容
Qt編程技術的內容十分廣泛,難以在一門課程中全部講授,因此可將Qt編程技術總體上劃分為兩部分:一部分是核心教學內容,包括圖形界面編程、圖形圖像編程、樣式表應用;另一部分是靈活設置內容,包括算法設計、數據庫、網絡、嵌入式等方面的編程內容。核心教學內容是基礎,是必選的教學內容;而靈活設置內容則是選擇性的模塊,可根據面向對象的不同、專業需求的差異,選擇適當的模塊作為教學內容。在核心教學內容中,建議把圖形界面、圖形圖像編程作為最基礎的內容。掌握了圖形化編程的知識,就具備了開發窗體應用的基本能力,也為學習其他編程技術打下基礎。另外,可以將界面描述式編程工具——Qt樣式表放入核心內容。樣式表是Qt的特色,它通過QSS腳本語言描述窗體組件的顏色、形狀、行為模式等屬性,極大地方便了界面的美化工作。QSS腳本實質上就是CSS腳本功能的子集,學習和使用都相當容易。在靈活設置的教學內容中,建議選擇具有廣泛應用價值的算法設計模塊。算法當中比較簡單的查找、排序、遞推等這類內容在學習基礎語言的時候就講解過,因此可以補充數據結構相關算法。從實用角度出發,對于這些非計算機專業的學生,沒有必要深入講解數據結構本身的實現方法,而應在介紹基本概念的基礎上,講解利用Qt的集合類解決問題的方法。Qt集合類與STL容器類很相似,包含向量、鏈表、棧、隊列等結構,是有力的開發工具。
2.2強化實驗和工程訓練
與純理論課程不同,任何一門程序設計課程都需要足夠的上機練習,Qt程序設計也不例外。為了達到更好的教學效果,可以將實踐環節分成3個層次:基礎實驗、項目重建和修改、課程大作業。基礎實驗是課程學習的基本內容,主要在課程本身的實驗學時內完成。這些實驗涉及信號/槽、窗體控件、對話框、窗體布局、事件系統、二維繪圖等方面的編程。Qt擁有功能強大的集成開發工具QtCreator,其可視化窗體構建能力不遜于微軟的VisualStudio開發工具。雖然不少基礎實驗都可以在QtCreator中以可視化操作的方式完成,但對于初學者,仍應堅持先學會用代碼實現,再用QtCreator工具實現,這樣學生對程序的理解更徹底。項目重建和修改是讓學生首先參考教師的樣例程序實現一個大致相同的項目,然后對其中的部分內容進行修改或擴充,實現一些新的功能。這類實驗由每個學生獨立完成,難度中等。實驗采用課堂講解、課后實現、實驗課答疑的模式完成。通過這些實驗,學生可以了解一個小型軟件設計、編碼、調試、完善的整個過程。課程大作業是以綜合訓練為主的實踐環節,一般3~4人一組,完成一個小型軟件項目。和項目重建實驗不同,大作業沒有教師提供的軟件原型。每個小組都要完成選題、方案設計、編碼實現、測試和改善的開發流程。選題類型由教師制訂,比如實驗模擬類、小型游戲類、算法演示類等。大作業的具體內容由學生在上述幾個選題類型中自行確定,一般在課程進展到一半時大作業題目就要確定。每個小組的人員及項目一旦確定并上報后,就不宜輕易改變。通過課程大作業的訓練,可以在很大程度上提升學生的軟件開發能力。
2.3改進課程考核方法
程序設計課程的考核方式一般是平時成績和期末考試的加權平均,其中期末考試一般都是上機考試。由于Qt程序設計課程教學環節的多樣性,建議為該課程設置多元化的考核方式,采用平時表現、期中考試、大作業考核、期末考試的綜合考核方式。平時表現包括出勤率、隨堂作業、基礎實驗和項目重建實驗的考查,這些考查主要用于督促學生的日常學習。期中考試采用閉卷形式的上機考試,以若干微型編程題目為主,題目可以是前半學期實驗和作業內容的改版。課程大作業以小組為單位完成,最后由組長通過PPT的形式向全體師生匯報。由學生網絡評分和教師評分綜合評出每個小組的得分,再由教師根據組員表現和每個組員背對背的貢獻率自評得出每個學生的大作業分數。學生評分過程可借助網絡系統快速完成。期末考試采用開卷形式的上機考試,題目為兩道綜合型的編程題,主要考查學生的綜合編程能力。總之,本課程的目標是使學生具備一定的圖形化編程以及算法設計的能力,所有考核環節都應體現這一目標。
3Qt程序設計課程的教學效果
在西安交大新一輪培養方案修訂過程中,機械學院部分專業要求修改可視化程序設計課程的教學內容。該課程原來是以VC++的MFC圖形化編程為主要教學內容。隨著微軟公司的技術重心轉向.NET,C#、VB.NET成為微軟公司主推的編程語言,MFC類庫的更新十分緩慢,且基于MFC的編程技術含有大量C語言的編程模式(比如宏定義等),編程難度較高。由于以上原因,非常有必要對該課程進行大刀闊斧的改革。經過認真調研,開課單位決定將Qt編程技術作為該課程的教學內容。經過3年實踐,取得了較好的教學效果,改革所帶來的教學質量提升總體上可歸納為以下3點。1)提高學生編寫程序的效率。與MFC不同,Qt是純粹的面向對象開發框架,學習和使用更加容易。例如編寫一個簡單的賽車游戲,涉及圖形、位圖、文字、算法以及事件方面的編程,一般情況下學生用MFC實現該游戲的時間接近兩個小時,而使用Qt實現只需要不到一小時。2)加強學生軟件模塊化設計及算法設計能力。從軟件的框架結構上看,Qt程序比MFC程序更清晰易懂,且Qt的信號/槽通信機制也較為簡單易用。從學生上機實驗的結果看,利用Qt編程,學生更容易寫出模塊結構合理、算法清晰的程序,編寫程序時產生的錯誤也更少。3)培養學生對于Qt編程技術的興趣。以前學習MFC編程時,很多學生對復雜難懂的MFC程序框架深感畏懼,而學習Qt編程的學生多數認為Qt程序并不是很難理解。同時,配合QSS腳本可以很容易作出類似360安全衛士、騰訊電腦管家那樣漂亮的圖形界面,感覺挺有成就感。本課程的配套教材《Qt圖形界面編程入門》由清華大學出版社出版之后,也得到了一些兄弟院校的關注,被選作對方院校相關課程的教材。
4結語
對于非計算機專業而言,很多學生希望能夠編寫小型的窗口界面程序解決學習工作中的一些問題,但如果僅僅學習了C/C++語言,這種愿望難以實現。根據實踐經驗,在非計算機專業開設Qt程序設計課程作為C/C++的后續課程,能夠較快提升學生的編程能力,滿足學生開發圖形化程序的愿望。在教學實踐中,以實驗為基礎、以項目為導向,實行多元化考核,可以取得良好的效果。
參考文獻:
[1]吳粉俠,李紅.多維互動式教學模式在Qt程序設計教學中的探索與實踐[J].決策探索,2017(11):55-56.
[2]王繼敏.基于項目分解與整合的Qt編程教學改革探索[J].河南科技學院學報,2013(12):111-113.
[3]許豪,胡吉興.《嵌入式GUI應用程序開發》教學改革實踐與探索[J].科技與創新,2014(21):131-133.
作者:仇國巍 趙英良 衛顏俊 桂小林 單位:西安交通大學電子與信息工程學院