韓磊 胡建鵬
摘 ?要: 針對高校選修C語言程序設計課程人數(shù)日益增多,初學者無法自主查找出程序中的Bug以修正,指導教師無暇幫助所有學生找出Bug等問題,設計和實現(xiàn)了基于Web版的C語言Bug信息采集與查詢反饋系統(tǒng)。信息采集系統(tǒng)對初學者在日常C語言編程中出現(xiàn)的Bug信息進行采集,然后對數(shù)據(jù)進行分析與清洗,并導入數(shù)據(jù)庫;查詢反饋系統(tǒng)對編譯器報錯信息進行檢索并給出錯誤類型與修改建議等。該系統(tǒng)的應用顯著降低了初學者編程報錯次數(shù),提升了編程能力。
關鍵詞: 程序設計; 信息采集; C 語言Bug; 查詢反饋
中圖分類號:TP312 ? ? ? ? ?文獻標志碼:A ? ? 文章編號:1006-8228(2019)10-61-04
Abstract: In view of the increasing number of students taking C language programming course in colleges and universities, beginners are unable to find bug in the program independently to correct it, and instructors have no time to help all students find bugs. A Web based C language bug information collection and query feedback system is designed and implemented. The information collection system collects the bug information appearing in beginners' daily C programming, then analyses and cleans the data, and imports it into the database. The query feedback system retrieves the error information given by compiler and gives the error types and modification suggestions. The application of the system significantly reduces the number of programming errors for beginners, and improves their programming ability.
Key words: programming; information collection; C programming bug; query feedback
0 引言
C語言是當今高校計算機專業(yè)最重要的專業(yè)基礎課之一,作為使用最為廣泛的面向過程的語言,高校許多計算機專業(yè)的課程,如數(shù)據(jù)結構、算法設計、操作系統(tǒng)、軟件工程等都是以C語言作為編程語言。因此,C語言程序設計這門課是眾多專業(yè)課程的前置課程,對其掌握的熟練與否,在很大程度上決定了學生專業(yè)素養(yǎng)的高低。
隨著社會不斷發(fā)展,國家教育的普及,高校教育也從精英教育模式轉變成大眾化教育,因而對于以應用型人才培養(yǎng)為辦學目標的眾多本科院校,如何在學生人數(shù)逐年增加、上機實驗課指導老師無暇回復所有學生編程問題的情況下提高教學質量,已成為了C語言程序設計課程迫在眉睫需解決的問題[1]。
中國的大學對于高級計算機語言的程序設計課程的教學多是培養(yǎng)目標學習程序設計的思想和方法,通過大量實踐編程練習,來掌握程序設計的流程與技巧;同樣,也只有通過大量的練習才能了解和避免程序中常出現(xiàn)的Bug[2]。許多初學者對開發(fā)環(huán)境陌生,不懂編譯器提示的錯誤信息進而發(fā)現(xiàn)、糾正錯誤。在許多大學缺乏功能完善的在線Bug查詢輔助系統(tǒng),多是由程序設計指導教師幫助初學者查找程序中的Bug,費時費力還無法兼顧到所有學生。因此,需要一套有效的C語言錯誤信息采集、數(shù)據(jù)分析及Bug信息反饋的系統(tǒng)來輔助學生的程序設計課程學習。
1 C語言Bug信息在線采集系統(tǒng)
筆者所在高校對C語言程序設計這門課程的教學進行了有益的探索[3]。本著實踐出真知的原則,設計了一個C語言Bug信息在線采集系統(tǒng),旨在采集大量初學者易犯的錯誤數(shù)據(jù)信息加以分析。在每學期的C語言程序設計課程中,每位學生在每次課上需要完成三道編程題和一道思考改錯題。
基于Web版的C語言Bug信息采集系統(tǒng)需要學生填寫在完成代碼編寫進行編譯時的錯誤信息,包含以下信息:姓名、學號、編譯器(VC++、Dev-C++和VS2008等)、題目編號(如P23-2,表示23頁第2題)、錯誤編號、整段錯誤代碼、錯誤語句行號(編譯器提供)、錯誤語句、報錯信息(編譯器提供)、錯誤類型(語法、邏輯、運行)、錯誤分析(學生自我分析)、修改措施、修改后語句。
在教學周期方面,上海工程技術大學的專業(yè)必修課“C語言程序設計”每學期有18周共36學時的教學周期,理論課程要求學生能夠掌握結構化程序設計的一般方法,養(yǎng)成嚴謹?shù)某绦蛟O計及邏輯思維方式;而程序設計課程的課時一般不少于16課時,每個課時90分鐘,要求學生掌握C語言語法規(guī)范,培養(yǎng)靈活思維和解決實際問題的能力。學生在完成隨堂測驗后,將他們在編程中出現(xiàn)并解決的Bug信息導入采集系統(tǒng),其中有編譯器報錯信息、錯誤類型、錯誤分析以及修改措施等,要培養(yǎng)學生規(guī)范填寫以方便后期對數(shù)據(jù)分析處理。
系統(tǒng)主要包括學生用戶管理、問卷管理、數(shù)據(jù)統(tǒng)計分析三大功能模塊。用戶管理包括學生信息導入、學生賬戶維護以及學生學號班級信息驗證等功能。問卷管理包括問卷問題修改維護、問卷時間戳設定等功能。數(shù)據(jù)統(tǒng)計分析主要將采集的數(shù)據(jù)導入數(shù)據(jù)庫中并實現(xiàn)以圖表形式呈現(xiàn)定量與定性的分析結果。系統(tǒng)設三種角色:管理員、指導老師與學生用戶。其中的管理員權限包括有初始化數(shù)據(jù)庫、配置系統(tǒng)、導入學生數(shù)據(jù)、修改需采集的問題與格式、統(tǒng)計與分析所采集的問題等;指導教師具有修改學生信息、修改需采集的問題與格式、查詢分析統(tǒng)計結果等權限;學生則驗證身份、修改登錄密碼及完成錯誤信息的采集。
信息采集系統(tǒng)流程大致為,在實驗機房的教師主機上配置服務器,學生通過局域網(wǎng)訪問采集信息的主頁。以學生姓名和學號為登錄用戶名和登錄密碼,整個問卷的問題設置為必填選項,其中的編譯器、錯誤類型則設置下拉選擇菜單,其余信息則為學生自主填寫,每一個問題旁邊設置提示信息如問題“錯誤代碼”提示“僅填錯誤語句的代碼不是全部代碼”避免信息的重復。一個學生一學期的所有C語言錯誤數(shù)據(jù)信息作為一個單元存入數(shù)據(jù)庫。系統(tǒng)采集的數(shù)據(jù)以*xlsx格式存儲便于后期處理。
2 bug信息分析處理
將采集的17、18級兩屆學生的程序設計錯誤信息在初步數(shù)據(jù)處理后,繪制語法、邏輯、運行三種錯誤的百分比餅狀圖,如圖1所示,可以直觀的發(fā)現(xiàn),語法錯誤所占比例最高,邏輯錯誤其次,至于一般程序不具有“健壯性”才會出現(xiàn)的運行錯誤則占最小的比例。初學者在學習C語言這一門程序設計類語言時,大多會犯單詞拼寫錯誤、中文字符下輸入等低級語法錯誤,這是語法錯誤比例最大的原因,而邏輯錯誤則是學生前期沒有養(yǎng)成良好的邏輯思維造成的,至于運行錯誤多是初學者不熟悉編譯器的使用造成。
本著以實際數(shù)據(jù)揭示教學工作中不足的原則,將歸類的語法錯誤、邏輯錯誤、運行錯誤再次深入分析,挖掘其深層次信息,細化各編程報錯信息,以便在后續(xù)教學工作中加以改進。同時,細化分析各類型的錯誤能將同一類型的報錯信息中的關鍵詞提取分析方便后期的查詢反饋系統(tǒng)設計。
圖2是將所采集的學生錯誤信息深入分類處理后得到的初學者易犯錯誤類型及其占比情況。從中可以直觀的了解初學編程語言學生常犯的錯誤及比例,便于指導老師針對性的改進授課。同樣,利用其數(shù)據(jù)統(tǒng)計分析系統(tǒng)將數(shù)據(jù)可視化呈現(xiàn),依據(jù)C語言Bug采集系統(tǒng)的時間戳來處理歸類數(shù)據(jù),在同一段時間對比三種類型的錯誤比例變化發(fā)現(xiàn),在“C語言程序設計”開課之初學生的語法錯誤比例明顯高于邏輯與運行錯誤;而到了課程的中后期,隨著指導老師針對編程中出現(xiàn)的常見錯誤則語法錯誤進行糾正,語法錯誤比例下降,邏輯錯誤比例上升。這就可以幫助教學導師在往后的不同教學階段中加以改進教學方案。
3 Web版查詢與反饋系統(tǒng)設計
3.1 數(shù)據(jù)庫設計
在采集了兩屆學生的C語言Bug信息并處理后,為解決上機實驗課程指導老師人手不夠、初學者大多會犯的同樣的錯誤等問題設計了基于WEB版的C語言Bug信息查詢與反饋系統(tǒng)。與C語言Bug信息采集系統(tǒng)一樣,系統(tǒng)設置允許管理員與指導教師采用*.xls和*.xlsx格式導入學生數(shù)據(jù)信息,以學生的學號為用戶名和初始密碼,給學生修改登錄密碼的權限[4]。
因為查詢與反饋系統(tǒng)旨在幫助初學者明白bug的錯誤類型以及分析錯誤原因提示修改建議,因此采集系統(tǒng)所采集的數(shù)據(jù)中有些不需要進行再次分析,因此需要重新建立一個查詢與反饋信息的數(shù)據(jù)庫。將采集與處理后的“錯誤語句”、“報錯信息(編譯器提供)”、“錯誤類型(語法、邏輯、運行)”、“錯誤分析(學生自我分析)”、“修改措施”及“修改后語句”導入查詢反饋系統(tǒng)數(shù)據(jù)庫中。由于初學者在前期不了解C語言bug信息采集系統(tǒng)的使用因此會不可避免出現(xiàn)錯誤,所以需要對以上數(shù)據(jù)進行二次清洗。
3.2 查詢與反饋系統(tǒng)設計
在數(shù)據(jù)二次清洗以及導入數(shù)據(jù)庫之后,開始設計C語言Bug信息的查詢與反饋系統(tǒng)。設計之初考慮到初學者便于上手使用,設計成類似于“百度”“谷歌”等搜索引擎形式,同時在頁面顯示提示信息,指導學生操作。其工作原理是基于分類目錄(Directory)即通過之前人工采集的Bug信息形成數(shù)據(jù)庫進行搜索[5]。依據(jù)之前對Bug信息的歸類處理,對提取的“編譯器報錯信息”中的字組頻度進行統(tǒng)計,抽出高頻出現(xiàn)的詞組作為搜索關鍵字。對于關鍵詞搜索還使用熱點優(yōu)先策略,比如編譯器報錯提示信息: [Error] expected ';' before 'else'這種占比極大、熱點關鍵詞進行優(yōu)先抓取策略,而不需要經(jīng)過去重與過濾處理。在抓取信息時,采用廣度優(yōu)先策略便于顯示更多信息,為初學者提供多種解決方案。圖3為分類目錄檢索系統(tǒng)的結構示意圖。
3.3 應用實例
在設計理念和開發(fā)方法明確之后,通過各種UI對比后,C語言Bug信息查詢與反饋系統(tǒng)的首頁最終如圖4所示,其使用流程大致為:學生可以通過直接搜索編譯器提供的報錯信息以檢索出該錯誤的類型、錯誤原因分析以及錯誤修改措施;同樣學生也可以通過編譯器報錯信息中的關鍵字檢索,這樣通過廣泛索引,反饋系統(tǒng)會提供大量同類型信息。圖5是根據(jù)編譯器提供的報錯信息“expected ';' before ')'”進行查詢Bug信息的反饋的示例。
4 結束語
C語言程序設計的教學正朝著多元化、現(xiàn)代化、信息可視化的方向發(fā)展[6]。本文設計了一套C語言Bug信息采集與查詢反饋系統(tǒng),以提高“C語言程序設計”課程的教學成效。自2017年以來,上海工程技術大學電子電氣工程學院對修習“C語言程序設計”課程的學生投入使用該系統(tǒng),學生在編程課上的提問次數(shù)顯著下降,同時,編程能力較往屆均有了較大提升。由于前期信息采集數(shù)量較少,且信息格式相對不夠規(guī)范,因此在未來的工作中,將不斷完善C語言Bug信息數(shù)據(jù)庫,同時不斷優(yōu)化Bug信息的查詢與反饋系統(tǒng),做到更加精確化、便捷化。
參考文獻(References):
[1] 龔文勝.關于新形勢下的C語言有效教學模式探究[J].科學大眾(科學教育),2019.2:162.
[2] 李霞.基于專業(yè)應用的C語言程序設計課程教學研究[J].計算機時代,2019.2:95-97
[3] 傘宏力.電子信息工程專業(yè)C語言程序設計課程教學改革建議[J].教育教學論壇,2019.4:136-137
[4] 洪曉彬.數(shù)據(jù)庫在分布式應用軟件中的應用與設計研究[J].無線互聯(lián)科技,2019.3:53-54
[5] 帥應,羅文琪,熊麗珍,舒忠.一種改進的垂直搜索引擎研究與設計[J].現(xiàn)代計算機(專業(yè)版),2018.34:90-95,100
[6] 李延軍,李明,馬金剛,王曉燕,何雪英.混合學習模式在C語言程序設計移動課堂中的應用研究[J].計算機教育,2018. 1:71-74